Il faudrait essayer d'utiliser un maximum de variables.
Et ces variables doivent avoir une dénomination explicite !
Le descriptif du programme à concevoir détaille bien le travail
à réaliser. Prenez le temps de faire un brouillon...
Le programme ci-dessous comporte une erreur de boucle infinie.
Cette erreur est difficile à déceler à cause de la valeur
aléatoire des dés : exécuter plusieurs fois le programme
«au hasard» ne permet pas de tester toutes les
situations possibles.
Aux lignes 6
, 7
, 16
et 17
remplacer l'instruction
randint(1, 6)
par la
valeur 2
.
Que peut-on constater ?
Essayez de corriger cette erreur.
##----- Importation des modules -----##
from random import *
##----- Initialisation des variables -----##
double = 0 # Nombre de doubles
de1 = randint(1, 6)
de2 = randint(1, 6)
##----- Programme principal -----##
print('Les faces sont {0} et {1} : Avancez de {2} cases.'.format(de1, de2, de1 + de2))
while (de1 == de2) and (double < 2):
if double < 2:
print('Il y a un double, rejouez.')
double += 1
de1 = randint(1, 6)
de2 = randint(1, 6)
print('Les faces sont {0} et {1} : Avancez de {2} cases.'.format(de1, de2, de1 + de2))
else:
print('Oups ! Encore un double, allez en prison !')
Ce programme corrige l'erreur décelée lors de la
solution précédente. On peut le tester aux lignes
6
, 7
, 16
et 17
en remplaçant l'instruction
randint(1, 6)
par une même valeur fixée.
##----- Importation des modules -----##
from random import *
##----- Initialisation des variables -----##
double = 0 # Nombre de doubles
de1 = randint(1, 6) # Testez sans
de2 = randint(1, 6)
##----- Programme principal -----##
print('Les faces sont {0} et {1} : Avancez de {2} cases.'.format(de1, de2, de1 + de2))
while (de1 == de2) and (double < 2):
double += 1 # Une seule indentation : on reste dans le while...
if double < 2:
print('Il y a un double, rejouez.')
de1 = randint(1, 6)
de2 = randint(1, 6)
print('Les faces sont {0} et {1} : Avancez de {2} cases.'.format(de1, de2, de1 + de2))
else:
print('Oups ! Encore un double, allez en prison !')