Bases en Python : boucle tant que
Un exemple
Les boucles for que nous avons vues jusqu'ici sont bornées : on sait combien de fois la boucle sera exécutée (parfois la boucle pourra être interrompue, mais disons qu'on sait combien de fois au maximum le boucle sera exécutée).
Examinons le problème suivant :
Je lance un dé à 6 faces, et je compte combien de fois je dois le lancer avant d'obtenir un 6.
Dans cette situation, on ne sait pas à l'avance combien de fois on devra relancer le dé, on ne sait même pas donner un nombre maximum. On va lancer Tant que on obtient pas un 6, et arrêter dès qu'on en obtient un.
Dans ce cas on ne peux pas faire une boucle for, on utilise la boucle while :
Nous n'avons parlé jusqu'ici que de variables qui sont des nombres ou des chaînes de caractères. Ici nous allons avoir besoin de variables booléennes.
Voir qui était george Boole
Les variable booléennes sont des variables qui n'ont que 2 valeurs possibles : Vrai ou FauxEn anglais (donc dans tous les langages informatiques) c'est True ou False.
Coder en python la solution du problème
Exécutez le code plusieurs fois et vérifiez que le nombre de lancés est variable.
Il n'est pas convenable d'utiliser une boucle while quand on connaît le nombre d'itérations requis.
Ce code est parfaitement fonctionnel mais l'utilisation de tant que est injustifiée. Elle rend le code plus difficile à lire, et si on oublie le i = i + 1
on court à la catastrophe !
Lorsque l'on peut, on utilise une boucle `for`.
Ici tout simplement :
Il n'est pas convenable d'utiliser une boucle while quand on connaît le nombre d'itérations requis.
Ce code est parfaitement fonctionnel mais l'utilisation de Tant que est injustifiée. Elle rend le code plus difficile à lire, et si on oublie le i = i + 1 :
A votre avis.... que va-t-il se passer ? Vous pouvez vérifier...
Très important
Avec les boucles while il y a un risque que la boucle ne s'arrête jamais. Dans ce cas le programme ne se termine pas. Ce genre de bug est assez fréquent. Pour s'en prémunir il est indispensable de vérifier soigneusement que la condition d'arrêt sera atteinte au cours des itérations. |
Exercices
Voici la structure générale:
La première ligne est une boucle while «condition»:
où «condition» est une expression qui retourne True ou False (une expression Booléenne, comme pour l'instruction if).
Ensuite, on utilise un block indenté (comme pour une instruction if) qui contient des instructions que l'on veut répéter.
Cela s'appelle le corps de la boucle.
Quand vous exécutez le programme, les étapes suivantes sont répétées:
début
- La condition est testée.
- Si la condition est True alors le corps de la boucle est exécuté et ensuite nous revenons au début
- Si la condition est évaluée à False, la boucle s'arrête.