Cours : Python
Souheyl Mallat
Souheyl.mallat@gmail.com
A.U:2024-2025 1
Plan
Chapitre1:
-Présentation de Python & les types de données et opération
-structures algorithmiques : branchements conditionnels et boucles
-Les entrés/sorties
-Les chaines de caractère
Chapitre 2:
-Les structures de données: Les conteneurs:
-Organisation du code Python
Chapitre 3:Manipulation des fichiers
Chapitre 4: Programmation orienté objet Programmation Orienté objet
Chapitre 5::Gestion des exceptions
2
Plan
1. Présentation de Python
2. Identificateurs, types de bases et variables en Python
3. Opérateurs et expressions
4. Entrées/Sorties en Python
5. Les structures de contrôle
6. Les structures itératives
7. Les fonctions en Python
8. Les modules
9. Les tableaux et les listes en python
3
Algorithme vs Programme
4
Aperçu de ses caractéristiques…
Modulable
Python permet de séparer les programmes en modules qui peuvent
être réutilisés dans d'autres programmes en Python
Orienté Objet
Syntaxe aisée
La syntaxe de Python est très simple et, combinée à de nombreux types
de données évolués (comme les listes, dictionnaires, tuples...), ce qui
conduit à des programmes à la fois très compacts et très lisibles. De plus,
Python ne nécessite aucune déclaration de variable. Les variables sont
créées lors de leur première assignation.
5
Un petit historique…
En 1989, Guido Van Rossum commença à travailler sur Python qui
n’était alors qu’un projet lui servant d’occupation durant les vacances de
Noël pendant lesquelles son bureau était fermé.
• Le but de Guido était d’inventer un successeur au langage
ABC, un langage d’apprentissage peu apprécié dans le milieu
académique.
• il fait appel directement à des utilisateurs Unix habitués au langage
C. il voulu que Python soit facilement utilisable dans d’autres
langages et environnement
6
Aperçu de ses caractéristiques…
Langage Script
Portable
Gratuit
Extensible
7
Domaines d’application
• Scripts d’administration systèmes
•Tous les développement lié à l’internet et en particulier au web
•Accès aux bases de donnée
• Réalisations d’interfaces graphiques utilisateurs.
• Utilisation pour la résolution de calculs scientifiques
…
8
Compilation et interprétation
Il existe deux techniques de traduction
Ce que nous écrirons … Affichage ligne
par ligne
Ce que l’on utilisera à chaque fois que
l’on voudra exécuter le code source :
traduction/exécution ligne par ligne.
9
Compilation et interprétation
traduit la totalité du texte Programme prêt à être exécuté
source en une fois
10
Comparaison de Python avec d’autres langages
11
Comparaison de Python avec d’autres langages
12
Compilation et interprétation
Remarque
Tout ceci peut paraître un peu compliqué, mais la bonne nouvelle est
que tout ceci est pris en charge automatiquement par
l'environnement Python.
Il vous suffira d'entrer vos commandes au clavier, de frapper <Enter>,
et Python se chargera de les compiler et de les interpréter pour vous.
13
Mise au point d'un programme.
Recherche des erreurs «debug»
3 types d’erreurs :
1. syntaxe :
2. sémantique :
3. d’exécution ou « Run-time error » :
14
Python propose les outils standards de
programmation(1/2)
15
Python mode opératoire 1
16
Python mode opératoire 1
17
Python mode opératoire 2
18
Python mode opératoire 2
19
Première opération
20
18
Affectation
21
Affectations multiples
Sous Python, on peut assigner une valeur à plusieurs variables
simultanément.
Exemple :
>>> x = y = 7
>>> x
>>> y
On peut aussi effectuer des affectations parallèles à l'aide d'un seul
opérateur :
>>> a, b = 4, 8.33
>>> a
>>> b
Opérations, expressions enchaînements
23
La présentation des programmes
Les commentaires
24
Les variables
25
Les variables (suite)
Mots réservés : On ne peut pas utiliser comme nom les 33 mots
suivants (qui sont réservés au langage Python)
26
Les variables (suite)
27
Les variables (suite)
28
Les variables (suite)
Tester ces lignes de code
29
Les variables (suite)
Tester ces lignes de code
30
Opérateurs de comparaison
31
Opérateurs de comparaison
32
Les expressions booléennes
33
Le type d’un objet
Objectifs: Etre capable de déterminer le type d’un objet en objet
Le langage Python est un langage typé dynamiquement : les variables ne sont pas typées à
l’avance, leur type est défini en fonction de la valeur qu’elles contiennent.
À tout objet Python est associé :
Un emplacement en mémoire dans lequel est rangé sa représentation binaire ;
Un type qui désigne sa nature.
Déterminer le type d’un objet
En Python, pour obtenir le type d’un objet ou déterminer s’il s’agit d’un type spécifique,
utilisez les fonctions intégrées type() et isinstance().
Il est possible de déterminer le type d’un objet grâce à deux fonctions différentes. Bien
qu’elles aient un fonctionnement similaire pour les types de base, elles diffèrent dans la
gestion des types personnalisés.
La fonction type()
34
retourne le type d’un objet.
Le type d’un objet
35
Le type flottant
36
Le type flottant
37
Le type complexe
38
La fonction isinstance()
Renvoie un booléen indiquant si un objet est une instance ou une sous-classe d’un autre
objet
Elle prend en premier argument la variable et en deuxième argument le type à tester et
retourne true si la variable est bien de ce type.
Exemple:
>>> isinstance(1, int)
>>> type(1) is int
isinstance() renvoie True même pour les instances de sous-classes qui héritent de la
classe spécifiée dans le deuxième argument.
39
Vérifier les chaînes de caractères
1- La méthode isalnum()
La méthode isalnum () renvoie True si tous les caractères de la chaîne sont alphanumériques. Sinon, il
renvoie False.
2- La méthode isalpha()
renvoie True si tous les caractères de la chaîne sont des alphabets. Sinon, il renvoie False.
3- La méthode isdigit()
renvoie True si tous les caractères de la chaîne sont des chiffres. Sinon, il renvoie False.
4- La méthode isnumeric()
renvoie True si tous les caractères de la chaîne sont des caractères numériques. Sinon, il renvoie False.
5- La méthode isdecimal()
renvoie True si tous les caractères de la chaîne sont des caractères décimaux. Sinon, il renvoie False
40
Exemple
string1 = "Hello123" string1 = "123"
string2 = "Hello123!" string2 = "Hello123"
string3 = "Hello" string3 = "Hello"
print(string1.isalnum()) # print(string1.isdigit()) #
print(string2.isalnum()) # print(string2.isdigit()) #
print(string3.isalnum()) # print(string3.isdigit()) #
string1 = "Hello"
string2 = "Hello123" string1 = "123"
string3 = "123" string2 = "²345"
string3 = "Hello"
print(string1.isalpha()) #
print(string2.isalpha()) # print(string1.isnumeric()) #
print(string3.isalpha()) # False print(string2.isnumeric()) #
string1 = "123" print(string3.isnumeric()) #
string2 = "12.3"
string3 = "Hello"
print(string1.isdecimal()) #
print(string2.isdecimal()) #
print(string3.isdecimal()) # 41
print("123".isdigit()) #
print("²³".isdigit()) #
print("10²".isdigit()) #
print("½".isdigit())
print("123".isnumeric()) print("²³".isnumeric())
# print("Ⅻ".isnumeric()) #
print("½".isnumeric())
42
Transtypage
43
chaines de caractères
Les différentes chaines de caractères et leur manipulation
44
chaines de caractères
45
chaines de caractères
46
chaines de caractères
47
chaines de caractères
48
chaines de caractères
49
chaines de caractères
50
chaines de caractères
51
chaines de caractères
52
Chapitre 2: Entrée/Sortie
et structures algorithmiques
53
Entrée/Sortie
On a généralement besoin de pouvoir interagir avec un
programme :
• pour lui fournir les données a traiter, par exemple au clavier :
entrées
• pour pouvoir connaitre le résultat d’exécution pour que le
programme puisse écrire ce qu’il attend de l’utilisateur,
par exemple, texte écrit a l’écran : sorties
54
Les entrées : fonction input()
A l’exécution, l’ordinateur :
– interrompt l’exécution du programme
– affiche éventuellement un message a l’écran
– attend que l’utilisateur entre une donnée au clavier et appuie
Entrée.
C’est une saisie en mode texte
– valeur saisie vue comme une chaîne de caractères
– on peut ensuite changer le type
55
Les entrées
>>> texte = input()
123
>>> texte + 1 #
>>> val = int(texte)
>>> val + 1 #
124
>>> x = float(input("Entrez un nombre :"))
Entrez un nombre :
12.3
>>> x + 2
14.3
56
Les sorties : la fonction print()
Affiche la représentation textuelle de n’importe quel
nombre de valeurs fournies entre les parenthèses et
séparées par des virgules
A l’affichage, ces valeurs sont séparées par un espace
L’ensemble se termine par un retour a la ligne
– modifiable en utilisant sep et/ou end
Possibilité d’insérer
– des sauts de ligne en utilisant \n et
– – des tabulations avec \t
57
Les sorties : la fonction print()
58
Les sorties : la fonction print()
La fonction print() affiche une chaîne de caractères .
Elle affiche l’argument qu’on lui passe entre parenthèses et un
retour à ligne
!!retour à ligne supplémentaire est ajouté par défaut.
Si on ne veut pas afficher ce retour à la ligne, on peut utiliser
l’argument par « mot-clé » end :
59
Les sorties : la fonction print()
Une autre manière de s’en rendre compte est d’utiliser deux fonctions
print() à la suite.
Dans le code suivant, le caractère « ; » sert à séparer plusieurs
instructions Python sur une même ligne :
60
Les sorties : la fonction print()
La fonction print() peut également afficher le contenu d’une variable
quel que soit son type. Par exemple, pour un entier :
Il est également possible d’afficher le contenu de plusieurs
variables (quel que soit leur type) en les séparant par des virgules :
61
Les sorties : la fonction print()
Python a écrit une phrase complète en remplaçant les variables x
et nom par leur contenu.
Pour afficher plusieurs éléments de texte sur une seule ligne,
nous avons utilisé le séparateur « , » entre les différents éléments.
Python a également ajouté un espace à chaque fois que l’on utilisait
le séparateur « , ».
On peut modifier ce comportement en passant à la fonction
print() l’argument par mot-clé sep :
62
Les sorties : la fonction print()
La méthode .format() permet une meilleure organisation de
l’affichage des variables. Si on reprend l’exemple précédent :
63
Les sorties : la fonction print()
Remarque Il est possible d’indiquer entre les accolades {} dans
quel ordre afficher les variables, avec 0 pour la variable à afficher
en premier, 1 pour la variable à afficher en second, etc.
(Attention, Python commence à compter à 0). Cela permet de
modifier l’ordre dans lequel sont affichées les variables.
64
Les sorties : la fonction print()
Imaginez maintenant que vous vouliez calculer, puis afficher, la
proportion de GC d’un génome :
La proportion de GC s’obtient comme la somme des bases
Guanine (G) et Cytosine (C) divisée par le nombre total de bases
(A, T, C, G) du génome considéré.
Si on a, par exemple, 4500 bases G et 2575 bases C, pour un
total de 14800 bases, vous pourriez procéder comme suit (notez
bien l’utilisation des parenthèses pour gérer les priorités des
opérateurs) :
65
Les sorties : la fonction print()
Le résultat obtenu présente trop de décimales (seize dans le cas
présent). Pour écrire le résultat plus lisiblement, vous pouvez spécifier
dans les accolades {} le format qui vous intéresse.
Exemple :
Détaillons le contenu des accolades de la première ligne ({:.2f}) :
66
Les sorties : la fonction print()
Notez enfin que le formatage avec .xf (x étant un entier positif)
renvoie un résultat arrondi. Il est par ailleurs possible de combiner le
formatage (à droite des 2 points) ainsi que l’emplacement des
variables à substituer (à gauche des 2 points), par exemple :
remarque : la même variable (prop_GC) à deux endroits
différents.
Vous pouvez aussi formater des entiers avec la lettre d :
67
Les sorties : la fonction print()
On peut mettre plusieurs nombres dans une même chaîne de
caractères.
68
Les sorties : la fonction print()
Il est possible de préciser sur combien de caractères vous voulez
qu’un résultat soit écrit et comment se fait l’alignement (à gauche, à
droite ou centré).
Exemple : le caractère ; sert de séparateur entre les
instructions sur une même ligne :
69
Les sorties : la fonction print()
Notez que:
> spécifie un alignement à droite,
< spécifie un alignement à gauche
ˆ spécifie un alignement centré.
Il est également possible d’indiquer le caractère qui servira de
remplissage lors des alignements (l’espace est le caractère par défaut).
70
Les sorties : la fonction print()
La méthode .format() agit sur la chaîne de caractères à laquelle elle
est attachée par un point et n’a rien à voir avec la fonction print().
Si on donne une chaîne de caractères suivie d’un .format() à la
fonction print(), Python évalue d’abord le formatage et c’est la chaîne
de caractères qui en résulte qui est affichée à l’écran. Exemple :
Tout comme dans l’instruction print(5*5), c’est d’abord la
multiplication (5*5) qui est évaluée, puis son résultat qui est affiché
à l’écran.
Python affiche le résultat de l’instruction "{:10.3f}".format(perc_GC) comme une
chaîne de caractères et la fonction type() nous le confirme.
71
Les sorties : la fonction print()
Ancienne méthode de formatage des chaînes de caractère
Dans d’anciens livres ou programmes Python, il se peut que vous
rencontriez l’écriture formatée avec le style suivant :
72
Les sorties : la fonction print()
La syntaxe est légèrement différente. Le symbole % est d’abord
appelé dans la chaîne de caractères (dans l’exemple ci dessus %d,
%d et %.2f) pour :
•Désigner l’endroit où sera placée la variable dans la chaîne de
caractères.
• Préciser le type de variable à formater, d pour un entier (i
fonctionne également) ou f pour un float.
73
Les sorties : la fonction print()
Note sur le vocabulaire et la syntaxe
En Python, on peut considérer chaque variable comme un objet sur
lequel on peut appliquer des méthodes.
Une méthode est simplement une fonction qui utilise et/ou agit sur
l’objet lui-même, les deux étant connectés par un point. La syntaxe
générale est de la forme objet.méthode().
74
Chapitre 3:
structures algorithmiques :
branchements conditionnels
et boucles
75
Branchement conditionnel « if »
Objectif : effectuer des actions seulement si une certaine
condition est vérifiée
Syntaxe en Python :
if condition :
instructions à exécuter
• Attention à l’indentation !
– Indique dans quel bloc se trouve une instruction.
– obligatoire en Python.
76
Branchement conditionnel « if »
77
78
Branchement conditionnel « if »: exemple
79
Succession de if avec elif
80
Avant la boucle « for »: génération
d’une séquence de valeurs
81
Boucle « for »
82
Exemple:
111
248
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
83
Exercice
Écrivez un programme Python qui itère les nombres entiers de 1 à 50. Pour les multiples de trois, imprimez "Fizz" au lieu du
nombre et pour les multiples de cinq, imprimez "Buzz". Pour les nombres qui sont des multiples de trois et cinq, imprimez
"FizzBuzz".
Résultat attendu :
1
2
Fizz (3 multiple de 3)
4
Buzz (5 multiple de 5)
Fizz (6 multiple de 3)
7
8
Fizz (9 multiple de 3)
Buzz (10 multiple de 5)
11
Fizz (12 multiple de 3)
13
14
FizzBuzz (15 multiple de 3 et 5)
Boucle « for»: exemple
85
Boucle « while » (exemple)
Exemple: division de A par B
Un programme qui demande un entier A, puis un entier B jusqu’a ce
que celui-ci soit non-nul, puis qui calcule le quotient de A par B.
86
Boucle « while » (exemple)
Attention aux boucles infinies!
Si la condition de la boucle while ne devient jamais fausse, le
programme boucle indéfiniment:
Exemple 1:
n=5
while n<10 :
print("n vaut :", n)
print("Fin")
Exemple 2:
while True :
print("Je boucle.")
print("Fin" )« ») 87
88
Boucle « while » (exemple)
Le mot-cle break
• Permet de sortir immédiatement de la boucle while
i=1
while i<100:
if i % 2 == 0 :
print("*")
break
i=i+1
print("Incrémentation de i")
print("Fin") 89
Boucle « while » (exemple)
Le mot-clé : continue
Permet de remonter immédiatement au début de la boucle
while en ignorant la suite des instructions dans la boucle.
Exemple :
for i in range(4):
print("debut iteration",
i)
print("bonjour")
if i < 2:
continue
print("fin iteration", i)
print("après la boucle“) 90
Break et continue
Inconvénients:
Code plus difficile a lire/analyser si plusieurs niveaux
d'imbrications et/ou longues instructions dans le while
N'a pas toujours d‘équivalent dans les autres langages de
programmation
On essaiera tant que possible de se passer de break et
continue.
91
Boucle « while » (exemple)
Boucles imbriquées
• Une instruction d’une boucle while peut être une boucle while
Ex : résultat produit par ce programme ?
1, 1
1, 2
2, 1
2, 2
3, 1
3, 2
92
Boucle « while »
Boucles imbriquées
On veut écrire un programme qui affiche un ≪ carre ≫ de n x n
fois le caractère ‘*’. L’utilisateur choisit le cote n du carre.
Exemple de résultat :
Entrez la valeur de n : 5
*****
*****
*****
*****
*****
93