web-dev-qa-db-fra.com

Comment utiliser sys.exit () en Python

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
10
user2027690

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.

10
godidier

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

5
Abhijit

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

0
Jon Clements