Boucles For et While
Répétez des actions sur des séquences et jusqu'à ce que des conditions changent.
- Itérer sur des listes, des chaînes et des ranges avec des boucles for
- Utiliser les boucles while pour une répétition basée sur des conditions
- Contrôler le flux des boucles avec break, continue et pass
- Éviter les boucles infinies
Les deux machines qui répètent
Écrivez un programme pour additionner les cent premiers entiers et vos mains s’engourdissent. Les mathématiciens ont abstrait la répétition en un symbole bien avant l’existence des ordinateurs :
Le signe est une instruction de répéter. Une boucle est le de l’ordinateur, et Python scinde l’idée en deux machines pour deux sortes de répétition. for répète sur une séquence connue. while répète jusqu’à ce qu’une condition cesse d’être vraie.
For : une répétition sur une séquence
Une boucle for visite chaque élément d’une séquence, un par tour :
for fruit in ["apple", "banana", "cherry"]:
print(fruit)
# apple
# banana
# cherryLisez-la comme elle s’exécute : « pour chaque fruit dans la liste, fais ceci. » La variable de boucle, fruit, prend une nouvelle valeur à chaque tour jusqu’à épuiser la liste.
Les chaînes sont aussi des séquences, les éléments sont des caractères :
for letter in "Python":
print(letter)Puisqu’un caractère est un élément unique, la mathématique et la machine s’accordent : itérer sur une chaîne de longueur exécute exactement tours.
La séquence numérique : range
La plupart des sommes portent sur des nombres, donc Python fournit range, une séquence que vous pouvez parcourir à pas :
for n in range(5):
print(n) # 0 1 2 3 4range(5) produit la progression arithmétique , comme l’ensemble des indices de . Deux arguments de plus lui donnent la forme voulue : range(start, stop, step) marche depuis start, par pas de step, s’arrêtant avant stop :
for n in range(10, 0, -2):
print(n) # 10 8 6 4 2La règle d’arrêt mérite un énoncé exact : voyage tant que (ou avec un pas négatif), comme un intervalle semi-ouvert .
While : une répétition jusqu’à une condition
Certaines tâches ne peuvent pas énumérer leurs tours à l’avance, on continue jusqu’à ce qu’une condition bascule. L’approximation de Newton est le prototype : on raffine jusqu’à ce que le changement tombe sous une tolérance. C’est une boucle while :
count = 0
while count < 5:
print(count)
count += 1
# 0 1 2 3 4La condition est en haut et se revérifie à chaque tour. Assurez-vous qu’elle finisse par devenir False, si rien dans le corps ne change les variables que la condition lit, la boucle ne finit jamais. Une somme qui se doit de terminer s’écrit en for ; une recherche qui ne finit qu’en trouvant sa réponse s’écrit en while.
Break et continue
Deux mots-clés ajustent le flux depuis l’intérieur.
break abandonne la boucle immédiatement, quel que soit le nombre de tours restants :
for n in [1, 3, 4, 7, 8]:
if n % 2 == 0:
print(f"Found even: {n}")
breakcontinue n’abandonne que ce tour, sautant au suivant :
for n in range(6):
if n % 2 != 0:
continue
print(n) # 0 2 4Entre eux, les concepts épousent la droite numérique : break tranche la queue ; continue excave un sous-ensemble de tours, comme filtrer une progression avec un crible.
Pass : un marqueur vide
Tout corps de if, for, while et de fonction doit contenir au moins une instruction, mais parfois vous ne l’avez pas encore écrite. pass est le no-op qui occupe la place :
for n in range(10):
if n % 3 == 0:
pass # TODO: handle multiples of 3 later
else:
print(n)Il ne fait rien, ce qui est précisément son rôle : garder le bloc syntaxiquement valide pendant que la vraie instruction est en cours de rédaction.
Un exemple travaillé : la machine Σ au travail
Les outils de cette leçon se composent dans le symbole de sommation de l’ouverture :
total = 0
for n in range(1, 11):
if n % 2 != 0:
continue # pairs seulement
total += n
print(total) # 2 + 4 + 6 + 8 + 10 = 30La boucle est mécanisé : chaque tour additionne un terme, continue tamise les tours impairs, et total s’accumule comme le total cumulé de la leçon 02.
Pièges courants
- Boucles
whileinfinies. Oubliez de mettre à jour la variable lue par la condition et la boucle tournera à jamais. Vérifiez que le corps fait avancer l’état versFalse. - Modifier une liste pendant qu’on l’itère. Trancher ou supprimer des éléments en cours de route déplace les indices sous vos pieds. Itérez sur une copie, ou construisez une nouvelle liste.
for i in range(len(items)). Sauf si vous avez besoin de l’indice lui-même, itérez directement sur la séquence,for fruit in fruitsdit ce que vous voulez.continuesaute le tour ;breakabandonne la boucle.continuene saute que l’itération actuelle ;breaktermine la boucle entière. Les confondre, c’est ainsi qu’une boucle qui devait s’arrêter continue de tourner.
🧩 Défis
🧩 Défi, réfléchissez d'abord, puis révélez
Écrivez une boucle for qui imprime les dix premiers multiples de 3 : .
💡 Réponse : for i in range(3, 31, 3): print(i), range(3, 31, 3) commence à 3, avance de 3 en 3 et s'arrête avant 31, tombant exactement sur $3, 6, \ldots, 30$.
🧩 Défi, réfléchissez d'abord, puis révélez
Écrivez une boucle while qui parcourt une file d’attente (simulez-la avec une liste) et s’arrête à l’élément "quit", en imprimant chaque élément qu’elle franchit.
💡 Réponse : inputs = ["hello", "world", "quit"]; i = 0; while inputs[i] != "quit": print(inputs[i]); i += 1, la condition garde le sentinelle et l'indice fait avancer l'état vers lui.
🤔 Questions socratiques
- Quand tendez-vous vers
whileplutôt quefor? Donnez une vraie tâche pour chacun, une qui se compte à l’avance, une qui ne se compte pas. - Qu’arrive-t-il à une liste que vous modifiez pendant qu’une boucle
forla parcourt ? Comment l’éviter ? - Python n’a pas de
do…whilecomme C. Comment écrivez-vous un corps qui doit s’exécuter au moins une fois avant toute vérification de condition ?
✅ Vérification rapide
1. Qu'imprime for i in range(0, 10, 3): print(i, end=" ") ?
2. Quel mot-clé saute le reste de l'itération actuelle de la boucle ?