Aide-mémoire : les boucles

Python - écrire une fois, exécuter autant qu'on veut (Semaine 1 · Jour 3)

for … in range() parcours d'une collection while (tant que) boucle + condition break / continue accumulateur

Pourquoi une boucle : écrire une fois plutôt que se répéter

La même sortie à l'écran, deux écritures. À gauche on recopie ; à droite on écrit la ligne une seule fois et c'est range qui compte les tours. Plus il y a de répétitions, plus l'écart se creuse.

À la main · 5 lignes recopiées
print("Je ne répéterai plus") print("Je ne répéterai plus") print("Je ne répéterai plus") print("Je ne répéterai plus") print("Je ne répéterai plus")
Avec une boucle · 2 lignes
for ligne in range(1, 6): print("Je ne répéterai plus")
▶ Revoir cette comparaison dans le diaporama (slide 4)

Comparer les syntaxes de boucle

Toutes répètent un bloc indenté sous un :. Ce qui change, c'est combien de fois et sur quoi on tourne.

Répéter N fois

for … in range(…)

for mouton in range(1, 6): print(mouton, "moutons")
1 moutons 2 moutons 3 moutons … jusqu'à 5

Quand on connaît le nombre de tours. Le compteur prend 1, 2, 3, 4, 5 et on peut l'afficher devant le texte.

Régler le compteur

range(début, fin, pas)

On écritLe compteur prend
range(5)0 1 2 3 4
range(1, 6)1 2 3 4 5
range(0, 10, 2)0 2 4 6 8

Sans premier nombre, on part de 0. La borne de fin est exclue. Le 3e nombre est le pas.

Parcourir une collection

for … in liste / chaîne

villes = ["Rimouski", "Matane", "Gaspé"] for ville in villes: print(ville)
Rimouski Matane Gaspé

Pas besoin de compteur ni d'indice : la variable prend chaque élément directement (aussi sur une chaîne, caractère par caractère).

Tant qu'une condition tient

while condition

compteur = 1 while compteur <= 5: print(compteur) compteur = compteur + 1

Quand on ne sait pas d'avance le nombre de tours. On répète tant que la condition (vue au Jour 2) est vraie. ⚠️ Il faut faire avancer le compteur, sinon boucle infinie.

Boucle + condition

for … in … : if …

for nombre in range(1, 7): if nombre % 2 == 0: print(nombre, "est pair")
2 est pair 4 est pair 6 est pair

On combine boucle et if : agir seulement sur certains tours. Le if est indenté dans la boucle (deux niveaux).

Sortir ou sauter un tour

break · continue

for nombre in range(1, 10): if nombre == 5: break # on quitte la boucle print(nombre)
1 2 3 4 (s'arrête avant 5)

break = quitter la boucle tout de suite. continue = sauter au tour suivant sans finir le bloc.

Accumuler un résultat

total = total + …

total = 0 for note in [85, 90, 78]: total = total + note print(total)
253

Le grand classique : une variable en dehors de la boucle se remplit tour après tour (somme, compte, plus grand…).

Les pièges qui font perdre du temps

Quatre erreurs qui reviennent tout le temps en début de session.

La borne de fin est exclue

range(1, 5) # 1 2 3 4 (PAS 5 !)

Pour aller jusqu'à 5 inclus, il faut écrire range(1, 6).

Le compteur qui n'avance pas (while infini)

while compteur <= 5: print(compteur) # compteur n'augmente jamais → ∞

Dans un while, pense toujours à modifier la variable testée, sinon ça ne s'arrête jamais.

Oublier le retrait (le bloc)

for tour in range(3): print(tour) # IndentationError

Tout ce qui doit se répéter est indenté sous le : (4 espaces, jamais de mélange tab/espaces).

Confondre = et ==

while compteur = 5: # ✗ erreur while compteur == 5: # ✓ on COMPARE

Dans une condition de boucle on compare (==), on n'affecte pas (=).