Vous êtes sur la page 1sur 72

Université Cheikh Anta Diop

Ecole Supérieure Polytechnique


Département Génie Informatique

LE LANGAGE PYTHON
COURS INTRODUCTIF
Formateur
M. Mouhamed DIOP
mouhamed.diop@esp.sn

DUT2 / ESP LICENCE 3 / EC2LT


Python ?
 Langage de programmation multi-paradigme
 Impératif (Procédural)
 Orienté objet
 Multiplateformes
 Interprété
 Typage dynamique
 Gestion automatique de la mémoire (ramasse -miettes)
 Open Source
 conçu pour produire du code de qualité, portable et facile à intégrer

2
Pourquoi apprendre Python?
 Très simple à apprendre
 Code moins volumineux
 Multiplateformes
 Très fun à utiliser
 Très documenté
 Grande communauté
 Peut être utilisé un peu partout (Administration système, applications bureau,
web, jeux vidéo…)

3
Un peu d’Histoire
 Crée par Guido van Rossum durant une semaine de vacances
 La première version est sortie en 1991

 Tire son nom de la série télévisée Monty Python's Flying Circus


 Guido était un fan de cette série britannique

 Principalement inspiré du:


 langage ABC pour l’indentation dans la syntaxe
 Modula-3 pour la gestion des exceptions
 Langage C et des outils UNIX

 Licence GPL depuis la version 2.1 (2001)

4
Installer Python
 Sous linux:
 Déjà installé
 Utiliser n’importe quel éditeur de texte pour le code source
 Exécuter en utilisant la commande python <nom_du_fichier>

 Sous Windows:
 http://www.python.org/getit/
 Il installera aussi l’IDE IDLE qui permet d’utiliser le shell python et d’écrire et exécuter votre
code.

5
Différentes versions de Python
 Depuis sa création, Python est passé par plusieurs versions (2.3, 2.5, 2.6, etc.)
 Ces versions sont englobées dans l’appellation Python 2.x
 Depuis le 13 Février 2009, la version 3.0.1 est sortie
 Elle casse la compatibilité ascendante
 Avènement de la version 3.x
 Un programme écrit en Python 2.x n’est plus forcément compatible avec la version 3.x
 Besoin d’adapter certains bouts de code
 Les bibliothèques ne sont plus accessibles de la même manière
 Ce cours concernera la version 3 du langage
 Faites attention aux ressources que vous trouvez sur le NET
 Repérer la version adéquate de Python utilisée

6
Syntaxe de base
Opérateurs
 Opérateurs arithmétiques:
 7+3 #10
 7-3 #4
 7*3 #21
 7**3 #343 (puissance)
 5/2 #2.5 (division réelle)
 7 % 3 #1 (modulo)
 7 // 3 #2 (division entière)

8
Opérateurs
 Opérateurs de comparaison: >, >=, ==,<=, <, !=
 Opérateurs logiques:
 and
 or
 not

 Un commentaire commence par le caractère # et s’étend jusqu’ à la fin de la


ligne
 Exemple: #Ceci est un commentaire

9
Les variables
 Pour déclarer une variable, la syntaxe générale est :
 nom_de_la_variable = valeur
 Une variable doit respecter quelques règles de syntaxe
 Le nom de la variable ne peut être composé que de lettres, majuscules ou minuscules, de
chiffres et du symbole souligné « _ » (appelé underscore en anglais).
 Le nom de la variable ne peut pas commencer par un chiffre.
 Le langage Python est sensible à la casse, ce qui signifie que des lettres majuscules et
minuscules ne constituent pas la même variable (la variable AGE est différente de aGe, elle-
même différente de age).

10
Les types de variables
 Pas de déclaration explicite du type d’une variable
 Le langage est à typage dynamique
 Le type d’une variable est celui de la valeur qu’on lui attribue
 Il peut changer pendant le programme
Exemple:
s = " Hello " #s est de type String
a = 2 #a est de type int
s = a+2 #s est maintenant de type int
 La fonction type(s) retourne le type de la variable s.

11
Les types de base
 Les nombres entiers:
 Peuvent être d’une taille quelconque (limité par la RAM)
 Correspond au type int en Python
 Les nombres flottants (réels)
 Notés avec un point décimal (7.2) ou avec une notation exponentielle (6.023e23)
 Correspond au type float dans Python
 Les types booléens qui prennent deux valeurs : True et False
 Notez bien le caractère majuscule au tout début
 Les chaines de caractères qui peuvent s’écrire de différentes façons
 entre guillemets ("ceci est une chaîne de caractères") ;
 entre apostrophes ('ceci est une chaîne de caractères') ;
 entre triples guillemets ("""ceci est une chaîne de caractères""" ).
 Correspond au type str dans Python
12
Opérations d’affectation
 a = 4 # Affectation
 a += 2 # idem à : a = a + 2 si a est déjà référencé
 a -= 2 # idem à : a = a - 2 si a est déjà référencé
 c = d = 8 # cibles multiples (affectation de droite à gauche)
 e, f = 2, 5 # affectation de tuple (par position)
 e, f = f, e # permutation entre e et f

13
Entrée clavier: input()
 Anciennement appelé raw_input() dans Python 2.x, la fonction input()
 Prend en paramètre le texte à afficher avant la saisie
 Lit ce qui est saisi au clavier et le retourne sous forme de chaine de caractères

 Pour lire une variable d’un autre type, il faut faire un transtypage (casting)
 Les transtypages sont de la forme : nouveau_type(variable)
 Exemple:
nom = input(" Quel est votre nom ? ");
age = int(input(" Veuillez donner votre age") )

14
Sortie écran (print)
 La fonction print permet d’afficher un message à l’écran
 Elle est devenue une fonction à partir de Python 3.0

 Sa syntaxe est : print(message_a_afficher)


 Elle fait un saut de ligne après l’affichage de la valeur donnée en paramètre
 Pour ne pas faire de retour à la ligne, on rajoute un paramètre end=" "

 Exemple :
nom = "Samba"
print(" Salut ", end = " " )
print(nom)

15
Print dans Python 2.x
 L’instruction print ne s’utilise pas de la même manière dans Python 2.x
 Elle ne correspond pas à une fonction
 Les parenthèses n’y sont pas obligatoires

 Exemple:
nom = "Samba"
print "Salut"
print nom
 Résultat:
Salut
Samba

16
Print dans Python 2.x
 Pour l’empêcher de sauter de ligne, il faut rajouter une virgule à la fin (elle
écrira un espace au lieu d’un saut de ligne)
 Exemple:
nom = "Samba"
print "Salut ",
print nom
 Résultat:
Salut Samba

17
Notion de bloc d’instructions:
 D’autres langages délimitent un bloc par les symboles { } ou BEGIN - END
 Python utilise l’indentation pour délimiter les blocs d’instructions
 Un bloc d'instructions est une suite d'instructions qui est alignée sur la même
indentation.
 Les blocs sont utilisés pour définir les corps des fonctions, des boucles, des
classes, etc.
 Il ne faut JAMAIS mélanger les tabulations et les espaces dans l’indentation
 Risque d’avoir une erreur
 La tabulation est généralement utilisée pour l’indentation

18
Structures de contrôle
Les conditions
 Syntaxe 1:
if condition:
instruction…
 Syntaxe 2:
if condition:
instruction…
else:
instruction…

20
Les conditions
 Syntaxe 3:
if condition_1:
instruction…
elif condition_2: #Equivalent à else if
instruction…
else:
instruction…

21
Les conditions
 Exemple:
If n > 0:
print (n + " est strictement positif ")
elif n < 0:
print (n + " est strictement négatif ")
else:
print (n + " est nul ")

22
Les boucles
 La boucle while
while condition:
instructions…
 Exemple:
i=0
while i < 5:
i = i+1
print (i)

23
Les boucles
 La boucle for
 Elle est équivalente à un foreach des autres langages

for element in sequence:


instructions…
 Exemple:
chaine = ‘salut’
for c in chaine:
print(c)

24
Les boucles
 Pour faire un for classique, il faut utiliser la fonction range( dont on donnera les
détails plus tard)
for i in range(n) : #Equivalent à for (i=0; i<n; i++ ) en C
instructions…
 Autres forme de la fonction range:
for i in range(k, n): # équivalent à for (i=k; i<n ; i++ ) en C
instructions…
for i in range(k, n, p): # équivalent à for (i=k; i<n ; i+=p ) en C
instructions…

25
les instructions break, continue
 L'instruction break permet d'arrêter une boucle avant sa fin.
while condition:
if condition2:
break
#si condition2 vérifiée, on sort de la boucle et on passe à instruction1
instructions…
instruction1
 L'instruction continue est similaire à break, mais au lieu d'interrompre la
boucle, on passe à la prochaine itération.

26
Structures de données
Les chaines de caractères
 Similaire aux chaines de caractères des autres langage (liste de caractères)
 Accès aux caractères par index, ie: pour une chaine s, s[i] retourne le ième
caractère
 Sont immuables (on ne peut changer leurs valeurs),il est donc interdit d’écrire
par exemple s[0]='a'
 Les constantes sont écrites entre "", ou entre ' '
 On peut écrire des " " dans les chaines délimitées par ' ' et des ' dans les chaines
délimitées par " "
 Le délimiteur peut aussi être « échappé » avec le caractère \

 Exemple:
S= " Je m’appelle Onizuka"
S= ' le mot " Oni" signifie démon en japonais ' 28
Opérations sur les chaines
 Concatenation " Hello" + " World" # " Hello World "
 "Hello " * 3 # ’Hello Hello Hello‘
 Supposons que S soit une chaine de longueur n
 Accès aux éléments:
 Le premier caractère est S[0] et le dernier S[n-1]
 S[i] retourne le ième élément de S
 S[-i] retourne le ième élément de S en partant de la fin. (à la position n-i)
 Sous chaines:
 La fonction len(S) retourne la taille de S.
 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 0, 1, …, j-1
 S[j:] donne la sous-chaine composée des caractères aux positions j, j+1, …, n-1

29
Opérations sur les chaines
 len(s) #retourne le nombre de caractères de la chaine
 s.isalnum() # retourne vrai si tous les caractères sont alphanumériques
 s.isalpha() #retourne vrai si tous les caractères sont alphabétiques
 s.isdigit() # retourne vrai si tous les caractères sont des chiffres
 s.replace(old, new) # retourne une chaine où toutes les occurrences de « old »
dans s sont remplacées par « new »
 s.index(c) #retourne la position de c dans s
 Lève une exception s’il ne trouve pas ce qui est recherché dans la chaine

 s.rindex(c) #retourne la position de c dans s, en commençant par la fin


 Lève une exception s’il ne trouve pas ce qui est recherché dans la chaine

30
Formater une chaine
 Pour formater une chaine, on utilise sa fonction format
 La chaine en question doit contenir des {}
 Les {} seront remplacés dans l’ordre par les paramètres de la fonction format
 Exemple:
a=4
b=2
print "{} + {} = {} " .format(a, b, a+b) # 4 + 2= 6

31
Formater une chaine
 On peut aussi formater une chaine en utilisant les chaines de format suivants :
 %d pour les nombres entiers
 %f pour les flottants
 %s pour les chaines de caractères
 Etc.
 Regarder documentation officielle pour plus de détails sur les chaines de format
 Exemple
age = 25
nom = "Khady Ndiaye"
print(" Vous vous appelez %s et vous avez %d ans " % (nom, age));
# va afficher : Vous vous appelez Khady Ndiaye et vous avez 25 ans

32
Les listes
 Peuvent être considérées comme des tableaux hétérogènes de taille variable
 Accès par position
 Les objets de la liste peuvent être de types différents
 La taille de la liste change à chaque suppression ou insertion

 Ils ne sont pas immuables contrairement aux chaines, on peut faire : l[0]=val
 On peut créer des matrices sous forme de liste de listes
 Exemple: M=[[1, 2, 3], [4, 5, 6]]

33
Opérations sur les listes
 Créer une liste (vide) : l = [] ou l = list()
 l3 = l1+ l2 #Concaténer deux listes
 l.append(v) : Insère un élément v à la fin de l
 l.insert(i, v): Insère un élément v à la position i de l
 l.pop() retourne la valeur du dernier élément et le supprime de la liste (on le
dépile)
 l.pop(i) retourne la valeur du ième élément et le supprime de la liste
 l.remove(v): supprime la première occurrence de v dans l
 l.count(v): retourne le nombre d’occurrence de v dans l
 l1.extend(l2): insère tous les éléments de l2 à la fin de l1 (concaténation)
 Modifie la liste, contrairement à l’opérateur « + »

34
Opérations sur les listes
 l.sort(): Trie croissant de la liste l (si les objets ne sont pas des types standards,
il faut rajouter une fonction qu’on verra plus tard)
 l.reverse(): trie la liste l, dans l’ordre décroissant
 len(l): retourne la taille de l (le nombre d’éléments dans la liste)
 l[i:j] donne la sous-liste composée des valeurs aux positions i, i+1, …, j-1
 l[:j] donne la sous-liste composée des valeurs aux positions 0, 1, …, j-1
 l[j:] donne la sous-liste composée des valeurs aux positions j, j+1, …, n-1

35
Les tuples
 Ce sont des listes immuables
 Le contenu ne peut changer dès qu’il est défini
 On ne peut ni ajouter, ni supprimer un élément
 Se déclare comme les listes
 Remplacer les [] par des ()
 Exemple
un_tuple = (1, 2, 3, 4);
un_autre_tuple = (7,) # la virgule est obligatoire ici
print(un_tuple[1]) # affiche 2
un_tuple[0] = 5 # provoque une erreur

36
Opérations sur les tuples
 Créer un tuple (vide) : t = () ou t = tuple()
 Créer un tuple à partir d’une liste l : t = tuple(l)
 t3 = t1+ t2 #Retourne un tuple issu de la concaténation des tuples t1 et t2
 t.count(v): retourne le nombre d’occurrence de v dans t
 t.index(v): retourne la position de v dans le tuple

37
Les dictionnaires
 Comme les listes, ils peuvent contenir un ensemble de données de types divers
 Les éléments sont identifiés par des clés (généralement des chaines de caractères)
 Ressemble aux tableaux associatifs en PHP
 Se crée comme les listes, sauf qu’on remplace les [] par des {}
 Exemple
utilisateur = {}
utilisateur["login"] = "kira";
utilisateur["password"] = "passer";
utilisateur["email"] = "kira.ndiaye@gmail.com";
utilisateur["age"] = 27;
print("L’email de l’utilisateur est : " + utilisateur["email"]);

38
Les fonctions
Les fonctions
 Les fonctions permettent de regrouper plusieurs instructions dans un bloc qui
sera appelé grâce à un nom.
 Python dispose d’un ensemble de fonctions prédéfinies
 Print est une fonction permettant de faire un affichage sur l’écran
 Type est une fonction permettant de connaitre le type d’une variable
 On a aussi la possibilité de créer nos propres fonctions
 Les fonctions prédéfinies ne vont pas répondre à tous nos besoins
 Le développeur aura assez souvent besoin de créer ses propres fonctions

40
Création d’une fonction
 La syntaxe générale de création d’une fonction est la suivante :
def nom_de_la_fonction(paramètre1, paramètre2, …, paramètreN) :
# Bloc d’instructions
 Le mot-clé « def », abbréviation de « define » constitue le prélude à toute fonction
 Le nom de la fonction est le nom à travers lequel la fonction sera utilisée
 Respecte les mêmes règles de nommage que les variables
 Ne doit pas correspondre au nom d’une variable déjà définie
 La liste des paramètres qui seront fournis lors d'un appel à la fonction
 Les paramètres sont séparés par des virgules et la liste est encadrée par des
parenthèses
 Les espaces sont optionnels mais améliorent la lisibilité.
 Les parenthèses sont obligatoires (même si la fonction ne dispose pas de paramètres)

41
Création d’une fonction
 Exemple de fonction sans paramètres
def direBonjour() :
print("Bonjour")
 Exemple de fonction avec un seul paramètre
def direBonjour(nom) :
print("Bonjour " + nom)
 Exemple de fonction avec plusieurs paramètres
def direBonjour(nom, prenom) :
print("Bonjour " + prenom + " " + nom)

42
Création d’une fonction
 Le nom d’une fonction est unique dans un programme
 Même si le nombre de paramètres varie
 Exemple : direBonjour() et direBonjour(nom) ne peuvent coexister dans un même
programme
 Peuvent être remplacées par direBonjour() et direBonjourA(nom) par exemple

 Un paramètre peut avoir une valeur par défaut


 C’est la valeur prise par le paramètre s’il n’est pas renseigné à l’appel
 Pour le créer, il suffit juste de lui affecter une valeur à la création
def direBonjourA(nom="Mouhamed") :
print("Bonjour " + nom)

43
Appel d’une fonction
 Une fois créé, la fonction peut être « appelée » à travers son nom
 L’appel correspond à l’utilisation effective de la fonction
 Des valeurs effectives seront données aux paramètres (le cas échéant)
 Exemple
 direBonjour() # va afficher « Bonjour » à l’écran
 direBonjourA("Samba") # va afficher « Bonjour Samba » à l’écran
 direBonjourA("Mariama") # va afficher « Bonjour Mariama » à l’écran
 direBonjourA() # va afficher « Bonjour Mouhamed » (utilisation de la valeur
par défaut du paramètre)

44
Les fonctions à paramètres variables
 Il est possible de créer une fonction pouvant être appelée avec un
nombre de paramètres variables
 Il suffit de précéder le nom du paramètre avec un « * »
 Exemple
def sayHelloTo(*names) :
for name in names :
print("Hello " + name);
 sayHelloTo("Samba") # va afficher « Hello Samba »
 sayHelloTo("Samba", "Fatou") # va afficher « Hello Samba » et « Hello
Fatou »

45
Les fonctions à paramètres variables
 S’il y’a des paramètres autre que celui dont le nombre de valeurs peut
varier, ce dernier devra être mis en dernière position
 Exemple
def somme(nombre1, nombre2, *nombres) :
resultat = nombre1 + nombre2;
for nombre in nombres :
resultat += nombre
print("La somme vaut : " + resultat)
 somme(12, 13) et somme(2, 7, 18) sont des appels corrects de la
fonction tandis que somme() et somme(5) ne le sont pas

46
Valeur de retour d’une fonction
 Une fonction peut retourner le résultat de son calcul
 Plus flexible que l’affichage direct
 Ca se fait à travers le mot clé « return »
 Exemple
def carre(nombre) :
resultat = nombre * nombre;
return resultat;

47
Valeur de retour d’une fonction
 La valeur de retour de la fonction est utilisée par le programme appelant
 Cette utilisation n’est pas obligatoire
 Exemple
nombre1 = carre(5); # récupération du résultat, nombre1 vaut 25
print("Le carré de 5 est : ", nombre1);
carre(2); # appel de la fonction sans utilisation du résultat (inutile ici)
print("Le carré de 8 est : ", carre(8)); # utilisation directe de la valeur de
retour comme paramètre d’une autre fonction
nombre2 = carre(carre(3)) # appels successifs de la fonction, nombre2 = 81

48
Portée des variables
 Les variables déclarées dans la fonction ne sont accessibles que dans la
fonction
 Un accès depuis le programme appelant va provoquer une erreur
 Une fonction peut accéder à des variables définies localement ou non
 L’accès aux variables locales peut se faire en lecture et en écriture
 L’accès aux variables globales ne peut se faire qu’en lecture
 Une tentative de modification (affectation) ne fait que créer une variable locale
à la fonction
 Peut provoquer une erreur dans certaines conditions (utilisation de += par exemple)
 Le mot-clé global peut être utilisé pour autoriser la modification de variables
globales

49
Portée des variables
 Exemple
def calculerSomme() :
nombre1, nombre2 = 3, 5;
somme = nombre1 + nombre2;
print("La somme vaut : ", somme);
calculerSomme();
print(somme); # va provoquer une erreur

50
Portée des variables
 Exemple
var nom = "Mané"
def afficherNom() :
print(nom);
nom = "Samb";
print(nom)
afficherNom() ; # va afficher « Mané », puis « Samb »
print(nom); # va afficher « Mané »

51
Portée des variables
 Exemple
var nom = "Mané"
def afficherNom() :
nom += "Samb"; # va provoquer une erreur
print(nom)

52
Portée des variables
 Exemple
var nom = "Mané"
def afficherNom() :
global nom; # pour autoriser la modification de la variable globale
print(nom);
nom = "Samb";
print(nom)
afficherNom() ; # va afficher « Mané », puis « »Samb »
print(nom); # va afficher « Samb »

53
Les modules
 Lorsqu’un programme grandit, il est préférable de séparer le code en
plusieurs fichiers
 facilite la réutilisation des fonctions
 Permet une meilleure organisation du code
 Python permet de placer des bouts de code dans un fichier et de les
utiliser ailleurs
 Un tel fichier est appelé « module »
 Leur définition et leur utilisation ne sont plus forcément liées
 Regroupement de plusieurs fonctions (ou classes) dans un seul espace de nom

54
L’importation de modules
 Pour utiliser du code défini dans un module, il faut d’abord l’importer
 L’importation se fait à travers le mot clé « import »
 Plusieurs syntaxes sont possibles
 Le nom du module correspond au nom du fichier contenant le code à
importer
 Il ne faut tout de même pas y spécifier l’extension du fichier

55
L’importation de modules
 L’importation peut se faire de plusieurs manières
 import nom_module [, nom_module2, …]
 Si on veut avoir accès à toutes les fonctionnalités définies dans le module
 import nom_module as nouveau_nom [, module_2 as nom_2, …]
 Accès aux fonctionnalités du module sous un nouveau nom
 from nom_module import element_module [, element2, …]
 Si on souhaite accéder à une partie des fonctionnalités offertes
 La liste des éléments peut être remplacée par « * » pour tout charger d’un seul coup
 from nom_module import element_module as nouveau_nom [, em2 as nom, …]
 Accès à une partie des fonctionnalités, sous un nouveau nom

56
Exemple d’utilisation des modules
 Dans le fichier fonctions.py, on définit les fonctions
def carre(nombre) :
return nombre * nombre;
def triple(nombre) :
return nombre * nombre * nombre;
def puissance(nombre, exposant) :
return nombre ** exposant;

57
Exemple d’utilisation des modules
 Dans test_fonctions_1.py, on a :
import fonctions
carre_de_neuf = fonctions.carre(9);
print("Le carré de 9 est : ", carre_de_neuf);
 Dans test_fonctions_2.py, on a :
import fonctions as math;
print("Le triple de 8 est : ", math.triple(8));

58
Exemple d’utilisation des modules
 Dans test_fonctions_3.py, on a :
from fonctions import carre;
carre_de_neuf = carre(9);
print("Le carré de 9 est : ", carre_de_neuf);
 Dans test_fonctions_4.py, on a :
from fonctions import puissance as pow, carre as sqr;
print("Le carre de 18 est : ", sqr(18));
print("Deux à la puissance 3 vaut : ", pow(2, 3));

59
Les modules standards
 Python est accompagné d'une bibliothèque de modules standards
 La composition de ces modules est configurable (à la compilation) et
dépend aussi de la plateforme cible
 Par exemple, le module winreg n’est proposé que pour les systèmes Windows
 Certains modules méritent une attention particulière
 sys : fournit un accès à certaines variables utilisées et maintenues par
l'interpréteur
 os : fournit une manière portable d’utiliser les fonctionnalités dépendantes
du système d’exploitation
 Etc.

60
Les modules standards
 Faire un tour sur la documentation officielle pour plus de détails
 Tutoriel sur les modules
 https://docs.python.org/fr/3/tutorial/modules.html
 Liste des modules standards
 https://docs.python.org/3/py-modindex.html

61
Les paquets
 Il y’a possibilité de regrouper des modules pour construire des paquets
 Les paquets sont un moyen de structurer les espaces de nommage des
modules Python en utilisant une notation « pointée »
 Par exemple, le nom de module A.B désigne le sous-module B du paquet A
 Sous Python, les paquets correspondent à des dossiers
 Ils doivent contenir un fichier « __init.py__ » (qui peut être vide)
 Le mot clé import est utilisé pour importer des paquets

62
Les exceptions
Les exceptions
 Même si une instruction ou une expression est syntaxiquement correcte,
elle peut générer une erreur lors de son exécution
 Les erreurs détectées durant l’exécution sont appelées des exceptions
 Elles ne sont pas toujours fatales : le programme peut les traiter
 Si elles ne sont pas traitées, elles provoquent l’arrêt du programme
 La plupart des exceptions ne sont pas prises en charge par défaut
 Le programmeur doit se charger de les gérer

64
Les exceptions
 Même si une instruction ou une expression est syntaxiquement correcte,
elle peut générer une erreur lors de son exécution
 Division par zéro, conversion d’une chaine en entier, etc.
 Les erreurs détectées durant l’exécution sont appelées des exceptions
 Elles ne sont pas toujours fatales : le programme peut les traiter
 Si elles ne sont pas traitées, elles provoquent l’arrêt du programme
 Les exceptions peuvent être de différents types
 Ce type est généralement indiqué dans les messages d’erreur
 Il existe des exceptions standards (natives) mais le développeur peut en
créer d’autres

65
Gestion d’une exception
 Syntaxe 1
try :
# bloc d’instructions à essayer
except :
# bloc d’instructions à exécuter en cas d’erreurs
 Exemple
age = input("Donner votre age")
try :
age = int(age)
except:
print("Erreur lors de la conversion de l’année");

66
Gestion d’une exception
 Syntaxe 2
try :
# bloc d’instructions à essayer
except type_exception:
# bloc d’instructions à exécuter en cas d’erreurs
 Une autre syntaxe
try :
# bloc d’instructions à essayer
except type_exception as messageErreur:
# bloc d’instructions à exécuter en cas d’erreurs
67
Gestion d’une exception
 Exemple
denominateur = input("Donner le dénominateur")
try :
resultat = 12 / denominateur;
except ZeroDivisionError :
print("Le dénominateur ne doit pas être nul")
except :
print("Une erreur inattendue s’est produite")

68
Gestion d’une exception
 Syntaxe 2
try :
# bloc d’instructions à essayer
except type_exception:
# bloc d’instructions à exécuter en cas d’erreurs
 Une autre syntaxe
try :
# bloc d’instructions à essayer
except type_exception as messageErreur:
# bloc d’instructions à exécuter en cas d’erreurs
69
Gestion d’une exception
 Syntaxe 3
try :
# bloc d’instructions à essayer
except type_exception:
# bloc d’instructions à exécuter en cas d’erreurs
else :
# instructions à exécuter si aucune erreur

70
Gestion d’une exception
 Syntaxe 4
try :
# bloc d’instructions à essayer
except type_exception:
# bloc d’instructions à exécuter en cas d’erreurs
finally :
# instructions à exécuter qu’il aie erreur ou pas
 Le bloc finally est exécuté dans tous les cas de figures
 Même quand le bloc except se termine par une instruction return

71
La Programmation Orientée
Objet