Une boucle for ne sert pas seulement à répéter N fois la même chose. Sa vraie force, c'est de parcourir une collection d'éléments — une liste de prénoms, de prix, de notes — et de traiter chacun à tour de rôle. C'est ce qu'on apprend ici.
Dans le cours précédent, on a vu for i in range(N) pour répéter N fois la même action. Mais quand chaque tour de boucle traite un élément différent — un prénom, un prix, un nom d'animal — il faut une liste. C'est l'outil de stockage le plus basique de Python, et il marche main dans la main avec for.
À la fin de ce cours, tu seras capable de :
[ ].for.Reprends l'idée du cours précédent. On voulait afficher des prénoms d'élèves :
print("Alice")
print("Bob")
print("Charlie")
print("Diane")
print("Eli")
Avec ce qu'on a vu jusqu'ici (for + range), on ne sait pas faire : for i in range(5) répèterait 5 fois la même ligne. Mais nous, on veut 5 lignes différentes.
Il manque un endroit où stocker les cinq prénoms à l'avance. C'est exactement le rôle d'une liste.
Une liste se crée avec des crochets [ ] et des éléments séparés par des virgules :
prenoms = ["Alice", "Bob", "Charlie", "Diane", "Eli"]
Quelques détails à remarquer :
prenoms. C'est une convention universelle en Python (et dans la plupart des langages), parce que la variable contient plusieurs valeurs.prenoms[0] vaut "Alice", prenoms[1] vaut "Bob", etc.💡 Vocabulaire : un élément d'une liste s'appelle aussi un item (🇬🇧 item). On dit « parcourir les items » ou « traiter chaque item ».
forC'est ici que tout se met en place. Pour traiter chaque prénom de la liste à tour de rôle :
prenoms = ["Alice", "Bob", "Charlie", "Diane", "Eli"]
for prenom in prenoms:
print(prenom)
Résultat :
Alice
Bob
Charlie
Diane
Eli
Exactement ce qu'on voulait — et la boucle s'adapte automatiquement au nombre d'éléments. Si tu ajoutes 195 prénoms à la liste, la boucle s'exécute 200 fois sans rien changer d'autre.
Regarde bien les deux noms de variables dans la boucle :
for prenom in prenoms:
# └──┬──┘ └──┬──┘
# singulier pluriel
# (un item) (la collection)
C'est la convention Python pour les boucles for sur listes. Elle se lit en français naturel :
« Pour chaque prénom dans la liste des prénoms, fais… »
Autres exemples :
| Liste (pluriel) | Variable de boucle (singulier) | Lecture |
|---|---|---|
animaux |
animal |
« Pour chaque animal dans animaux » |
prix |
prix_unitaire (ou p) |
« Pour chaque prix dans prix » |
notes |
note |
« Pour chaque note dans notes » |
eleves |
eleve |
« Pour chaque élève dans élèves » |
voitures |
voiture |
« Pour chaque voiture dans voitures » |
🧠 Pourquoi cette convention ? Un lecteur qui découvre ton code doit pouvoir comprendre en deux secondes la nature de chaque variable.
for animal in animauxest instantanément clair.for x in liste1est obscur. Adopte le pluriel/singulier dès le début, c'est gratuit et ça change la lisibilité.
À l'intérieur de la boucle, tu peux faire tout ce que tu veux avec l'élément courant. Voici les usages les plus fréquents.
C'est l'exemple qu'on vient de voir :
animaux = ["Chat", "Lapin", "Capibara", "Dragon de Komodo"]
for animal in animaux:
print(animal)
animaux = ["Chat", "Lapin", "Capibara"]
# On utilise une f-string pour entourer le nom de texte
for animal in animaux:
print(f"🐾 {animal} a été ajouté au zoo.")
Résultat :
🐾 Chat a été ajouté au zoo.
🐾 Lapin a été ajouté au zoo.
🐾 Capibara a été ajouté au zoo.
prenoms = ["alice", "bob", "charlie"]
# La méthode .upper() met une chaîne en majuscules
for prenom in prenoms:
print(prenom.upper())
Résultat :
ALICE
BOB
CHARLIE
Tu peux combiner for avec un if pour ne traiter qu'une partie des éléments :
notes = [12, 8, 17, 4, 15, 19, 11]
# On affiche uniquement les notes en échec (< 10)
for note in notes:
if note < 10:
print(f"⚠️ Note insuffisante : {note}/20")
Résultat :
⚠️ Note insuffisante : 8/20
⚠️ Note insuffisante : 4/20
💡 Tu remarques ? La boucle parcourt toutes les notes, mais l'
iffiltre celles qu'on veut afficher. C'est la combinaison la plus utilisée en pratique.
Les listes ne sont pas limitées aux chaînes. Tu peux y mettre des nombres, des booléens, des choses mélangées.
prix = [2.50, 4.99, 1.20, 8.75, 3.00]
# Affichage formaté
for p in prix:
print(f"{p:.2f} €")
Résultat :
2.50 €
4.99 €
1.20 €
8.75 €
3.00 €
ℹ️ Le
:.2fdans la f-string force 2 chiffres après la virgule. Très pratique pour les montants.
reponses = [True, False, True, True, False]
for reponse in reponses:
if reponse:
print("✔ Correct")
else:
print("✗ Faux")
Python autorise des listes avec des types mélangés :
truc = ["Alice", 17, True, 3.14]
for element in truc:
print(element)
Ça fonctionne, mais évite-le : une liste qui mélange tout, c'est un signe qu'on aurait dû utiliser une autre structure (un dictionnaire, par exemple — on verra plus tard).
🧠 Bonne pratique : une liste = une collection d'éléments du même type, qui représentent la même chose.
Énoncé. Tu as la liste des courses à faire :
courses = ["pain", "lait", "œufs", "fromage", "tomates"]
Écris un programme qui affiche :
À acheter :
- pain
- lait
- œufs
- fromage
- tomates
Total : 5 articles
Trois choses à faire :
À acheter :).-.Le point 2 est le cœur de la boucle.
courses = ["pain", "lait", "œufs", "fromage", "tomates"]
for course in courses:
print(f"- {course}")
Note le pluriel/singulier : for course in courses.
Résultat à ce stade :
- pain
- lait
- œufs
- fromage
- tomates
L'en-tête se met avant la boucle, le total après. La fonction len() donne la taille d'une liste.
courses = ["pain", "lait", "œufs", "fromage", "tomates"]
print("À acheter :")
for course in courses:
print(f"- {course}")
print(f"\nTotal : {len(courses)} articles")
Le \n au début de la dernière f-string ajoute une ligne vide avant le total.
Résultat final :
À acheter :
- pain
- lait
- œufs
- fromage
- tomates
Total : 5 articles
🧠 Le squelette à retenir : en-tête → boucle → bilan. C'est un pattern qu'on retrouve partout (factures, bulletins, statistiques…).
Tu as la liste suivante :
animaux = ["Chat", "Lapin", "Capibara", "Lion", "Dragon de Komodo"]
Écris un programme qui affiche pour chaque animal :
🐾 Chat fait partie du zoo. (4 lettres)
🐾 Lapin fait partie du zoo. (5 lettres)
🐾 Capibara fait partie du zoo. (8 lettres)
🐾 Lion fait partie du zoo. (4 lettres)
🐾 Dragon de Komodo fait partie du zoo. (16 lettres)
Indice : len(animal) te donne le nombre de caractères du nom (espaces compris).
Pour la liste suivante :
notes = [11, 7, 15, 18, 4, 13, 9, 16]
Affiche uniquement les notes ≥ 10, dans ce format :
✔ 11/20
✔ 15/20
✔ 18/20
✔ 13/20
✔ 16/20
Indice : combine for et un if.
À partir des listes suivantes (qu'on suppose alignées dans le même ordre — produit i ↔ prix i) :
produits = ["Pain", "Lait", "Œufs", "Fromage"]
prix = [1.50, 1.20, 2.80, 4.99]
Écris un programme qui affiche :
- Pain : 1.50 €
- Lait : 1.20 €
- Œufs : 2.80 €
- Fromage : 4.99 €
Indice : ici on a deux listes à parcourir en parallèle. Utilise range(len(produits)) et accède aux deux listes par leur index — ou découvre seul la fonction zip() si tu es curieux.
[ ] : prenoms = ["Alice", "Bob"].for parcourt tous les éléments, un par un, dans l'ordre.animaux), variable d'itération au singulier (animal).len(liste) te donne le nombre d'éléments.Tu sais maintenant parcourir une liste. Une application directe très fréquente : afficher un menu de sélection à l'utilisateur — par exemple les choix d'un jeu, les rayons d'un magasin, les options d'une appli. C'est l'objet du cours suivant, qui montre la progression menu manuel → menu avec une liste → menu numéroté avec enumerate().