Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
4. Supports
● google.com
● Cours de Python par
Patrick Fuchs et
Pierre Poulain
● Slides/notes de
cours
● Fiches de TD/TP
5. Le langage Python
➢ Langage de haut niveau (a l'opposé de C qui est
de bas niveau)
➢ Traduction en code binaire complexe ⇒ temps
➢ Facile d’écrire un programme python ⇒ temps R
➢ Faible probabilité d’y faire des fautes
➢ Maintenance grandement facilitées
➢ Portabilité garantie
7. Compilation et interprétation
L’interprétation :
● Aucun programme objet n’est généré
● Le logiciel interpréteur doit être utilisé chaque fois que l’on veut faire
fonctionner le programme
8. Compilation et interprétation
Avantages et Inconvénients
❖ l'interprétation est idéale lorsque l’on est en phase
d’apprentissage du langage, ou en cours d’expérimentation
❖ Mais lorsqu’un projet comporte des fonctionnalités
complexes qui doivent s’exécuter rapidement, la
compilation est préférable
9. Quand est-il du langage Python ?
❖ Le fait de disposer en permanence d’un interpréteur permet de tester
immédiatement n’importe quel petit morceau de programme.
❖ L’interprétation du bytecode n’est pas aussi rapide que celle d’un
véritable code binaire, mais elle est très satisfaisante pour de nombreux
programmes
❖ Le bytecode est portable.
17. Noms de variables et mots réservés
Variable : Zone de la mémoire de l’ordinateur dans laquelle une valeur est stockée.
Quelques règles pour les noms de variables sous Python
➢ Séquence de lettres (a → z , A → Z) et de chiffres (0 → 9),
➢ Toujours commencer par une lettre.
➢ Lettres accentuées, cédilles, espaces, caractères spéciaux ($, #, @,
etc.) sont interdits, à l’exception du caractère _ (souligné).
➢ La casse est significative
➢ Exemple : Rackel, rackel et RACKEL sont des variables différentes.
21. Afficher la valeur d’une variable avec print()
Exercice :
1. Testez les lignes d’instructions suivantes. Décrivez ce qui se
passe :
>>> r , pi , pi_r = 12, 3.14159, int(3.14159)
>>> s = pi * r**2
>>> JeSuis = ("pa"+"la")*2
>>> print(s)
>>> print(type(r), type(pi), type(s), type(JeSuis))
2. Quelle est, à votre avis, l’utilité de la fonction type() ?
3. Écrivez des lignes de code python nécessaires pour échanger les
valeurs des variables r et s.
22. Typage des variables Python
➢ Pas nécessaire de définir le type des variables avant utilisation
➢ Une valeur assignée à un nom de variable le crée
automatiquement avec le type qui correspond au mieux à la
valeur fournie .
⇒ Le typage des variables sous Python est dynamique , par
opposition au typage statique qui est de règle par exemple
en C.
25. Structures de contrôle
➢ Groupes d'instructions qui déterminent l'ordre dans lequel
les actions sont effectuées.
➢ Regroupable en trois catégories :
● les séquences d’instructions,
● les sélections,
● les répétitions.
26. Séquence d’instructions
❖ Désigner une série d'instructions qui se suivent.
❖ Exécution normale de la première à la dernière, sauf en
cas d’instruction conditionnelle.
30. Point sur les opérateurs
x == y # x est égal à y
x != y # x est différent de y
x > y # x est plus grand que y
x < y # x est plus petit que y
x >= y # x est plus grand que, ou égal à y
x <= y # x est plus petit que, ou égal à y
opérateurs de comparaison
opérateurs logique
AND # “ET logique”
OR # “OU Logique”
33. Quelques mots sur la syntaxe Python
★ Les limites des instructions et des blocs sont définies par la mise en
page
★ Un commentaire Python commence toujours par le caractère spécial #
★ Python n’utilise pas de symboles délimiteurs pour ses blocs
d’instructions
★ Instruction composée = en-tête, double point, bloc d’instructions
indentées
★ Plusieurs fonctions prédéfinies sur python : type(), int(),
print() …
36. Instructions répétitives
Exercices
1. Écrivez un programme qui affiche les 20 premiers termes de la table de
multiplication par 7.
2. Écrivez un programme qui affiche une table de conversion de sommes
d’argent exprimées en euros, en FCFA. La progression des sommes de
la table sera «géométrique», comme dans l’exemple ci-dessous :
1 euro(s) = 652,67 FCFA
2 euro(s) = 1305.34 FCFA
4 euro(s) = 2610.68 FCFA
8 euro(s) = 5221.36 FCFA
etc. (s’arrêter à 16384 euros.)
3. Écrivez un programme qui affiche une suite de 12 nombres dont chaque
terme soit égal au triple du terme précédent.
37. Point sur la création de script
❏ Choisir un éditeur de texte quelconque (Kate , Gedit , Geany ,
Scite ... sous Linux, Edit sous MS - DOS , Wordpad sous
Windows , ou encore l’éditeur incorporé dans IDLE ou
PythonWin )
❏ Ecrire un script et sauvegarder avec l’extension .py
❏ Pour tester le programme, lancer l’interpréteur Python en lui
fournissant (comme argument) le nom du fichier qui contient le
script.
39. Instructions répétitives
break et continue
Permettent de modifier le comportement d’une boucle (for ou while) avec un test.
L’instruction break stoppe la boucle.
40. Instructions répétitives
break et continue
Permettent de modifier le comportement d’une boucle (for ou while) avec un test.
L’instruction continue saute à l’itération suivante, sans exécuter la suite du
bloc d’instructions de la boucle.
42. Structures de données
Les listes
Une liste (souvent appelée tableau dans d’autres langages de programmation)
est une séquence modifiable de données ordonnées. Cela signifie que chaque
élément de la liste est associé à une position (un index). Le premier élément
d’une liste possède l’index 0 et le dernier élément possède l’index n - 1 pour
une liste contenant n éléments.
Creation de listes
43. Structures de données
Creation de listes
Accéder aux éléments
NB: On peut utiliser un index négatif. Cela
signifie que l’on souhaite partir de la fin de
la liste. Ainsi le dernier élément d’une liste
est aussi accessible avec l’index -1.
44. Structures de données
Operations sur les listes
Tout comme les chaînes de caractères, les listes supportent l’opérateur +
de concaténation, ainsi que l’opérateur * pour la duplication :
L’opérateur “+” est très pratique pour concaténer deux listes. Vous pouvez aussi
utiliser la méthode .append() lorsque vous souhaitez ajouter un seul élément à
la fin d’une liste.
45. Tranche de liste
Un autre avantage des listes est la possibilité de sélectionner une partie
d’une liste en utilisant un indiçage construit sur le modèle [m:n+1] pour
récupérer tous les éléments entre m et n+1 (de l’élément m inclus à l’élément
n+1 exclu). On dit alors qu’on récupère une tranche de la liste, par exemple :
46. Tranche de liste
On peut aussi préciser le pas en ajoutant un symbole deux-points
supplémentaire et en indiquant le pas par un entier selon le modèle :
liste[début:fin:pas]
47. Structures de données
Fonction len()
Les fonctions range() et list()
range() est une fonction spéciale en Python qui génère des nombres
entiers compris dans un intervalle. Lorsqu’elle est utilisée en combinaison
avec la fonction list(), on obtient une liste d’entiers. Par exemple :
48. Structures de données
Les fonctions range() et list()
Dans l’exemple ci-dessus, la fonction range() a pris un argument, mais
elle peut également prendre deux ou trois arguments :
Exercice : Répondez à la question suivante en une seule commande. Combien y
a-t-il de nombres pairs dans l’intervalle [2, 10000] inclus ?
49. Dictionnaires
Les dictionnaires sont des collections non ordonnées d’objets, c’est-à-dire
qu’il n’y a pas de notion d’ordre (i.e. pas d’indice). On accède aux valeurs
d’un dictionnaire par des clés. Regardez l’exemple suivant :
On peut aussi initialiser toutes les clés et les valeurs d’un dictionnaire en
une seule opération :
51. Dictionnaires
Les mentions dict_keys et dict_values indiquent que nous avons à
faire à des objets un peu particuliers. Ils ne sont pas indexables
(ani2.keys()[0] renverra une erreur). Si besoin, nous pouvons les
transformer en liste avec la fonction list() :
53. Dictionnaires
Existence d’une clé
Pour vérifier si une clé existe dans un dictionnaire, on peut utiliser le test
d’appartenance avec l’instruction in qui renvoie un booléen :
54. Dictionnaires
Liste de dictionnaires
En créant une liste de dictionnaires qui possèdent les mêmes clés, on
obtient une structure qui ressemble à une base de données :
55. Dictionnaires
Fonction dict()
La fonction dict() va convertir l’argument qui lui est passé en
dictionnaire. Toutefois, l’argument qui lui est passé doit avoir une forme
particulière : un objet séquentiel contenant d’autres objets séquentiels
de 2 éléments. Par exemple, une liste de listes de 2 éléments :
56. Tuples
Définition
Les tuples (« n-uplets » en français) correspondent aux listes à la
différence qu’ils sont non modifiables. Pratiquement, ils utilisent les
parenthèses au lieu des crochets :
57. Tuples
L’affectation et l’indiçage fonctionnent comme avec les listes. Mais si on
essaie de modifier un des éléments du tuple, Python renvoie un message
d’erreur. Si vous voulez ajouter un élément (ou le modifier), vous devez
créer un autre tuple :
Pour utiliser un tuple d’un seul élément, vous devez utiliser une syntaxe avec
une virgule (element,), ceci pour éviter une ambiguïté avec une simple
expression.
58. Les ensembles
Un ensemble en Python (Python set) est une collection non ordonnée et
non indexée. En Python, les ensembles sont écrits avec des accolades
{....}.
60. Les fonctions
Une fonction est un bloc de code avec un nom. Elle correspond à un
ensemble d’instructions créées pour effectuer une tâche précise,
regroupées ensemble et qu’on va pouvoir exécuter autant de fois qu’on le
souhaite en “l’appelant” via son nom.
Définition
61. Les fonctions
Pour définir une fonction, Python utilise le mot-clé def. Si on souhaite que
la fonction renvoie quelque chose, il faut par la suite utiliser le mot-clé
return. Par exemple :
Création d’une fonction
Notez que la syntaxe de def utilise les
deux-points comme les boucles for
et while ainsi que les tests if, un
bloc d’instructions est donc attendu.
L’indentation de ce bloc d’instructions
(qu’on appelle le corps de la fonction)
est obligatoire.
62. Les fonctions
Pour définir une fonction, Python utilise le mot-clé def. Si on souhaite que
la fonction renvoie quelque chose, il faut par la suite utiliser le mot-clé
return. Par exemple :
Création d’une fonction
Notez que la syntaxe de def utilise les
deux-points comme les boucles for
et while ainsi que les tests if, un
bloc d’instructions est donc attendu.
L’indentation de ce bloc d’instructions
(qu’on appelle le corps de la fonction)
est obligatoire.
66. Lecture dans un fichier
Méthode .readlines()
Créez un fichier dans un éditeur de texte que vous enregistrerez dans votre
répertoire courant avec le nom matiere.txt et le contenu suivant :
67. Lecture dans un fichier
Méthode .readlines()
Testez le code suivant dans l’interpréteur Python :
68. Lecture dans un fichier
Méthode .readlines()
Remarque :
➢ open() ouvre le fichier matiere.txt en lecture seule
➢ open("matiere.txt", "r") suppose que le fichier matiere.txt est dans le
répertoire depuis lequel l’interpréteur Python a été lancé. Si ce n’est pas le cas, il
faut préciser le chemin d’accès au fichier. Par exemple,
/home/pierre/matiere.txt pour Linux ou Mac OS X ou
C:Userspierrematiere.txt pour Windows.
➢ Nous avons utilisé la syntaxe objet.méthode(). Ici la méthode .readlines()
agit sur l’objet filin en déplaçant le curseur de lecture du début à la fin du fichier,
puis elle renvoie une liste contenant toutes les lignes du fichier.
➢ .close() ferme le fichier.
69. Lecture dans un fichier : Méthode .readlines()
Testez ce nouveau code :
70. Lecture dans un fichier : Méthode .readlines()
Remarques
➢ Chaque élément de la liste lignes est une chaîne de caractères.
➢ Chaque élément de la liste lignes se termine par le caractère n. Ce
caractère un peu particulier correspond au « saut de ligne 1 » qui permet de
passer d’une ligne à la suivante. Ceci est codé par un caractère spécial que
l’on représente par n. Vous pourrez parfois rencontrer également la
notation octale 012.
➢ Par défaut, l’instruction print() affiche quelque chose puis revient à la
ligne. Ce retour à la ligne dû à print() se cumule alors avec celui de la fin
de ligne (n) de chaque ligne du fichier et donne l’impression qu’une ligne
est sautée à chaque fois.
71. Lecture dans un fichier
le mot-clé with
Il permet d’ouvrir et de fermer un fichier de manière efficace. Si pour une raison
ou une autre l’ouverture ou la lecture du fichier conduit à une erreur, l’utilisation
de with garantit la bonne fermeture du fichier.
Une fois sorti du bloc d’indentation de l’instruction with, Python fermera automatiquement le fichier. Vous n’avez donc plus
besoin d’utiliser la méthode .close().
72. Lecture dans un fichier
Méthode .read()
la méthode .read() lit tout le contenu d'un fichier et renvoie une chaîne de
caractères unique.
73. Lecture dans un fichier
Méthode .readline()
La méthode .readline() (sans s à la fin) lit une ligne d’un fichier et la
renvoie sous forme de chaîne de caractères. À chaque nouvel appel de
.readline(), la ligne suivante est renvoyée. Associée à la boucle while, cette
méthode permet de lire un fichier ligne par ligne.
75. Écriture dans un fichier
Écriture dans un fichier
❏ .write() s’applique sur l’objet filout.
❏ Notez qu’à chaque utilisation de la méthode .write(), celle-ci nous affiche le nombre
d’octets (équivalent au nombre de caractères) écrits dans le fichier.
❏ Valable uniquement dans l’interpréteur,
76. Écriture dans un fichier
Écriture dans un fichier
❏ .write() s’applique sur l’objet filout.
❏ Notez qu’à chaque utilisation de la méthode .write(), celle-ci nous affiche le nombre
d’octets (équivalent au nombre de caractères) écrits dans le fichier.
❏ Valable uniquement dans l’interpréteur,
❏ Si nous ouvrons le fichier absent.txt avec un éditeur de texte, voici ce que nous
obtenons :
77. Écriture dans un fichier
Amelioration (Ajout du caractere fin de ligne n )
78. Écriture dans un fichier
Ouvrir plusieurs fichiers avec l’instruction with
Remarque : Les nombres dans un fichier sont considérés comme
des chaînes de caractères par la méthode .readlines(). Par
conséquent, il faut les convertir (en entier ou en float) si on veut y
effectuer des opérations numériques.
79. Exercices :
1- Le fichier notes.txt contient les notes obtenues par des étudiants pour le cours de
Python. Chaque ligne du fichier ne contient qu'une note.
Téléchargez le fichier notes.txt et enregistrez-le dans votre répertoire de travail.
Créez un script Python qui lit chaque ligne de ce fichier, extrait les notes sous forme de
float et les stocke dans une liste.
Terminez le script en calculant et affichant la moyenne des notes avec deux décimales.
2 - Créez un script Python qui lit chaque ligne de ce fichier, extrait les notes sous forme de
float et les stocke dans une liste.
Le script réécrira ensuite les notes dans le fichier notes2.txt avec une note par ligne
suivie de « recalé » si la note est inférieure à 10 et « admis » si la note est supérieure ou
égale à 10. Toutes les notes seront écrites avec une décimale.