player_input = '' # This has to be initialized for the loop
while player_input != 0:
player_input = str(input('Roll or quit (r or q)'))
if player_input == q: # This will break the loop if the player decides to quit
print("Now let's see if I can beat your score of", player)
break
if player_input != r:
print('invalid choice, try again')
if player_input ==r:
roll= randint (1,8)
player +=roll #(+= sign helps to keep track of score)
print('You rolled is ' + str(roll))
if roll ==1:
print('You Lose :)')
sys.exit
break
J'essaie de dire au programme de quitter si roll == 1
mais rien ne se passe et cela me donne simplement un message d'erreur lorsque j'essaie d'utiliser sys.exit()
C'est le message qu'il montre quand j'exécute le programme:
Traceback (most recent call last):
line 33, in <module>
sys.exit()
SystemExit
Je pense que vous pouvez utiliser
sys.exit(0)
Vous pouvez le vérifier ici dans le doc de python 2.7:
L'argument optionnel arg peut être un entier indiquant le statut de sortie (zéro par défaut) ou un autre type d'objet. S'il s'agit d'un entier, zéro est considéré comme une «terminaison réussie» et toute valeur non nulle est considérée comme une «terminaison anormale» par les shells et similaires.
sys.exit()
déclenche une exception SystemExit
que vous supposez probablement comme une erreur. Si vous voulez que votre programme ne lève pas SystemExit mais revienne normalement, vous pouvez envelopper votre fonctionnalité dans une fonction et revenir des lieux que vous prévoyez d'utiliser sys.exit
En utilisant 2.7:
from functools import partial
from random import randint
for roll in iter(partial(randint, 1, 8), 1):
print 'you rolled: {}'.format(roll)
print 'oops you rolled a 1!'
you rolled: 7
you rolled: 7
you rolled: 8
you rolled: 6
you rolled: 8
you rolled: 5
oops you rolled a 1!
Puis changez l’impression "oops" en raise SystemExit