La boucle `for` : répéter pour chaque élément
Répéter sans recopier
Tu veux afficher chaque note d'une liste. Sans boucle :
print(notes[0])
print(notes[1])
print(notes[2])
# ... et s'il y en a 500 ?
La boucle for (« pour ») répète un bloc pour chaque élément d'une liste :
notes = [12, 15, 9]
for note in notes:
print(note)
print("Fini")
12
15
9
Fini
Lis-la comme une phrase : « pour chaque note dans notes, affiche la note ».
Ce qui se passe, pas à pas
for note in notes:
print(note)
foretinsont des mots-clés ;noteest la variable de boucle : à chaque itération, Python y range automatiquement l'élément suivant de la liste. Tu choisis son nom librement ;- le
:et le bloc indenté, comme pourif.
Déroulé avec notes = [12, 15, 9] :
| Itération | note vaut |
Ce qui s'affiche |
|---|---|---|
| 1 | 12 | 12 |
| 2 | 15 | 15 |
| 3 | 9 | 9 |
| (fin de la liste) | on sort de la boucle, on passe à la suite |
Tout ce qui est indenté sous le for est répété. Ce qui revient à gauche s'exécute une seule fois, après la boucle. La même règle des 4 espaces que pour if.
Une boucle for marche aussi sur un texte, caractère par caractère : for lettre in "Douala":.
Observe la boucle
Lance, puis ajoute un élément à la liste et relance : la boucle s'adapte toute seule. Essaie aussi de décaler le dernier print de 4 espaces vers la droite, et observe la différence.
eleves = ["Awa", "Boris", "Chantal"]
for eleve in eleves:
print(f"Bonjour {eleve} !")
print("Tout le monde a été salué.")
Le motif de l'accumulateur
Le vrai pouvoir des boucles : calculer quelque chose sur toute une liste. Le motif le plus important s'appelle l'accumulateur.
Exemple : la somme des notes.
notes = [12, 15, 9]
total = 0 # 1. avant la boucle : on part de zéro
for note in notes:
total += note # 2. dans la boucle : on ajoute chaque note
print(total) # 3. après la boucle : le résultat, 36
| Itération | note |
total après |
|---|---|---|
| départ | 0 | |
| 1 | 12 | 12 |
| 2 | 15 | 27 |
| 3 | 9 | 36 |
Le même motif sert à compter (compteur += 1 quand une condition est vraie), à construire une liste (resultat.append(...)), à trouver le maximum...
Exercice : Afficher chaque produit
Avec une boucle for, affiche chaque produit de la liste sur une ligne, précédé d'un tiret et d'un espace :
- riz
- huile
- savon
Voir une solution
produits = ["riz", "huile", "savon"] # donné
for produit in produits:
print(f"- {produit}")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Le total des ventes
Calcule dans total la somme des ventes de la semaine avec une boucle et un accumulateur (pas avec sum, que tu découvriras plus tard). Puis affiche-le.
Voir une solution
ventes = [12500, 8000, 15300, 9800, 21000] # donné
total = 0
for vente in ventes:
total += vente
print(total)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Compter les admis
Compte dans admis combien d'élèves ont au moins 10. Un accumulateur qui démarre à 0, et un if dans la boucle.
Voir une solution
notes = [12, 8, 15, 9.5, 10, 17] # donné
admis = 0
for note in notes:
if note >= 10:
admis += 1Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : La meilleure note
Trouve dans meilleure la note la plus haute, sans utiliser max.
L'idée : on suppose d'abord que la meilleure est la première. Puis on regarde chaque note : si elle est plus grande que la meilleure trouvée jusque-là, elle devient la nouvelle meilleure.
Voir une solution
notes = [12, 8, 15, 9, 17, 11] # donné
meilleure = notes[0]
for note in notes:
if note > meilleure:
meilleure = noteDans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Construire une nouvelle liste
Les prix sont en FCFA. Construis une nouvelle liste prix_ttc qui contient chaque prix augmenté de la TVA de 19,25 %, arrondi à l'entier (round).
Motif : une liste vide avant la boucle, et un append à chaque tour.
Voir une solution
prix_ht = [1000, 2500, 400] # donné
prix_ttc = []
for prix in prix_ht:
prix_ttc.append(round(prix * 1.1925))Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare : le total qui oublie
Ce programme devrait afficher 36 une seule fois. Il affiche autre chose. Trouve les deux erreurs d'accumulateur.
Voir une solution
notes = [12, 15, 9] # donné
total = 0
for note in notes:
total += note
print(total)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice