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()
这是我运行程序时显示的消息:
Traceback (most recent call last):
line 33, in <module>
sys.exit()
SystemExit
答案 0 :(得分:14)
我认为你可以使用
sys.exit(0)
您可以在python 2.7 doc中查看here:
可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是一个整数,则零被认为是“成功终止”,并且任何非零值被贝壳等视为“异常终止”。
答案 1 :(得分:5)
sys.exit()
会引发SystemExit
异常,您可能会将其视为某种错误。如果您希望程序不提升SystemExit但正常返回,则可以将功能包装在一个函数中,并从计划使用的位置返回sys.exit
答案 2 :(得分:1)
您没有在代码中导入sys,也没有在调用函数时关闭()。 尝试:
import sys
sys.exit()
答案 3 :(得分: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!
然后将“oops”打印更改为raise SystemExit
答案 4 :(得分:0)
与Pedro Fontez所说的一些答复一致,您似乎从来没有最初调用过sys模块,也没有设法将所需的()放在sys.exit的末尾:
如此:
import sys
完成后:
sys.exit()