ParcoursOuvrir l'appli

La boucle `for` : répéter pour chaque élément

Python, listes et boucles · 50 min

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)

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 += 1

Dans 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 = note

Dans 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