Boucles non bornées while
Ce qu'il faut comprendre
Imagine que tu veux deviner un nombre secret entre 1 et 100. Tu proposes un nombre, on te dit « trop grand » ou « trop petit », et tu continues jusqu'à trouver le bon. Tu ne sais pas à l'avance combien de tentatives il te faudra. En programmation, c'est pareil : parfois tu as besoin de répéter une action sans savoir à l'avance combien de fois. C'est là qu'intervient la boucle while (qui signifie « tant que » en anglais).
La boucle while exécute un bloc d'instructions tant qu'une condition est vraie. Dès que la condition devient fausse, la boucle s'arrête. C'est une boucle non bornée car le nombre de répétitions n'est pas fixé à l'avance.
Les notions essentielles
Syntaxe en Python
while condition:
instruction_1
instruction_2
...
condition: une expression booléenne (qui vautTrueouFalse).- Les instructions indentées (décalées de 4 espaces) sont répétées tant que la condition est vraie.
- Attention : si la condition reste toujours vraie, la boucle ne s'arrête jamais → boucle infinie !
Variable de contrôle
Pour qu'une boucle while s'arrête, il faut qu'une variable (appelée variable de contrôle) change de valeur à l'intérieur de la boucle, jusqu'à ce que la condition devienne fausse.
Exemple simple
compteur = 1
while compteur <= 5:
print(compteur)
compteur = compteur + 1
Ce code affiche les nombres de 1 à 5. La variable compteur augmente à chaque tour, jusqu'à dépasser 5.
Boucle infinie
while True:
print("Je tourne en rond")
Ici, la condition est toujours vraie → la boucle ne s'arrête jamais. Pour l'interrompre, il faut utiliser Ctrl+C dans la console.
Méthode
Pour écrire une boucle while correcte, suis ces étapes :
- Identifier ce qu'il faut répéter : quelles instructions doivent être exécutées plusieurs fois ?
- Déterminer la condition d'arrêt : quand doit-on s'arrêter ? (par exemple, quand on a trouvé la réponse, quand un compteur atteint une limite, etc.)
- Choisir une variable de contrôle : quelle variable va évoluer pour que la condition devienne fausse ?
- Initialiser la variable avant la boucle : donne-lui une valeur de départ.
- Écrire la boucle :
while condition:puis les instructions indentées, dont une qui modifie la variable de contrôle. - Vérifier qu'on ne crée pas de boucle infinie : est-ce que la variable de contrôle finira par rendre la condition fausse ?
Exemple corrigé
Énoncé : Écrire un programme qui demande à l'utilisateur de deviner un nombre secret (par exemple 42). Tant que l'utilisateur n'a pas trouvé, le programme lui dit si c'est trop grand ou trop petit. À la fin, il affiche le nombre de tentatives.
Correction :
# Initialisation
secret = 42
essai = 0
tentatives = 0
# Boucle de jeu
while essai != secret:
essai = int(input("Devine le nombre : "))
tentatives = tentatives + 1
if essai < secret:
print("Trop petit !")
elif essai > secret:
print("Trop grand !")
# Sortie de boucle : on a trouvé
print("Bravo ! Tu as trouvé en", tentatives, "tentatives.")
Explication pas à pas :
- On fixe le nombre secret à 42.
- On initialise
essaià 0 (n'importe quelle valeur différente de 42) ettentativesà 0. - La condition
essai != secretest vraie tant que l'utilisateur n'a pas trouvé. - À chaque tour, on demande un nombre, on augmente le compteur de tentatives, et on donne un indice.
- Quand l'utilisateur entre 42, la condition devient fausse, la boucle s'arrête, et on affiche le message de victoire.
Erreurs fréquentes
- Oublier d'initialiser la variable de contrôle : si tu utilises une variable sans lui donner de valeur avant la boucle, Python renvoie une erreur.
- Oublier de modifier la variable de contrôle dans la boucle : si la variable ne change pas, la condition reste toujours vraie → boucle infinie.
- Condition mal écrite : par exemple, utiliser
=(affectation) au lieu de==(comparaison). - Indentation incorrecte : les instructions à répéter doivent être indentées (4 espaces). Si tu mets une instruction sans indentation, elle ne fait pas partie de la boucle.
- Confondre
whileetfor:forest utilisé quand on connaît le nombre de répétitions (par exemple, parcourir une liste),whilequand on ne le connaît pas à l'avance.
À retenir
- La boucle
whilerépète un bloc d'instructions tant qu'une condition est vraie. - Elle nécessite une variable de contrôle qui évolue pour que la condition devienne fausse.
- Attention aux boucles infinies : toujours vérifier que la condition peut devenir fausse.
- Syntaxe :
while condition:suivi d'instructions indentées. - Utilisation typique : jeux, simulations, saisie utilisateur jusqu'à obtenir une valeur valide.
Pour s'entraîner
Maintenant que tu as compris le principe, entraîne-toi avec les exercices et quiz disponibles sur AlloSeconde. Tu peux aussi utiliser un tableur pour simuler des boucles non bornées (par exemple, avec des formules conditionnelles). N'hésite pas à refaire l'exemple du jeu de devinette en modifiant le nombre secret ou en ajoutant un nombre maximum de tentatives.
