Cours python-IWA
Cours python-IWA
Introduction Python
A.BEN-HDECH 2
Introduction
Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans
l’imposer) une approche modulaire et orientée objet de la programmation.
A.BEN-HDECH 3
Introduction
Historique
1991: Guido van Rossum travaille aux Pays-Bas sur le projet AMOEBA, un système
d’exploitation distribué. Il conçoit Python à partir du langage ABC et publie la version
0.9.0 sur un forum Usenet
1996 : sortie de Numerical Python, ancêtre de numpy
2001: naissance de la PSF (Python Software Fundation)
Les versions se succèdent… Un grand choix de modules est disponible, des colloques
annuels sont organisés, Python est enseigné dans plusieurs universités et est utilisé en
entreprise…
2006 : première sortie de IPython
Fin 2008: sorties simultanées de Python 2.6 et de Python 2.3
Dernières versions: 2.7.17 (la plus stable) et 3.8.1
A.BEN-HDECH 4
Introduction
A.BEN-HDECH 5
Introduction
Simplicité du langage :
Syntaxe claire et cohérente
Indentation significative
Gestion automatique de la mémoire (garbage collector)
Typage dynamique fort : pas de déclaration
A.BEN-HDECH 6
Introduction
Orientation objet
Modèle objet puissant mais pas obligatoire
Structuration multifichier aisée des applications : facilite les modifications et les extensions
Les classes, les fonctions et les méthodes sont des objets dits de première classe. Ces objets sont
traités comme tous les autres (on peut les affecter, les passer en paramètre)
Ouverture au monde
Interfaçable avec C/C++/FORTRAN
Langage de script de plusieurs applications importantes
Excellente portabilité
Disponibilité de bibliothèques
Plusieurs milliers de packages sont disponibles dans tous les domaines
A.BEN-HDECH 7
Introduction
Environnement de développement
Linux:
Souvent préinstallé. Pour le vérifier taper la commande «python» dans un terminal
Sinon, installer le package de la distribution
Windows:
Utiliser un assistant d’installation à télécharger à partir du site officiel « www.python.org »
Mac OS:
Préinstallé mais en version incomplète; télécharger et installer la version complète à partir du site
www.python.org
A.BEN-HDECH 8
Introduction
Environnement de développement
Linux:
Souvent préinstallé. Pour le vérifier taper la commande «python» dans un terminal
Sinon, installer le package de la distribution
Windows:
Utiliser un assistant d’installation à télécharger à partir du site officiel « www.python.org »
Mac OS:
Préinstallé mais en version incomplète; télécharger et installer la version complète à partir du site
www.python.org
Editeurs Python:
IDLE: installé par défaut
Spyder
pyCharm
Eric3
PyDev
A.BEN-HDECH 9
Introduction
A.BEN-HDECH 10
Identificateurs et mots clés
Identificateurs
Définition :
Un identificateur Python est une suite non vide de caractères, de longueur quelconque,
formée d’un caractère de début et de zéro ou plusieurs caractères de continuation.
Sachant que :
le caractère de début peut être n’importe quelle lettre Unicode , y compris le caractère souligné (_) ;
un caractère de continuation est un caractère de début ou un chiffre.
Remarques :
Les identificateurs sont sensibles à la casse et ne doivent pas être un mot réservé de
Python 3
A.BEN-HDECH 11
Identificateurs et mots clés
A.BEN-HDECH 12
Variables
Définition
Une variable est une zone de la mémoire de l’ordinateur dans laquelle une valeur est
stockée. Cette variable est définie par un identifictauer, alors que pour l’ordinateur, il
s’agit en fait d’une adresse, c’est-à-dire d’une zone particulière de la mémoire.
Le nom de la variable ne peut pas commencer par un chiffre.
Affectation: avec «=»
Le langage Python est sensible à la casse, ce qui signifie que des lettres majuscules et
minuscules ne constituent pas la même variable.
la déclaration d’une variable et son initialisation (c’est-à-dire la première valeur que l’on
va stocker dedans) se font en même temps.
A.BEN-HDECH 13
Variables
La déclaration d'une variable ne suffit pas à la créer. Après avoir choisi son nom, il est
nécessaire de lui affecter une valeur initiale.
Exemple
monChiffre=7
petitePhrase= " Bonjour les étudiants de IWA"
pi=3 .14159
A.BEN-HDECH 14
Operateurs
Affectation
On affecte une variable par une valeur en utilisant le signe = . Dans une affectation, le
membre de gauche reçoit le membre de droite ce qui nécessite d’évaluer la valeur
correspondant au membre de droite avant de l’affecter au membre de gauche
A.BEN-HDECH 15
Operateurs
Opérateurs de comparaison
== égal x==y
!= différent x !=y
A.BEN-HDECH 16
Operateurs
Opérateurs arithmétiques
Les opérateurs arithmétiques sont utilisés avec des valeurs numériques pour effectuer
des opérations mathématiques courantes:
Operateur Description Exemple
+ Addition x+y
- Soustraction x-y
* Multiplication x*y
/ Division x/y
% Modulo x%y
** Puissance x**y
// Division entière x // y
A.BEN-HDECH 17
Operateurs
Opérateurs logiques
Les opérateurs logiques sont utilisés pour combiner des instructions conditionnelles:
A.BEN-HDECH 18
Operations sur les variables
L'instruction d'affectation réalise donc la création et la mémorisation de la variable, l'attribution d'un type
à la variable, la création et la mémorisation d'une valeur et finalement l'établissement d'un lien entre le
Exemple
maVariable = 5
maVariable = 2. 567
Notons au passage que le type de maVariable a changé : il est passé de int à float. Cette spécificité est une
facilité essentielle de plus permise par le langage Python. À la différence d'autres langages de
programmation plus contraignants, Python est dit typé dynamiquement et non statiquement.
A.BEN-HDECH 19
Operations sur les variables
Copie de variables
Nous pouvons également prendre le contenu de maVariable et le copier dans taVariable par la simple
instruction :
Syntaxe
taVariable=maVariable
Exemple
>>> maVariable=7
>>> taVariable=maVariable
>>> taVariable
7
A.BEN-HDECH 20
Operations sur les variables
Copie de variables
Nous pouvons également prendre le contenu de maVariable et le copier dans taVariable par la simple
instruction :
Syntaxe
taVariable=maVariable
Exemple
>>> maVariable=7
>>> taVariable=maVariable
>>> taVariable
7
A.BEN-HDECH 21
Operations sur les variables
A.BEN-HDECH 22
Type de données simple
A.BEN-HDECH 23
Type de données simple
Le code suivant illustre des opérations réalisées dans la console interactive de Python,
sur des variables de type entier (int).
>>> maVariable = 3
>>> print maVariable
3
>>> type(maVariable)
<type 'int ' >
»> taVariable=4
>>> maVariable=taVariable
>>> print maVariable
4
>>> maVariable = saVariable
#Une erreur apparaît car saVariable n'existe pas
Traceback (most recent call last):
File "<input>", line 1, in <module>
maVari able = saVariable
NameError : name 'saVariable' is not defined
A.BEN-HDECH 24
Type de données simple
A.BEN-HDECH 25
Type de données simple
>>> taVariable=3.0
>>> maVariable=taVariable/2 f)
»> maVariable
1. 5
>>> type(maVariable)
<type 'fl oat '>
>>> print (maVariable)
1. 5
>>> print (mavariable)
Traceback (most recent call last) :
File "<input>", line 1, in <module>
print mavariable
NameError : name 'mavariable' is not defined
A.BEN-HDECH 26
Type de données simple
A.BEN-HDECH 27
Type de données simple
le code suivant illustre des exemples concernant des variables de type string (des
chaînes de caractères).
>>> taVariable=3.0
>>> phrasel="le framework"
>>> phrase2=" Django"
>>> phrasel+=phrase2
»> phrasel
'le framework Django'
>>> phrase2*=3
»> phrase2
' Django Django Django'
>>> print phrase2[1] #On saute le caractère blanc du début de ligne
D
>>> phrase2 += 5
Traceback (most recent call last) :
File "<pyshel1#49>", li ne 1, in <module>
phrase2 += 5
TypeError : cannot concatenate 'str' and 'int' objects
»> phrase2="phrasel" 0
»> phrase2
'phrasel
A.BEN-HDECH 28
Type de données simple
Sous chaines
S[i:j] donne la sous-chaine composée des caractères aux positions i, i+1, …, j-1
S[j:] donne la sous-chaine composée des caractères aux positions j, j+1, …, n-1
A.BEN-HDECH 29
Type de données simple
Opérations
— Longueur :
>>> s = ”abcde”
>>> len(s)
5
— Concaténation :
>>> s1 = ”abc”
>>> s2 = ”defg”
>>> s3 = s1 + s2
>>> s3
’abcdefg’
— Répétition :
>>> s4 = ”Fi! ”
>>> s5 = s4 * 3
>>> s5
’Fi! Fi! Fi!
A.BEN-HDECH 30
Type de données simple
A.BEN-HDECH 31
Type de données simple
a=8.58
b=2
print "{:.2f} + {} = {:.1f} " .format(a, b, a+b) # 8.58 + 2 = 10.6
A.BEN-HDECH 32
Type de données simple
Conversion de types
On est souvent amené à convertir les types, c’est-à-dire passer d’un type numérique à
une chaîne de caractères ou vice-versa. Cette conversion est plus simple avec les
fonctions int(), float() et str():
>>> i = 3
>>> str (i)
'3'
>>> i = '456 '
>>> int (i)
456
>>> float (i)
456.0
>>> i = '3.1416 '
>>> float (i)
3.1416
N.B Contrairement à d'autres langages, Python ne fait pas de différence entre les
apostrophes simples et les doubles
A.BEN-HDECH 33
Fonctions d’entrée/sortie
Pour lire une variable d’un autre type, il faut faire un transtypage(cast)
>>> b=int(raw_input())
5
>>> type(b)
<type 'int'>
A.BEN-HDECH 34
Fonctions d’entrée/sortie
Remarque:
Elle fait un saut de ligne après l’affichage de la valeur
Python 3.X: rajouter un paramètre end=" "
A.BEN-HDECH 35
Fonctions d’entrée/sortie
Les littéraux
A.BEN-HDECH 36
Fonctions d’entrée/sortie
Les littéraux
A.BEN-HDECH 37
Notion de bloc d’instruction
Définition et structuration
— d’un bloc d’instructions indenté par rapport à la ligne d’en-tête. On utilise habituellement
quatre espaces par indentation et on ne mélange pas les tabulations et les espaces.
en−tete:
bloc ...........................
................................
d’instructions .................
A.BEN-HDECH 38
Notion de bloc d’instruction
Définitions et structuration
Il est possible d’imbriquer des blocs d’instructions les uns dans les autres :
en−tete:
bloc ...........................
................................
en−tete 2:
bloc .......................
............................
d’instructions .............
d’instructions..................
................................
Remarque
Il ne faut JAMAIS mélanger les tabulations et les espaces au risque d’avoir l’erreur suivante:
IndentationError: unindentdoesnot match anyouterindentation level
A.BEN-HDECH 39
Les instructions de contrôle
Définition
Les instructions répétitives permettent de répéter un certain nombre de fois une portion de code.
A.BEN-HDECH 40
Les instructions de contrôle
Si l’expression booléenne est vraie, le premier bloc d’instructions est réalisé, dans le cas
contraire c’est le second.
A.BEN-HDECH 41
Les instructions de contrôle
>>> a=l0
>>> if a<l0:
print ("a inferieur a 10")
else:
print ("a superieur ou egal a 10")
a superieur ou egal a 10
>>> a=10
if a<l0:
print ("c 'est vrai ")
if a>l0 :
a=6
print ("c'est faux" )
c'est vrai
c'est faux
A.BEN-HDECH 42
Les instructions de contrôle
>>>x = 5
>>>if x < 0:
x = -x
print(x)
A.BEN-HDECH 43
Les instructions de contrôle
>>> x = 5
>>> if x < 0:
print(”x est négatif”)
elif x % 2 != 0:
print(”x est positif et impair”)
print (”ce qui est bien aussi !”)
else:
print(”x n’est pas négatif et est pair”)
A.BEN-HDECH 45
Les instructions de contrôle
instructions répétitives
Ce type d'instruction permet au programme de répéter, de compter ou
d'accumuler, avec une économie d'écriture considérable.
On appelle boucle un système d’instructions qui permet de répéter un
certain nombre de fois toute une série d’opérations.
Python propose deux instructions particulières pour construire des
boucles :
l’instruction for … in … , très puissante;
l’instruction while… .
A.BEN-HDECH 46
Les instructions de contrôle
Syntaxe
while condition:
bloc ...........................
D’instructions .................
à réaliser .....................
Tant que la condition est vraie (True) le bloc d'instructions est exécuté. Le cycle continu jusqu'à
ce que la condition soit fausse (False) : on passe alors à la suite du programme.
A.BEN-HDECH 47
Les instructions de contrôle
A.BEN-HDECH 48
Les instructions de contrôle
A.BEN-HDECH 49
Les instructions de contrôle
La séquence est parcourue élément par élément. L’élément peut être de tout type :
entier, caractère, élément d’une liste…
Il est possible d'itérer sur les indices d'une séquence (et non pas sur les éléments eux-
mêmes) grâce à la fonction range() qui produit une séquence contenant les entiers de 0 à
n-1.
A.BEN-HDECH 50
Les instructions de contrôle
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 15))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> list(range(1, 20, 3))
[1, 4, 7, 10, 13, 16, 19]
A.BEN-HDECH 51
Les instructions de contrôle
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 15))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> list(range(1, 20, 3))
[1, 4, 7, 10, 13, 16, 19]
A.BEN-HDECH 52
Les instructions de contrôle
A.BEN-HDECH 53
Les instructions de contrôle
A.BEN-HDECH 54
Les instructions de contrôle
Arthur a 25 ans.
Aurélie a 21 ans.
Julien a 32 ans.
A.BEN-HDECH 55
Les instructions de contrôle
L'instruction continue n'interrompre pas la boucle, mais saute à la prochaine itération de la boucle
>>>i=1
>>>while i<5:
i=i+1
if i%2==0:
continue
print (i)
print ("Fin“)
1
3
5
Fin
A.BEN-HDECH 56
Les instructions de contrôle
La clause else dans un boucle permet de définir un bloc d’instructions qui sera exécuté à la fin
seulement si la boucle s’est déroulée complétement sans être interrompue par un break.
A.BEN-HDECH 57
Les instructions de contrôle
n=2
for n in range(2, 8):
for x in range(2, n):
if n % x == 0:
print(n, "egale", x, "*", n/x)
break
else:
print(n, "est un nombre premier")
2 est un nombre premier
3 est un nombre premier
4 egale 2 * 2.0
5 est un nombre premier
6 egale 2 * 3.0
7 est un nombre premier
A.BEN-HDECH 58
Les instructions de contrôle
Exercice
On souhaite calculer un définie par u0 = 0, u1 = 1 et uk+2 = uk + 1 + uk
A.BEN-HDECH 59
Les types composites
Listes
Les listes sont les principales structures de données en PYTHON. C’est une structure
hybride, qui cherche à tirer avantage de deux structures de données fondamentales en
informatique : les tableaux et les listes chaînées.
A.BEN-HDECH 60
Les types composites
A.BEN-HDECH 61
Les types composites
A.BEN-HDECH 62
Les types composites
A.BEN-HDECH 63
Les types composites
A.BEN-HDECH 64
Les types composites
A.BEN-HDECH 65
Les types composites
Les tuple
Un tuple est une collection ordonnée et non modifiable d’éléments éventuellement
hétérogènes.
Syntaxe : Éléments séparés par des virgules, et entourés de parenthèses.
monTuple=(el1,el2,…)
— le parcours des tuples est plus rapide que celui des listes ;
N.B: Comme les chaînes de caractères, les tuples ne sont pas modifiables !
N’ont pas de méthodes
Ils sont plus rapides que les listes.
Peuvent servir comme clés des dictionnaires
A.BEN-HDECH 66
Les types composites
Sont utilisées pour formater les strings (lui préférer la méthode format):
>>> monTuple =(mohamed ’, 30) # tuple avec deux éléments
>>>S= "Nom: %s et age: %s" % n_ag
>>>print(S)
Nom: lohamed et age: 30
A.BEN-HDECH 67
Les types composites
maListe=[’mohamed ’, 30]
monTuple =tuple(maListe)
A.BEN-HDECH 68
Les types composites
Ensembles (set)
Les ensemble ou sets forment un autre type de données composites Python. Un
ensemble est une collection d’éléments non ordonnée, sans index et qui ne peut pas
posséder l’élément dupliqué.
Donc un set est la transposition informatique de la notion d’ensemble mathématique.
Une des utilisation les plus courantes des ensembles est de les utiliser pour supprimer
des valeurs doublons à partir d’un autre type de données.
Pour créer un ensemble, on utilise une paire d’accolades { } en placer les différents
éléments de notre ensemble entre ces accolades en les séparant avec une virgule.
set1={"ahmed",27,"tarik"}
set1
{'ahmed', 27, 'tarik'}
set2={"ahmed",30,"tarik","karima","ahmed"}
set2
{'karima', 'ahmed', 'tarik', 30}
A.BEN-HDECH 69
Les types composites
Ensembles (set)
Quelque méthodes des Set :
len(set1) : retourne le cardinal du set1
set1.isdisjoint(set2) retourne True si l’intersection de set1 et set2 est vide
set1.issubset( set2 ) (ou set <= set2) retourne True si set1 ⊂ set2
set1.union(set2) (ou set | set2) : retourne set1 ∪ set2
set1.intersection(set2) (ou set1 & set2) : retourne set1 ∩ set2
set1. difference(set2) ( ou set1 –set2)
N.B Notez que pour créer un ensemble vide il faudra utiliser la fonction set() car la
syntaxe { } va créer un dictionnaire vide et non pas un ensemble vide.
A.BEN-HDECH 70
Les types composites
A.BEN-HDECH 71
Les types composites
Dictionnaires (dict)
Tableaux associatifs: l’accès se fait par clés
Ensemble de couples (key, value)
La clé doit être de type immuable (str, tuple, frozenset)
Création d’un dictionnaire vide:
Dict={}
Déclaration d’un dictionnaire initialisé:
Dict={key1: value1, key2: value2 ….}
Accès à la valeur value associée à la clé key; Dict[key]
Ajout d’un élément newKey , newVal:
Dict[newKey]=newVal
A.BEN-HDECH 72
Les types composites
Dictionnaires (dict)
A.BEN-HDECH 73
Les types composites
Dictionnaires (dict)
A.BEN-HDECH 74
Les types composites
A.BEN-HDECH 75
Les fonctions
Appel
Mafonction()
# ou bien; cible d’affectation
Ret=mafonction()
A.BEN-HDECH 76
Fonctions
Une fois définie, une fonction utilise à l’instar de toute autre fonction prédéfinie :
In [1]: norme (3, 4)
Out [1]: 5.0
En effet
A.BEN-HDECH 77
Fonctions
Une fois définie, une fonction utilise à l’instar de toute autre fonction prédéfinie :
>>> norme (3, 4)
5.0
En effet
A.BEN-HDECH 78
Fonctions
>>> norme(3, 4, 2)
5.0
>>> norme(3, 4, 3)
4.497941445275415
>>>norme(3, 4)
TypeError: norme() takes
exactly 3 arguments (2 given)
Une erreur est déclenchée dès lors que le nombre d’arguments donnés est incorrect
A.BEN-HDECH 79
Fonctions
>>> norme(3, 4, 3)
4.497941445275415
>>> norme(3, 4)
5.0
Il est préférable de nommer les arguments optionnels pour éviter toute ambiguïté :
A.BEN-HDECH 80
Fonctions
C’est le cas de la fonction print qui possède deux paramètres optionnels sep (valeur par
défaut : ’ ’) qui est inséré entre chacun des arguments de la fonction et end (valeur par
défaut : ’\n’) qui est ajouté à la fin du dernier des arguments :
A.BEN-HDECH 81
Fonctions
A.BEN-HDECH 82
Fonctions
A.BEN-HDECH 83
Gestion des exceptions
Definition
Une exception est un événement qui se produit pendant l'exécution d'un programme qui
interrompt le déroulement normal des instructions du programme.
En général, quand un script Python rencontre une situation qui ne peut pas faire face,
elle soulève une exception.
Une exception est un objet Python qui représente une erreur.
Si vous avez un « suspect code » qui peut soulever une exception, vous pouvez défendre
votre programme en plaçant le code suspect dans un try: bloc. Après l'essai: bloc,
inclure une except: déclaration, suivie par un bloc de code qui gère le problème le plus
élégamment possible.
A.BEN-HDECH 84
Gestion des exceptions
Syntaxe
try:
Bloc ......................
d’instructions.............
except ExceptionI:
Bloc ......................
d’instructions.............
except ExceptionII:
Bloc ......................
d’instructions.............
else:
Bloc ......................
d’instructions.............
A.BEN-HDECH 85
Gestion des exceptions
Try-finally
Vous pouvez utiliser un finally: bloc le long d'un try: bloc.
Le bloc finally est un endroit pour mettre tout code qui doit exécuter, si le bloc try
a soulevé une exception ou non. La syntaxe de l'instruction try-finally est la suivant:
try:
bloc d’instructions ......................
finally:
bloc d’instructions ......................
A.BEN-HDECH 86
Gestion des exceptions
Exemples
try:
print (5/0)
except ZeroDivisionError, e:
print (e)
try:
print (5%0)
except ZeroDivisionError, e:
print (e)
try:
print (foo)
except NameError, e:
print (e)
#name 'foo' is not defined
foo = [0,1,2]
try:
print (foo[3])
except IndexError, e:
print (e)
#list index out of range
A.BEN-HDECH 87
Gestion des exceptions
Quelques exceptions
A.BEN-HDECH 88