While - À vous
I. Syntaxe et utilisation⚓︎
Syntaxe générale
- bloc d’instructions qui sera exécuté tant que
condition
estTrue
.
Utilisation
La boucle while
est utile ...
Elle est utilisée pour traiter des problèmes tels que :
👉 Faire quelque chose ...
Ne pas en abuser
Le code ci-dessous, pour afficher les entiers de 0 à n
est correct mais à éviter :
Il y a un risque d'oublier d'incrémenter i
dans la boucle... le code ne se terminerait pas (et c'est très agaçant).
Boucle for
Quand on sait à l'avance combien de fois une boucle doit être exécutée, on utilise de préférence une boucle for
.
Ou jusqu’à ce que ????
Le problème est parfois proposé de façon un peu différente : faire quelques chose jusqu'à ce que...
Par exemple, on demande un mot de passe, et on répète jusqu'à ce que le mot de passe soit le bon. Cet exemple est équivalent à celui-ci :
On demande un mot de passe, et on répète tant que ...
👉 Dans le 1er cas l'énoncé du problème indique la condition d'arrêt.
👉 dans le second cas il indique la condition de continuation.
😊 A vous de reformuler avec la bonne condition...
Initialisation
Pour exécuter l'instruction while condition
: il faut que la condition soit un booléen dont la valeur est définie.
Dans l'exemple suivant, Pour évaluer l'expression mot_de_passe != "123456"
il faut que la variable mot_de_passe
ait été initialisée.
mot_de_passe = ... # (1)
while mot_de_passe != "123456" :
mot_de_passe = input("Entrez le mot de passe : ")
- Initialisation de
mot_de_passe
Prenez le temps de lire les commentaires (cliquez sur les +)
II. Les pièges⚓︎
😰 Il est fréquent d'oublier une ligne de code, et d'écrire une boucle while qui ne se termine pas.
Version correcte
On incrémente n
dans la boucle, n
finira donc par atteindre la valeur d'arrêt :
Ne jamais entrer dans la boucle
-
Ce texte ne s'affichera jamais car on ne rentre pas dans la boucle
while
-
Il s'affichera directement ce texte.
III. Les drapeaux ou flags⚓︎
flag
Un drapeau (flag en anglais) est une variable qui sert à marquer une situation.
Par exemple, dans un jeu, on continue de jouer tant que la partie n'est pas finie.
👉 On pourra créer un flag booléen partie_en_cours
:
partie_en_cours = True # (1)
while partie_en_cours : # (2)
bloc d instructions du jeux
# quelque part dans ce bloc on aura :
if quelque chose qui arrête le jeu :
partie_en_cours = False # (3)
-
Le drapeau (ou flag)
-
partie_en_cours
est un booléen qui vautTrue
ouFalse
. On rentre dans la boucle si ce booléen est évalué àTrue
. Il est donc une mauvaise pratique d'écrirewhile partie_en_cours == True
-
Le drapeau (flag) passe à
False
, on sort donc de la bouclewhile