Cours de Python
Cours de Python
Cours de Python
https://python.sdv.univ-paris-diderot.fr/
1 Introduction 11
1.1 Quelques mots sur l’origine de ce cours . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Avant de commencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 C’est quoi Python ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Premier contact avec Python sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Premier programme Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.1 Appel de l’interpréteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.2 Appel direct du script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 Notion de bloc d’instructions et d’indentation . . . . . . . . . . . . . . . . . . . . . . . 15
1.9 Python 2 ou Python 3 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Variables 17
2.1 Définition d’une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Les types de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Nommage des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.1 Opérations sur les types numériques . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.2 Opérations sur les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . 19
2.4.3 Opérations illicites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5 La fonction type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Conversion de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 Note sur la division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8 Note sur le vocabulaire et la syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Affichage 23
3.1 Écriture formatée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Ancienne méthode de formatage des chaînes de caractères . . . . . . . . . . . . . . . . 26
3.3 Note sur le vocabulaire et la syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.1 Affichage dans l’interpréteur et dans un programme . . . . . . . . . . . . . . . 27
3.4.2 Poly-A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Poly-A et poly-GC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.4 Écriture formatée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.5 Écriture formatée 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Listes 29
4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Opération sur les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 Indiçage négatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
Table des matières Table des matières
4.5 Tranches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.6 Fonction len() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.7 Les fonctions range() et list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8 Listes de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.9 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.9.1 Jours de la semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.9.2 Saisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.9.3 Table des 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.9.4 Nombres pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Boucles et comparaisons 35
5.1 Boucles for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.2 Fonction range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.3 Nommage de la variable d’itération . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.4 Itération sur les indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2 Comparaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Boucles while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.4.1 Boucles de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.2 Boucle et jours de la semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.3 Table des 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.4 Nombres pairs et impairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.5 Calcul de moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.6 Produit de nombres consécutifs . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.7 Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.8 Triangle inversé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.9 Triangle gauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.10 Triangle isocèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.11 Parcours de matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4.12 Parcours de demi-matrice sans la diagonale (exercice ++) . . . . . . . . . . . . 43
5.4.13 Sauts de puce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.14 Suite de Fibonacci (exercice +++) . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 Tests 47
6.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.2 Tests à plusieurs cas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.3 Tests multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.4 Instructions break et continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.5 Tests de valeur sur des réels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.6.1 Jours de la semaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.6.2 Séquence complémentaire d’un brin d’ADN . . . . . . . . . . . . . . . . . . . . 51
6.6.3 Minimum d’une liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.6.4 Fréquence des acides aminés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.6.5 Notes et mention d’un étudiant . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.6.6 Nombres pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.6.7 L’énigme du père Fouras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.6.8 Conjecture de Syracuse (exercice +++) . . . . . . . . . . . . . . . . . . . . . . 52
6.6.9 Attribution simple de la structure secondaire des résidus d’une protéine (exercice
+++) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.6.10 Détermination des nombres premiers inférieurs à 100 (exercice +++) . . . . . 53
6.6.11 Recherche d’un nombre par dichotomie (exercice +++) . . . . . . . . . . . . . 54
7 Fichiers 57
7.1 Lecture dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.1.1 Méthode read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.1.2 Méthode readline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.1.3 Méthodes seek() et tell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.1.4 Itérations directement sur le fichier . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.2 Écriture dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.3 Méthode optimisée d’ouverture et de fermeture de fichier . . . . . . . . . . . . . . . . . 60
7.4 Note sur les retours chariots sous Unix et sous Windows . . . . . . . . . . . . . . . . . 61
7.5 Importance des conversions de types avec les fichiers . . . . . . . . . . . . . . . . . . . 62
7.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.6.1 Lecture et saut de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.6.2 Écriture et saut de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.6.3 Structures secondaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.6.4 Spirale (exercice +++) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8 Modules 65
8.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.2 Importation de modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.3 Obtenir de l’aide sur les modules importés . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.4 Modules courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.5 Module sys : passage d’arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.6 Module os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.1 Racine carrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.2 Cosinus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.3 Liste de fichiers dans un répertoire . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.4 Affichage temporisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.5 Séquences aléatoires de chiffres . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.7.6 Séquences aléatoires de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.7.7 Jour de naissance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.7.8 Détermination du nombre pi par la méthode Monte Carlo (exercice +++) . . . 71
9 Fonctions 73
9.1 Principe et généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
9.2 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.3 Passage d’arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.4 Variables locales et variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9.5.1 Fonctions et pythontutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9.5.2 Fonction puissance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.5.3 Fonction pyramide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.5.4 Fonction nombre premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.5.5 Fonction complement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.5.6 Fonction distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.5.7 Fonctions distribution et stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.5.8 Fonction distance à l’origine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.5.9 Fonction aire sous la courbe (exercice +++) . . . . . . . . . . . . . . . . . . . 82