Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours de Python

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Cours de Python

https://python.sdv.univ-paris-diderot.fr/

Patrick Fuchs et Pierre Poulain


prénom [point] nom [arobase] univ-paris-diderot [point] fr

version du 7 septembre 2018

Université Paris Diderot-Paris 7, Paris, France

Ce document est sous licence


Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 France
(CC BY-SA 3.0 FR)
https://creativecommons.org/licenses/by-sa/3.0/fr/
2 Cours de Python / Université Paris Diderot - Paris 7 / UFR Sciences du Vivant
Table des matières

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

4 Cours de Python / Université Paris Diderot - Paris 7 / UFR Sciences du Vivant


Table des matières Table des matières

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

10 Plus sur les chaînes de caractères 85


10.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.2 Chaînes de caractères et listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.3 Caractères spéciaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Cours de Python / Université Paris Diderot - Paris 7 / UFR Sciences du Vivant 5


Table des matières Table des matières

10.4 Méthodes associées aux chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . 86


10.5 Extraction de valeurs numériques d’une chaîne de caractères . . . . . . . . . . . . . . . 88
10.6 Conversion d’une liste de chaînes de caractères en une chaîne de caractères . . . . . . 88
10.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
10.7.1 Parcours d’une liste de chaînes de caractères . . . . . . . . . . . . . . . . . . . 90
10.7.2 Fréquence des bases dans une séquence nucléique . . . . . . . . . . . . . . . . . 90
10.7.3 Conversion des acides aminés du code à trois lettres au code à une lettre . . . . 90
10.7.4 Distance de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.7.5 Palindrome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.7.6 Mot composable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.7.7 Alphabet et pangramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.7.8 Affichage des carbones alpha d’une structure de protéine . . . . . . . . . . . . . 92
10.7.9 Calcul des distances entre les carbones alpha consécutifs d’une structure de protéine 92

11 Plus sur les listes 95


11.1 Propriétés des listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.2 Test d’appartenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11.3 Copie de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.4.1 Tri de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.4.2 Séquence nucléique aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.4.3 Séquence nucléique complémentaire . . . . . . . . . . . . . . . . . . . . . . . . 99
11.4.4 Doublons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
11.4.5 Séquence nucléique aléatoire 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
11.4.6 Triangle de Pascal (Exercice +++) . . . . . . . . . . . . . . . . . . . . . . . . . 100

12 Plus sur les fonctions 101


12.1 Appel d’une fonction dans une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.2 Fonctions récursives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
12.3 Portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
12.4 Portée des listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
12.5 Règle LGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12.6 Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
12.7.1 Prédire la sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

13 Dictionnaires et tuples 109


13.1 Dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.1.1 Itération sur les clefs pour obtenir les valeurs . . . . . . . . . . . . . . . . . . . 109
13.1.2 Méthodes keys() et values() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.1.3 Existence d’une clef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.1.4 Liste de dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.2 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
13.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.1 Composition en acides aminés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.2 Mots de 2 lettres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.3 Mots de 3 et 4 lettres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.4 Mots de 2 lettres de Saccharomyces cerevisiae . . . . . . . . . . . . . . . . . . . 112
13.3.5 Mots de n lettres et fichiers genbank . . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.6 Mots de n lettres du génome d’E. Coli . . . . . . . . . . . . . . . . . . . . . . . 112
13.3.7 Dictionnaire et carbone alpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
13.3.8 Dictionnaire et PDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
13.3.9 Barycentre d’une protéine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

6 Cours de Python / Université Paris Diderot - Paris 7 / UFR Sciences du Vivant

Vous aimerez peut-être aussi