Cours Python
Cours Python
Cours Python
Initiation en Python
Plan :
Introduction
Les variables et principaux types de données
Contrôle du flux d'exécution
Instructions répétitives
Fonctions prédéfinies
Fonctions originales
Utilisation de fenêtres et de graphismes
Manipuler des fichiers
Les structures de données
Professeur : A.Mansouri 1
ENSET Mohammedia Année universitaire : 2022/2021
I- Introduction:
Python est un langage de programmation créé par Guido Van Rossum en 1991.
Ce langage de programmation est relativement simple, et présente de nombreuses
caractéristiques intéressantes :
Multiplateforme, Langage Open Source,
Disponibilité de bibliothèques
Langage de haut niveau, interprété.
Orienté objet et très utilisé en analyse de données.
1-Définition:
Une variable est une chaîne de caractères (un mot) qui doit commencer par une lettre,
sans espaces, en évitant les accents et caractères spéciaux.
En Python il n’est pas nécessaire de déclarer les variables ni leurs types avant de pouvoir
leur affecter une valeur (typage dynamique). Pour connaître le type d’une donnée ou le
type de la valeur d’une variable, il suffit d’utiliser la fonction type().
Le type int (entier): utilisé pour stocker un entier.
Le type float (flottant): utilisé pour stocker des nombres à virgule flottante.
Le type str (chaîne de caractères): nous pouvons créer simplement en joignant
caractères entre guillemets ou apostrophes.
Professeur : A.Mansouri 2
ENSET Mohammedia Année universitaire : 2022/2021
Le type complex : la partie imaginaire est indiquée grâce à la lettre « j » ou « J ».
Le type bool (booléen) : prendre les valeurs True ou False.
Le type list (liste) : on peut définir une liste comme une collection d’éléments séparés par
des virgules, l’ensemble étant enfermé dans des crochets.
2-Exemple:
3-Remarques:
- Majuscules et minuscules sont différentes dans python.
- Il ne faut surtout pas utiliser de nom de fonctions python comme noms de variables.
Les mots réservés de Python
Quelques opérateurs :
Opérateur Description Opérateur Description
+ Concatenation - Addition == Vérifie si égale
- Soustraction != Vérifie si différent
* Repetition - Multiplication > Supérieur
/ Division < Inférieur
% Modulo >= Supérieur ou égale
** Exposent <= Inférieur ou égale
// Division entière += c += a → c=c+a
= affectation -= c -= a → c=c-a
== Vérifie si égale *= c *= a → c=c*a
!= Vérifie si différent /= c /= a → c=c/a
and Conjonction %= c %= a → c=c%a
or Disjonction **= c **= a → c = c ** a
not Négation //= c //= a → c = c // a
Professeur : A.Mansouri 3
ENSET Mohammedia Année universitaire : 2022/2021
Quelques règles:
Les variables globales:
- Définies avant d'appeler une fonction, sont lisibles lors de l'exécution de la fonction.
- Elles ne peuvent être modifiées qu'en agissant sur l'objet par un mot-clé ou par une
méthode.
Les variables locales :
- Définies dans une fonction, sont supprimées après l'exécution de la fonction.
On peut transformer des variables locales en variables globales (à l'aide de global) pour les
modifier lors de l'exécution d'une fonction (cf. exemples sur les fonctions).
III- Entrée-Sortie:
Pour inviter l'utilisateur à entrer des caractères en utilise la fonction input ().
Professeur : A.Mansouri 4
ENSET Mohammedia Année universitaire : 2022/2021
1-L’indentation :
Les fonctions Python n’ont pas de begin ou end explicites, ni d’accolades qui pourraient
marquer là où commence et où se termine le code de la fonction. Le seul délimiteur est les
deux points ( : ) et l’indentation du code lui-même.
La syntaxe:
if Condition_1 :
opérations à effectuer si Condition_1 vaut True
opérations à effectuer si Condition_1 vaut True
elif Condition_2 : # Optionnel
opérations à effectuer si Condition_2 vaut True
opérations à effectuer si Condition_2 vaut True
else : # Optionnel
opérations à effectuer si ni Condition_1, ni Condition_2 ne sont
vérifiées
opérations à effectuer si ni Condition_1, ni Condition_2 ne sont
vérifiées
# Suite du programme
2-Remarques
- Ceci n’est pas une boucle, elle est exécutée puis le programme continue.
- Dès qu’une condition est vérifiée, les opérations associées sont exécutées et on sort du
bloc.
3-Exemples :
4-Applications :
1- Écrivez un programme pour trouver un maximum entre trois nombres.
2- Écrivez un programme pour vérifier si un nombre est pair ou impair.
3- Ecrire un programme qui demande la saisit de la température d’une eau, puis affiche
son état.
Soit T, la température d’une eau, Alors son état est :
• Si T ≤ 0 : C’est de la glace
• Si 0 < T ≤ 25 : C’est confortable
• Si 25 < T ≤ 100 : C’est chaud
Professeur : A.Mansouri 5
ENSET Mohammedia Année universitaire : 2022/2021
• Sinon (t > 100) : C’est de la vapeur
4- Saisissez un flottant. S’il est positif ou nul, affichez sa racine, sinon affichez un message
d’erreur.
V- Instructions répétitives :
1-Boucles for:
Le principe est de réaliser une ou plusieurs opérations pour une variable allant d’une
valeur à une autre, le nombre d’itérations est connu d’avance.
La syntaxe :
for i in range(n):
opérations à effectuer
opérations à effectuer i varie du 0 à n-1
opérations à effectuer Il y a n étapes
opérations à effectuer
opérations à effectuer
1-1 Exemples :
1-2 Remarques :
Les valeurs de i sont imposées par le for et augmentent toutes seules. Inutile donc de
l’initialiser avant la boucle, elle sera remplacée :
1-3 Applications :
1-Réaliser un programme qui affiche la table de multiplication de 1 à 12.
2- proposer un programme qui calcule le factoriel du nombre saisi par l’utilisateur. -
3- La suite de Fibonacci est une suite de nombres entiers de 0, 1, 1, 2, 3, 5, 8 ….
Les deux premiers termes sont 0 et 1. Tous les autres termes sont obtenus en ajoutant les
deux termes précédents.
Proposer un programme qui donne les termes selon la valeur introduite par
l’utilisateur.
Professeur : A.Mansouri 6
ENSET Mohammedia Année universitaire : 2022/2021
4- Que font les programmes ci-dessous :
2- Boucle while :
En général, si on connaît avant de démarrer la boucle le nombre d’itérations à exécuter, on
choisit une boucle for. Le while est utilisé lorsque l’on ne connait pas à priori le nombre
d’itérations à effectuer (simulation numérique jusqu’à une valeur d’un paramètre, recherche
dans une liste jusqu’à obtenir l’élément voulu etc).
La syntaxe :
Initialisation de la condition
while Condition :
opérations à effectuer
opérations à effectuer
opérations à effectuer
opérations à effectuer
opérations à effectuer
Modification de la condition
# Suite du programme
2-1 Remarques :
• La variable évaluée dans la condition doit exister au préalable.
• Si la condition est fausse au départ, le corps de la boucle n’est jamais exécuté.
• Si la condition reste toujours vraie, alors le corps de la boucle est répète indéfiniment.
2-2 Exemples :
1- Quel est le résultat attendu après l'exécution de chaque programme:
1 2 3
i=1 i = -2 n = int(input())
while i <= 10: while i <= 10: length = 0
print(i ** 2) print(i) while n != 0:
i += 1 i += 1 length += 1
else: n //= 10
print('Fin de la boucle, i =', i) print('Length is', length)
2-3 Applications :
1- Ecrire un programme qui permet de calculer la moyenne de notes fournies au clavier
(Le nombre des notes n’est pas connu):
VI- Les fonctions:
1. Les fonctions prédéfinies :
Professeur : A.Mansouri 7
ENSET Mohammedia Année universitaire : 2022/2021
Liste des fonctions prédéfinies Python 3.7
abs() delattr() hash() memoryview( set() round() locals()
all() dict() help() min()
) setattr() max() getattr()
any() dir() hex() next() slice() hasattr() classmethod()
ascii() divmod() id() object() sorted() complex() repr()
bin() enumerat input() oct() staticmethod( import() vars()
bool() eval()
e() int() open() str()
) reversed() range()
breakpoint() exec() isinstance() ord() sum() map() list()
bytearray() filter() issubclass() pow() super() globals() frozenset()
bytes() float() iter() print() tuple() compile() chr()
callable() format() len() property() type() zip()
Pour avoir plus de détails sur une fonction il suffit de taper help (fonction) exemple :
soit des fonctions ayant été écrites par d'autres programmeurs et mises à disposition
en important le module qui les contient, comme la fonction sqrt du module math, par
exemple.
Pour importer un module de fonctions :
Importer le contenu d’un Importer une partie d’un Importer tout un module
module module
Professeur : A.Mansouri 8
ENSET Mohammedia Année universitaire : 2022/2021
Module mathématique : math et cmath
Le module math contient les fonctions mathématiques permettant d'effectuer les calculs
scientifiques de base, et le module cmath reprend la plupart des fonctions du module math
pour les nombres complexes:
pi, e, log, log10, exp, sqrt, cos(), sin(), tan(), acos(), asin(), atan(), cosh(), sinh(), tanh(),
acosh(), asinh(), atanh().
Professeur : A.Mansouri 9
ENSET Mohammedia Année universitaire : 2022/2021
2.2 Applications :
1- Proposer une fonction qui retourne les éléments de la suite de Fibonacci.
2- Proposer une fonction qui calcule et retourne le volume d’une sphère.
3- Proposer une fonction qui nous donne les solutions d’une équation 2nd ordre.
VII- Utilisation de fenêtres et de graphismes :
Pour tracer des courbes sous Python on a besoin d’avoir deux listes, l’une pour les
abscisses, l’autre pour les ordonnées.
Pour tracer des courbes, il est nécessaire d’importer la librairie associée en écrivant :
import matplotlib.pyplot as plt
1. Exemples :
1er méthode :
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.0, 8.0,200)
y1 = 1-np.cos(2 * np.pi * x) * np.exp(-x)
y2 = 1-np.exp(-x)
y3=y1-y2
plt.subplot(2,1,1)
plt.plot(x, y1, 'r',x,y2)
plt.ylabel('system 1er ordre et 2nd ordre')
plt.title('Exemple pour subplots')
plt.subplot(2,1,2)
plt.plot(x, y3, '--y')
plt.xlabel('time (s)')
plt.ylabel('Error')
plt.show()
2nd méthode orienté objet :
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.0, 8.0,200)
y1 = 1-np.cos(2 * np.pi * x) * np.exp(-x)
y2 = 1-np.exp(-x)
y3=y1-y2
fig, (ax1, ax2) = plt.subplots(2, 1)
fig.suptitle('Exemple pour subplots')
ax1.plot(x, y1, 'r',x,y2)
ax1.set_ylabel('system 1er ordre et 2nd ordre')
ax2.plot(x, y3, '--y')
ax2.set_xlabel('time (s)')
ax2.set_ylabel('Error')
plt.show()
Professeur : A.Mansouri 10
ENSET Mohammedia Année universitaire : 2022/2021
2. Les options :
Il existe une multitude d’options permettant de changer les couleurs, styles de traits,
épaisseurs, titres des graphiques, titres des axes etc… Voyons ici les plus importants.
Lors de la création du plot, on peut préciser :
plt.plot(X, Y, linewidth=2.0) règle l’épaisseur du trait
plt.plot(X, Y, 'ro') Crée un nuage de points
plt.plot(X, Y, '--') trait en pointillés
couleur associée à la courbe
plt.plot(X,Y,'r') b: blue - g: green - r: red - c: cyan - m: magenta - y: yellow - k: black -
w: white
plt.plot(X,Y,label="Texte") Ajout d’une légende
plt.legend()
plt.plot(X, Y, '--r') Pointillés rouges
plt.xlim(,) intervalle des abscisses
plt.ylim(,) intervalle des ordonnées
plt.axis([, , , ]) Définit l’intervalle de la figure
plt.grid(True) Affiche la grille
plt.title('Texte') Définit un titre
plt.xlabel('Texte') nom des données en abscisses
plt.ylabel('Texte') nom des données en ordonnée
plt.show() Affiche le graphique
plt.close() Ferme la figure
plt.close('all') Ferme toutes les figures
Vide la dernière figure créée/appelée/ouverte sans la fermer
plt.clf() (lors d’une simulation, il est beaucoup plus rapide de vider que de
fermer/ouvrir)
plt.pause(n) Permet d’attendre par exemple n secondes avant de continuer
Enregistrement dans le répertoire courant des figures au format
plt.savefig('Nom')
standard
3.Applications :
1-Représenter sur 6 graphes dans une figure subdivisée en 6, les fonctions cosx, sinx,
sincx, coscx, exp(x), ln(x), pour chaque figure ajouter les informations utiles.
2- Pour les mêmes fonctions et sur la même figure cette fois ci, proposer une méthode pour
la représentation.
4. le package Numpy :
Numpy est la librairie qui offre la pièce fondamentale pour faire du calcul scientifique avec
Python.
Elle étend les capacités de Python pour travailler sur des tableaux et matrices
à n dimensions de façon bien plus optimisée et offre des fonctions mathématiques de haut
niveau sur ces objets.
Pour importer ce package il suffit de taper le code suivant :
import numpy as np
Les tableaux peuvent être créés avec numpy.array(). On utilise des crochets pour délimiter
les listes d’éléments dans les tableaux.
Professeur : A.Mansouri 11
ENSET Mohammedia Année universitaire : 2022/2021
4.1 Quelques constructeurs Numpy :
np.zeros(shape)
np.ones(shape)
La fonction numpy.arange()
La fonction numpy.linspace() :
np.random.randint(low, high=None,
size=None, dtype='l')
a) Indexing et Slicing:
Professeur : A.Mansouri 12
ENSET Mohammedia Année universitaire : 2022/2021
Lorsque la valeur est positive, on indexe depuis le début du ndarray, lorsqu’elle est
négative, depuis la fin.
Pour un ndarray à multiple dimensions, on sépare chaque index (ou slice) avec une ,
Pour faire du slicing, on va donner 2 ou 3 valeurs, séparées d’un :. Cela sera [start:end] ou
[start:end:step]
start : position de départ (commence par 0 depuis la gauche, et par -1 depuis la droite)
end : position de fin (non-inclue)
step : pas sur l’index (peut être négatif pour aller de droite à gauche)
Cas particulier, on peut demander la totalité avec le simple caractère :
Applications :
4. le
5. Le package control :
La librairie contrôle de Python (python-control) est un package Python qui implémente des
opérations de base pour l'analyse et la conception et le contrôle des systèmes
automatique.
Professeur : A.Mansouri 13
ENSET Mohammedia Année universitaire : 2022/2021
Frequency domain plotting
bode(syslist[, omega, dB, Hz, deg, Plot]) Bode plot for a system
bode_plot(syslist[, omega, dB, Hz, deg, Plot]) Bode plot for a system
series(sys1, sys2) Return the series connection sys2 * sys1 for –> sys1 –> sys2 –>.
margin(*args) Calculate gain and phase margins and associated crossover frequencies
Exemple:
import numpy as np
import matplotlib.pyplot as plt
import control
G = control.tf([1,2],[3,5,1])
print(G)
mag,phase,omega = control.bode(G)
Professeur : A.Mansouri 14
ENSET Mohammedia Année universitaire : 2022/2021
6. Le package scipy :
1. Exemple échantillonnage :
import numpy as np
import matplotlib.pyplot as plt
f=1
globals()
def signal(t):
return np.sin(2 * np.pi * f*t )
D = 3/f
fe = 8*f
N = int(D * fe) + 1
te = np.linspace(0, (N-1)/fe, N)
t = np.linspace(0, D, 1000)
plt.plot(t, signal(t), 'b', label = "Signal reel")
plt.plot(te, signal(te), 'or--', label = "Signal echantillonne")
plt.grid()
plt.xlabel("Temps")
plt.ylabel("Amplitude x(t)")
plt.legend()
plt.show()
Repliement de spectre
Autre méthode :
Professeur : A.Mansouri 16
ENSET Mohammedia Année universitaire : 2022/2021
Filtrage par application de la méthode booléen indexing;
7. Le package opencv :
cv2.imread(/path/to/image, flag)
cv2.IMREAD_COLOR image en couleurs RGB .
cv2.IMREAD_GRAYSCALE grey image.
cv2.IMREAD_UNCHANGED image d‘origine
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('D:/image.jpg')
img1 = cv2.imread('D:/image.jpg',
cv2.IMREAD_GRAYSCALE)
cv2.imshow('image en couleur',img)
cv2.waitKey(0)
Professeur : A.Mansouri 17
ENSET Mohammedia Année universitaire : 2022/2021
cv2.destroyAllWindows()
Professeur : A.Mansouri 18
ENSET Mohammedia Année universitaire : 2022/2021
On peut initialiser le dictionnaire en le créant :
num = {'Lina':'065895','Said':'0783','Mourad':'02154'}
print(num)
print(type(num))
{'Lina': '065895', 'Said': '0783', 'Mourad': '02154'}
<class 'dict'>
Les clés du dictionnaire sont des chaines de caractères (prénoms) et les valeurs
correspondant aux numéros.
print(num['Lina'])
065895
Professeur : A.Mansouri 19