2013-02-01 15 views
7
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 

Próbuję powiedzieć, aby wyjść z programu, jeśli roll == 1 ale nic się nie dzieje i to właśnie daje mi komunikat o błędzie, gdy próbuję użyć sys.exit()Jak korzystać sys.exit() to Python

Tak, używam import sys w górnej części programu. Czy ktokolwiek może pomóc?


Jest to komunikat, który pokazuje kiedy uruchamia program

Traceback (most recent call last): 
line 33, in <module> 
    sys.exit() 
SystemExit 
+3

Co to jest rzeczywisty traceback? – Volatility

+0

Proszę napisać pełny fragment kodu - skąd na przykład pochodzi odtwarzacz? Zostałem również ponownie oznaczony jako Python 3.x –

+5

Problem polega na tym, że uruchamiasz swój kod na IDLE. IDLE przechwytuje wszystkie wyjątki (nawet SystemExit), a więc widzisz to traceback. Aby zobaczyć, jak to zwykle bywa, po prostu uruchom program Pythona w powłoce Pythona (uruchom python z wiersza poleceń terminalu) – Bakuriu

Odpowiedz

4

sys.exit() podnosi się SystemExit wyjątek, który jesteś prawdopodobnie przyjmując za jakiegoś błędu. Jeśli chcesz, aby program, aby nie podnieść SystemExit jednak powrócić bezpiecznie, można owinąć funkcjonalność funkcji i powrót z miejsc planujesz używać sys.exit

0

Korzystanie 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! 

Następnie zmienić „oops "drukować na raise SystemExit

4

myślę, że można użyć

sys.exit(0) 

można to sprawdzić here w python 2.7 doc:

Opcjonalny argument arg może być liczbą całkowitą podającą stan wyjścia (domyślnie zero) lub inny typ obiektu. Jeśli jest liczbą całkowitą, zero jest uważane za "pomyślne zakończenie", a każda niezerowa wartość jest uważana za "nieprawidłowe zakończenie" przez powłoki i tym podobne.

Powiązane problemy