L’une des tâches que les machines font le mieux est la répétition sans erreur de tâches identiques. Il existe bien des méthodes pour programmer ces tâches répétitives. Nous allons commencer par l’une des plus fondamentales : la boucle construite à partir de l’instruction while.
5.1 Une boucle avec condition
La boucle while permet de répéter des instructions sans savoir à priori combien de fois elles vont être répétées.
Exemple : un jeu consiste à lancer un dé jusqu’à obtenir un six. Nous ne savons pas à l’avance combien de fois il faudra lancer le dé.
Pour ce genre de situation, les langages de programmation proposent la boucle TANT QUE ou WHILE (en anglais)
1 2 3 |
TANT_QUE ( ) FAIRE : lancer_le_dé FIN_TANT_QUE |
Ici le nombre de répétitions n’est pas connu à l’avance, mais on connaît un test d’arrêt de la boucle : obtenir un 6 !
Avec ce genre de boucle, le risque est alors de boucler indéfiniment !
Testez ces quelques lignes :
La boucle s’exécute tant que la condition (ici a<5) est vérifiée.
Attention il faut s’assurer que la condition puisse à un moment devenir fausse, sinon c’est une boucle sans fin. Chaque passage dans la boucle est appelé une itération.
La ligne while se termine par un double point : indiquant le début du bloc d’instructions à répéter qui doit être indenté.
Exercice : compte à rebours
Ecrire et sauver un programme « 09_rebours.py » qui affiche un compte à rebours à partir d’une valeur rentrée par l’utilisateur et d’une boucle while.
5.2 While / break / continue / else
Il est possible d’interrompre une boucle avec l’instruction : break
Sortie immédiate du bloc d’instructions de la boucle while en cours
Il est possible de court-circuiter une boucle avec l’instruction : continue
Passage à l’itération suivante de la boucle while en cours ; reprend à la ligne de l’en-tête de la boucle
Boucle while avec clause else
Les boucles while peuvent posséder une clause else qui ne s’exécute que si la boucle se termine normalement, c’est-à-dire sans interruption avec un break.
Exercice : Compléter la condition de la ligne while suivante pour que le programme redemande à l’utilisateur de ressaisir sa valeur si celle-ci ne respecte pas les conditions souhaitées.
Modifier maintenant ce programme à l’aide des instructions break et else pour :
- qu’après 3 tentatives le programme stoppe la boucle et se termine
- qu’il affiche « Merci » si l’utilisateur à bien rempli les consignes.
Vous sauvegarderez ce programme sous « 10_while.py« .
Exercice : Juste Prix
Écrire et sauver un programme « 11_lejusteprix.py » qui va :
- choisir un prix au hasard (à valeur entière) entre 0 et 100€.
- demander à l’utilisateur de deviner le prix.
- à chaque réponse incorrecte de l’utilisateur, lui répondre : c’est plus, ou c’est moins.
- une fois la bonne réponse trouvée, lui répondre « gagné ! ».
Indications :
-
- Choisir un prix au hasard, revient à tirer un nombre aléatoire entier entre 0 et 100. Pour cela :
- commencer par importer la fonction randint du module random à l’aide de l’instruction :
from random import randint - puis, pour « tirer » un prix au hasard entre 0 et 100 : prix=randint(0,100)
- commencer par importer la fonction randint du module random à l’aide de l’instruction :
- Pour comparer la valeur proposée par l’utilisateur au prix, nous aurons besoin de l’opérateur différent de : !=
- Comme toujours, attention aux types : les valeurs saisies par l’utilisateur sont des chaînes de caractères; pour les comparer au prix, commencer par les convertir en entier avec int.
- Choisir un prix au hasard, revient à tirer un nombre aléatoire entier entre 0 et 100. Pour cela :