2013-02-01 42 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 

我想告訴程序,如果roll == 1退出,但什麼也沒有發生,它只是給我一個錯誤消息,如果我嘗試使用sys.exit()如何使用sys.exit()它的Python

是的,我在程序的頂部使用import sys。任何人都可以幫忙嗎?


這是消息,它表明,當它運行程序

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

你得到的實際回溯是什麼? – Volatility

+0

請嘗試發佈一個完整的代碼片段 - 例如'player'來自哪裏?我也重新標記爲Python 3.x –

+5

問題是您正在將代碼運行到IDLE中。 IDLE捕獲所有異常(即使是SystemExit),因此您可以看到該回溯。要查看事情通常會如何運行,只需將python程序運行到python shell(從終端/命令提示符啓動python) – Bakuriu

回答

4

sys.exit()提出了SystemExit例外,這你可能承擔一些錯誤。如果你希望你的程序不提高SystemExit但優雅地恢復,你可以在一個功能包裝你的功能,並從地方返回,你打算使用sys.exit

0

使用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! 

然後將「哎呀「打印到raise SystemExit

4

我認爲你可以使用

sys.exit(0) 

您可以檢查它here在python 2.7 doc中:

可選參數arg可以是一個給出退出狀態(默認爲零)的整數或其他類型的對象。如果它是一個整數,零被認爲是「成功終止」,並且任何非零值被shell等認爲是「異常終止」。

相關問題