Le schéma classique
Le but de la boucle while est de répéter certaines instructions tant qu’une condition est respectée.
On n’est pas donc obligé de savoir au départ le nombre de répétitions à faire.
instruction normale instruction normale instruction normale ... while condition : instruction de la boucle instruction de la boucle instruction de la boucle ... instruction normale instruction normale instruction normale ...
Un exemple minimal
# -*- coding:utf-8 -*- print("*** Avant la boucle ***") entree="bidule" while entree != "" : print("------ dans la boucle ------") entree=input("Taper un mot : ") print("*** Après la boucle ***") input("Appuyer sur ENTER pour terminer le programme. ")
*l.1 à l.6 : ——- avant la boucle ——–
– On trouve ici les instructions d’avant la boucle. Elles ne sont donc exécutées qu’une seule fois !
– *l.5 Cette étape est indispensable. On initialise la variable entree. Si vous oubliez cette étape, vous obtiendrez un message d’erreur à la ligne l.7, au moment où vous allez utiliser cette variable dans le test.
– Il faut aussi s’assurer que la valeur choisie vous fasse rentrer dans la boucle !
– Vous pouvez faire un test en remplaçant « bidule » par « machin », puis par « ». Que se passe-t-il lors de l’exécution ?
*l.7 à l.9 : ——- la boucle ——-
– *l.7
– Tant que entree est différent de « », on va effectuer les instructions de la boucle.
– entree!= »bidule » est ma condition qui renvoie un booléen (True ou False)
– Ne pas oublier le « : » en fin de ligne.
– *l.8 à l.9 Voici les instructions de la boucle qui seront exécutées à chaque fois que le test initial rendra comme résultat True.
– Pour différencier ces instructions de la suite du programme, on a tapé au début une tabulation (de plus), cette indentation (ce décalage) est indispensable.
– Chose importante : si on veut pouvoir sortir de la boucle while, il faut que la variable utilisée dans le test change de valeur ! C’est le cas à la ligne l.9. Sinon, on entre dans ce qu’on appelle une boucle sans fin …
*l.10 à l.12 : ——- après la boucle ——-
Le décalage est terminé : on revient au niveau d’avant la boucle. Le programme continue normalement.
L’instruction break
L’instruction break sert, non pas à interrompre le programme, mais à sortir de la boucle.
Essayez de comprendre ce que fait l’exemple précédent modifié :
# -*- coding:utf-8 -*- print("*** Avant la boucle ***") entree="bidule" while entree != "": print("------ dans la boucle ------") entree=input("Taper un mot : ") if entree=="ouistiti" : print("J'ai vu un ouistiti !") break print("*** Après la boucle ***") input("Appuyer sur ENTER pour terminer le programme. ")
Simulation d’une boucle for
Si l’on connaît le nombre de répétitions, on peut alors utiliser une boucle for. Mais on peut aussi bien le faire avec une boucle while.
Cet exemple vous rappelle quelque chose ?
# -*- coding:utf-8 -*- nb_repetitions = 3 i = 1 while i <= nb_repetitions : print("Et "+str(i)+"!") i = i+1 print("Zéro!") input("Appuyer sur ENTER pour terminer le programme. ")
Des exercices faits avec CodeRunner