Question 1Que va afficher ce code ?n = 3
while n > 0:
print(n)
n -= 1
Boucles while et éviter les boucles infinies
while tourne tant que la condition reste True. Mettre à jour la variable de condition dans le corps pour ne pas boucler à l'infini, retry avec break et continue, et choix for vs while.
Le chapitre for précédent se concentrait sur les boucles où le compteur ou la cible sont connus à l'avance.
L'instruction while couverte ici est une boucle qui se répète « tant qu'une condition tient », et elle s'utilise quand le nombre d'itérations n'est pas connu à l'avance. Gestion de réessais, vidage de file d'attente, boucles de jeu — elle apparaît partout dans le code réel.
Bases de while — répéter tant que la condition est True
while condition: exécute le bloc en boucle tant que la condition est True. À chaque tour de boucle, la condition est ré-évaluée, et dès qu'elle devient False, la boucle se termine.
C'est similaire à for dans la forme, mais au lieu d'extraire d'une cible, elle boucle sur la condition elle-même.
Condition → si True, exécuter le corps → re-vérifier la condition → sortir quand False. La règle d'or de while : pousser la condition vers False à l'intérieur du corps.
# La forme de base — afficher 0 à 4
count = 0
while count < 5:
print(count)
count += 1
# 0 / 1 / 2 / 3 / 4
# Vider les tâches restantes d'une file d'attente
tasks = ["envoyer mail", "sauvegarde", "déploiement"]
while tasks:
task = tasks.pop(0) # prendre depuis l'avant
print(f"traitement : {task}")
# traitement : envoyer mail / traitement : sauvegarde / traitement : déploiement
Le second exemple repose sur le fait que while tasks: bascule à False dès que la liste est vide, en utilisant les règles de truthiness vues plus tôt (une liste vide vaut False).
Éviter les boucles infinies — toujours fournir une condition de terminaison
Le plus gros piège avec while est la boucle infinie. Si tu oublies la mise à jour qui fait basculer la condition à False, le programme ne s'arrête jamais. Même dans cette console intégrée au navigateur, cela fige la page jusqu'à un timeout au bout de quelques secondes (ou dizaines de secondes).
# Mauvais : n ne change jamais dans le corps, donc ça ne se termine jamais
# n = 10
# while n > 0:
# print(n)
# (Ne lance pas ce code — il fige le navigateur / fait un timeout)
# Bon : décrémenter n à chaque fois pour que la condition finisse par devenir False
n = 10
while n > 0:
print(n)
n -= 1
Quand tu écris un while, vérifie que tu peux répondre « comment la condition devient-elle False ? »
Avant de l'exécuter, pointe le code et confirme que chaque variable de la condition est mise à jour quelque part dans le corps de la boucle.
Utiliser break et continue dans while
Les break / continue que tu as vus avec for fonctionnent pareil dans while.
Même quand la condition est True, break quitte la boucle de façon décisive et continue recommence le tour actuel — ce sont les motifs typiques.
# Simulation de réessais : jusqu'à 5 tentatives, break dès qu'on trouve
responses = [None, None, "OK", "OK", "OK"] # réponses simulées d'API externe
attempt = 0
found = False
while attempt < 5:
attempt += 1
response = responses[attempt - 1]
if response is None:
print(f"tentative {attempt} : pas de réponse, nouvelle tentative")
continue # saute le reste de cette itération
print(f"tentative {attempt} : réponse reçue {response}, terminé")
found = True
break # succès, sortir de la boucle
if not found:
print("nombre maximum de tentatives atteint")
Mettre attempt += 1 en haut de la boucle est la clé. Avec ce placement, même si continue ou break sortent tôt, le compteur n'est jamais sauté, donc la garantie « jusqu'à 5 tentatives » tient.
Choisir entre for et while
for et while sont tous deux des boucles, mais ils conviennent à des situations différentes. Quand tu hésites, rappelle-toi de ce tableau.
| Quand tu veux… | Le mieux adapté | Pourquoi |
|---|---|---|
| Traiter chaque élément d'une liste, d'un dict, etc. | for | L'itération du début à la fin se lit naturellement |
| Répéter exactement N fois de 0 à N-1 | for + range(N) | Le compteur est explicitement énoncé sous forme de nombre |
| Terminer sur une condition complexe où le compteur est inconnu | while | La condition elle-même pilote la boucle |
| Réessayer jusqu'à ce qu'une réponse externe réussisse | while + break | Tu peux sortir immédiatement en cas de succès |
| Traiter une saisie utilisateur ou une file jusqu'au vide | while | Cela se termine naturellement dès que ça devient vide |
Dans cet article, on a couvert les bases de while, les conditions de terminaison qui empêchent les boucles infinies, le contrôle du flux avec break / continue, et comment choisir entre for et while.
Avec if / for / while couverts, tu as appris le contrôle de flux fondamental.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Quelle est la chose la plus importante à faire pour éviter une boucle infinie en while ?
Question 3Quelle est la façon la plus appropriée de choisir entre for et while ?