Как использовать sys.exit() в 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 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

Ответ 1

Я думаю, вы можете использовать

sys.exit(0)

Вы можете проверить его здесь в документе python 2.7:

Необязательный аргумент arg может быть целым числом, дающим статус выхода (по умолчанию - ноль) или другой тип объекта. Если это целое число, нуль считается "успешным завершением", и любое ненулевое значение считается "аномальным завершением" оболочками и тому подобное.

Ответ 2

sys.exit() вызывает исключение SystemExit которое вы, вероятно, считаете некоторой ошибкой. Если вы хотите, чтобы ваша программа не повышала SystemExit, но возвращалась изящно, вы можете обернуть свою функциональность функцией и вернуться из мест, которые вы планируете использовать sys.exit

Ответ 3

вы не импортировали sys в свой код и не закрывали() при вызове функции... попробуйте:

import sys
sys.exit()

Ответ 4

Использование 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" print на raise SystemExit