如何在Python中使用sys.exit()

时间:2013-02-01 03:07:48

标签: python python-3.x exit

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

5 个答案:

答案 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()