(prog1.dessiner)= # Boucle `while` La boucle while permet de répéter une suite d'instructions tant qu'une condition est vérifiée. Par exemple, tant que l'utilisateur.trice ne rentre pas le bon mot de passe, on lui demande d'en saisir un nouveau : ```{codeplay} txt = input("Saisissez le mot de passe : ") mot_de_passe = "d$2!2" while mot_de_passe != txt : print("Mot de passe incorrect") txt = input("Saisissez le mot de passe : ") print("Ouverture de la session") ``` La syntaxe générale est : ```python while condition : instructions ``` Remarques : - Si la condition donne False dès le début, les instructions dans le bloc du while ne sont jamais exécutées. - Si la condition n'est jamais False, on peut arriver à une boucle infinie problématique. - Une erreur fréquente est d'avoir une condition portant sur une variable et d'oublier de modifier la variable dans le bloc d'instruction. `````{question} Le code suivant montre une erreur de syntaxe. Corrigez-le pour réaliser l'exemple proposé plus haut : ```python n = 0 while n < 5 print("Ce tour, n vaut", n) n = n + 1 ``` Le code suivant montre une erreur de syntaxe, laquelle? {f}`Il manque deux parenthèses autour de la condition n < 5` {f}`Il manque deux parenthèses autour du bloc des lignes 3 et 4` {v}`Il manque deux points à la fin de la ligne 2` {f}`Il manque deux points juste après le mot clé while` ````` ````{question} Qu'affiche le code suivant (sans les retours à la ligne)? ```python i = 1 while i < 5 : i = i+1 print(i) ``` {f}`1` {f}`4` {v}`5` {f}`6` {f}`2 3 4` {f}`2 3 4 5` {f}`2 3 4 5 6` ````` ````{question} Qu'affiche le code suivant ? ```python i = 4 while i < 7 : i = i+1 print(i) ``` {f}`4` {f}`6` {f}`7` {f}`4 5 6 7` {f}`4 5 6 7 8` {v}`5 6 7` {f}`5 6 7 8` ````` `````{exercise} Corrigez la ligne 4 de ce code pour que le programme demande un mot de passe jusqu'à ce qu'il soit juste pour alors ouvrir une session. Pour bien tester votre programme, voici les situations à vérifier : 1. Tant que le mot de passe est mauvais, il redemande un mot de passe 2. Si le mot de passe est bon au premier essai, il doit ouvrir la session. 3. Si le mot de passe est bon après avoir mis des mauvais mots de passe, il doit ouvrir la session. ```{codeplay} --- hints: | La variable essai n'est jamais modifiée dans la boucle. --- passe = "bravo*263" essai = input("Entrez le mot de passe : ") while essai != passe : input("Ce n'est pas le bon mot de passe. Réessayez : ") print("Ouverture de session.") ``` `````