Menu
Français

Boucles while en Python : syntaxe, while True et éviter les boucles infinies

Quand choisir une boucle while plutôt qu'une boucle for, comment éviter les boucles infinies, et les motifs qui reviennent le plus souvent dans le vrai code.

Une boucle qui surveille une condition

Là où for itère sur une séquence connue, while continue à boucler tant qu'une condition est vraie. Tu y tends la main quand tu ne sais pas à l'avance combien d'itérations te seront nécessaires — réessayer jusqu'à ce que quelque chose marche, lire l'entrée jusqu'à ce que l'utilisateur dise d'arrêter, interroger un service jusqu'à ce qu'il réponde.

La forme est simple :

main.py
Output
Click Run to see the output here.

Ça affiche de 0 à 4. Python vérifie la condition en haut de chaque itération. Si elle est vraie, le corps s'exécute. Puis il revérifie. Quand la condition devient fausse, la boucle se termine.

Remarque que count += 1 compte. Sans ça, la condition resterait vraie pour toujours — une boucle infinie. C'est le piège principal avec while, et la raison principale de préférer for quand tu peux.

Quand while est le bon outil

Quelques cas d'usage classiques :

Réessayer jusqu'au succès.

main.py
Output
Click Run to see the output here.

Lire l'entrée jusqu'à ce que l'utilisateur quitte.

main.py
Output
Click Run to see the output here.

Traiter une file d'attente.

main.py
Output
Click Run to see the output here.

Le fil conducteur : tu surveilles un changement d'état plutôt que d'itérer sur des éléments.

while True convient très bien

Tu verras ce motif beaucoup :

main.py
Output
Click Run to see the output here.

C'est du Python idiomatique quand la « vraie » condition de sortie est à l'intérieur du corps de la boucle, pas quelque chose de propre que tu peux tester en haut. C'est plus lisible qu'inventer un drapeau should_continue que tu mets à jour à un endroit et vérifies à un autre.

La seule règle : assure-toi qu'il y a un break (ou return, ou une exception levée) que le code finira par atteindre. Un while True: inconditionnel sans issue est la façon classique de bloquer un programme.

Éviter la boucle infinie

Les boucles infinies arrivent quand la condition reste vraie pour toujours. Les suspects habituels :

  • Oublié de mettre à jour la variable. while count < 5: a besoin de quelque chose dans le corps qui change count.
  • Mis à jour la mauvaise variable. while i < 10: et ensuite j += 1 à l'intérieur — facile à rater si ton code a plus de quelques variables.
  • Comparaison à virgule flottante. while x != 1.0: peut boucler éternellement si x ne fait que s'approcher de 1.0. Utilise <= ou abs(x - 1.0) < tolerance à la place.

Si tu te retrouves coincé dans une boucle infinie dans un terminal, appuie sur Ctrl+C. Ça envoie un signal d'interruption et Python arrête ce qu'il fait.

break, continue et else

while prend en charge les trois mêmes outils de « flux » que for :

  • break quitte la boucle immédiatement.
  • continue saute à l'itération suivante (donc la condition est revérifiée).
  • else s'exécute si la boucle s'est terminée sans break.
main.py
Output
Click Run to see the output here.

C'est un test de primalité rudimentaire. Si le break interne se déclenche, le nombre est composé. Si la boucle sort naturellement (condition devient fausse), le else s'exécute et déclare le nombre premier.

while vs for : lequel choisir ?

Un test mental rapide :

  • Tu as une collection à parcourir ?for.
  • Tu dois itérer un nombre fixe de fois ?for i in range(n):.
  • Tu boucles jusqu'à ce qu'une condition change ?while.

Dans du code Python au début, tu trouveras que for couvre 90 % des boucles. while apparaît quand tu fais quelque chose comme de l'interrogation, du retry ou construire un REPL simple. Si tu utilises while pour itérer sur une liste avec un index, c'est un signe qu'il faut passer à for + enumerate.

Un programme while pratique

Un jeu de devinette de nombre est un exemple classique parce que le nombre d'itérations dépend de la façon dont l'utilisateur joue :

main.py
Output
Click Run to see the output here.

Tu ne peux pas savoir à l'avance combien d'essais ça prendra — ça dépend des devinettes de l'utilisateur. C'est toute la raison d'exister de while.

En regardant devant

Tu as maintenant vu les deux types de boucle que Python te donne. Ensuite : range() en détail — il apparaît dans presque toutes les boucles for à compteur, et les petites nuances valent d'être comprises avant de passer aux collections.

Questions fréquentes

Quand utiliser une boucle while plutôt qu'une boucle for ?

Utilise while quand tu ne sais pas à l'avance combien d'itérations tu vas avoir besoin — par exemple, réessayer jusqu'à ce que quelque chose réussisse, ou lire l'entrée jusqu'à ce que l'utilisateur tape « quit ». Utilise for quand tu parcours une collection connue.

Comment éviter une boucle infinie en Python ?

Assure-toi que quelque chose à l'intérieur de la boucle finisse par rendre la condition fausse. La cause la plus fréquente de boucles infinies, c'est d'oublier de mettre à jour la variable dont dépend la condition. Si tu tombes dedans, appuie sur Ctrl+C dans le terminal pour l'arrêter.

Est-ce que while True est une mauvaise pratique ?

Pas intrinsèquement. while True: avec un break clair à l'intérieur est un motif parfaitement normal pour « boucler jusqu'à ce qu'on atteigne une condition de sortie spécifique ». C'est plus propre qu'inventer un drapeau booléen que tu dois gérer à deux endroits.

Apprendre à coder avec Coddy

COMMENCER