Garder les notes d’un semestre
Une liste Python garde plusieurs valeurs dans l’ordre, et un dictionnaire garde des valeurs retrouvées par un nom. Ce sont les deux structures que l’on utilise le plus souvent.
Un relevé de notes est une liste. Le prix des produits d’une boulangerie est un dictionnaire : on cherche « croissant » et on trouve 1,20 €. Sans eux, il faudrait une variable par note.
À la fin de cette leçon
Remarque
Je peux ranger plusieurs valeurs dans des listes et des dictionnaires.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Liste | plusieurs valeurs rangées dans l’ordre | [12, 15, 9] |
| Indice | la place d’une valeur dans la liste, à partir de 0 | notes[0] |
| Tranche | une partie d’une liste | notes[1:3] |
| Dictionnaire | des valeurs retrouvées par une clé | {"pain": 1.1} |
| Clé | le nom qui permet de retrouver une valeur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une liste garde des valeurs dans l’ordre
On écrit une liste entre crochets, avec des virgules : notes = [12, 15, 9, 18]. Chaque valeur a un indice, sa place. Le premier indice est 0, pas 1.
notes[0] donne 12 et notes[-1] donne la dernière valeur, 18. len(notes) donne le nombre de valeurs, ici 4.
Les indices de [12, 15, 9, 18]
| Écriture | Résultat | Pourquoi |
|---|---|---|
| notes[0] | 12 | la première valeur est à l’indice 0 |
| notes[2] | 9 | la troisième valeur est à l’indice 2 |
| notes[-1] | 18 | -1 compte depuis la fin |
| notes[1:3] | [15, 9] | de l’indice 1 jusqu’avant le 3 |
| len(notes) | 4 | le nombre de valeurs |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire le premier, le dernier et le nombre
python3 -c 'notes = [12, 15, 9]; print(notes[0], notes[-1], len(notes))'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Prendre une tranche de liste
python3 -c 'jours = ["lun", "mar", "mer", "jeu"]; print(jours[1:3])'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup pensent que le premier élément d’une liste est à l’indice 1. Il est à l’indice 0. Une liste de quatre valeurs a les indices 0, 1, 2 et 3 : notes[4] donne une erreur.
Ajouter, lire et parcourir une liste
# Les notes d'un relevé.
notes = [12, 15, 9, 18]
print(notes[0])
print(notes[-1])
print(notes[1:3])
notes.append(14)
print(len(notes))
total = 0
for note in notes:
total = total + note
print(total / len(notes))
# Ajoutez la note 11 avec append puis relancez.
Un dictionnaire retrouve une valeur par sa clé
Un dictionnaire associe une clé à une valeur. On l’écrit entre accolades : prix = {"baguette": 1.1}. On lit prix["baguette"] et on ajoute prix["eclair"] = 2.5.
Le test "tarte" in prix répond vrai ou faux. Une boucle for produit in prix parcourt les clés. Une clé absente donne une erreur : testez avant de lire.
Chercher le prix d’une baguette
python3 -c 'prix = {"pain": 1.2, "lait": 0.9}; print(prix["pain"])'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le catalogue d’une boulangerie
# Le prix de quelques produits d'une boulangerie, en euros.
prix = {"baguette": 1.1, "croissant": 1.2, "tarte": 14.0}
print(prix["croissant"])
prix["eclair"] = 2.5
if "tarte" in prix:
print("La tarte est au catalogue")
for produit in prix:
print(produit, prix[produit])
# Ajoutez un produit de votre choix.
Un dictionnaire sert à compter des mots
Pour compter les mots d’un texte, coupez-le d’abord avec split(), qui rend la liste des mots. Parcourez ensuite cette liste.
Pour chaque mot : s’il est déjà une clé, ajoutez 1 à son compte. Sinon, créez la clé avec le compte 1.
Couper une phrase en mots
python3 -c 'print("une phrase de quatre mots".split())'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Compter les mots d’une phrase
# Compter les mots d'une phrase avec un dictionnaire.
phrase = "le pain le beurre le lait"
mots = phrase.split()
comptes = {}
for mot in mots:
if mot in comptes:
comptes[mot] = comptes[mot] + 1
else:
comptes[mot] = 1
print(comptes)
# Changez la phrase puis relancez.
Pour aller plus loin
Créez le dictionnaire stock = {"baguette": 12, "croissant": 8}. Écrivez une boucle qui retire 1 au stock de chaque produit, puis affiche le nouveau stock.
Ajoutez ensuite un test : si un produit est à 0, affichez « rupture ». Comment éviter l’erreur quand on lit un produit absent ?