La boucle 'tant que' en langage Python

Simulation d'un jeu de dé

Présentation du problème

Notre robot a bien travaillé. Il mérite bien un peu de loisirs.

Nous allons lui apprendre à jouer aux dés.

Revoilà le jeu de dés. M'en vais vite revoir ce qu'on en disait dans la leçon précédente.

Vous faites bien. Les fonctions "aléatoires" pourraient bien encore nous servir.

Un robot apprend à jouer avec un dé. Il doit le lancer à plusieurs reprises jusqu'à obtenir un score déterminé. Il doit alors s'arrêter.

Le texte ci-dessous est obtenu lors de l'exécution du programme correspondant. L'utilisateur fournit le score minimal à atteindre (ce score est souligné).

~$ python scoreAuxDes.py
Quel est le score à atteindre? 12 Un humain indique le score à atteindre. Soit 12.
* Je viens d'obtenir un 5 Le robot lance une première fois le dé et obtient un 5
Mon score est donc 5 Le total des points obtenus jusque là est donc 5
* Je viens d'obtenir un 4 Le robot lance une deuxième fois le dé et obtient un 4
Mon score est donc 9 Le total des points obtenus jusque là est donc 9
* Je viens d'obtenir un 4 Il joue une troisième fois et obtient encore un 4
Mon score est donc 13 Le total des points obtenus jusque là est donc 13
-> ouf, j'y suis

Hé là, il y a erreur. On avait dit 12 et pas 13.

Effectivement, mais le jeu est le jeu. D'ailleurs 12 était bien le score minimal à atteindre avant de s'arrêter.

Algorithme

La méthode de travail pour ce problème pourrait être du type suivant:

tant que < le score demandé n'est pas atteint>
    lancer le dé
    annoncer le nombre de points
    annoncer le score actuel

Ça devient une manie. Vous avez encore oublié l'initialisation.

Disons plutôt que je vous laisse y réfléchir.

En langage Python

Nous allons devoir faire appel à la bibliothèque random dont nous utiliserons la fonction randint. Revoir son rôle si nécessaire.

L'humain indique le score à atteindre à l'aide de la fonction input.

#!/usr/bin/env python
# *-* encoding: ISO-8859-1 -*-
from random import *
score = 0
maximum = input ("Quel est le score à atteindre? ")
while score < maximum :
    jeu = randint(1,6)
    score = score + jeu
    print "* Je viens d'obtenir un ", jeu
    print "Mon score est donc ",score
print "-> ouf, j'y suis"

Quelle variable sert de compteur dans le programme ci-dessus?
score
jeu
maximum
Aucune variable n'est vraiment un compteur
  • Teste le programme ci-dessus.
  • Vérifie que tu comprends bien la différence entre les instructions notées en rouge et la dernière instruction du programme notées en couleur bleue.
  • Que faudrait-il ajouter au programme pour qu'il annonce finalement le nombre de lancers de dé réalisés? Réalise cette modification.
  • Enregistre la version modifiée sous le nom jeuDeDes.py.

Quand le programme modifié fonctionne et qu'il a été approuvé par le professeur, passe à la page suivante. Vers la page suivante Page suivante


Dernière modification 18/08/2016 Test dans /info ...