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 :
Ç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.
Lire l'entrée jusqu'à ce que l'utilisateur quitte.
Traiter une file d'attente.
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 :
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 changecount. - Mis à jour la mauvaise variable.
while i < 10:et ensuitej += 1à l'intérieur — facile à rater si ton code a plus de quelques variables. - Comparaison à virgule flottante.
while x != 1.0:peut boucler éternellement sixne fait que s'approcher de 1.0. Utilise<=ouabs(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 :
breakquitte la boucle immédiatement.continuesaute à l'itération suivante (donc la condition est revérifiée).elses'exécute si la boucle s'est terminée sansbreak.
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 :
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 ?
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.