Существует ли метод, который говорит моей программе выходить?

Поскольку "q" (выходят) из опции в моем меню программы, у меня есть следующий код:

elif choice == "q":
    print()

Это работало хорошо, пока я не поместил его в бесконечный цикл, который продолжал печатать пустые строки. Существует ли метод, который может выйти из программы? Еще, можно ли думать о другом решении?

40
задан SilentGhost 10 June 2010 в 10:14
поделиться

4 ответа

Один из способов:

sys.exit(0)

Вам, конечно же, придется import sys .

Другой способ - выйти из бесконечного цикла . Например, вы можете сделать это:

while True:
    choice = get_input()
    if choice == "a":
        # do something
    elif choice == "q":
        break

Еще один способ - поместить ваш основной цикл в функцию и использовать return :

def run():
    while True:
        choice = get_input()
        if choice == "a":
            # do something
        elif choice == "q":
            return

if __name__ == "__main__":
    run()

Единственная причина, по которой вам нужен run () при использовании return заключается в том, что (в отличие от некоторых других языков) вы не можете напрямую вернуть из основной части вашего кода Python (той части, которая не находится внутри функции).

84
ответ дан 27 November 2019 в 01:09
поделиться

В Python 3 есть функция exit () :

elif choice == "q":
    exit()
11
ответ дан 27 November 2019 в 01:09
поделиться

См. sys.exit . Эта функция завершит вашу программу с заданным статусом выхода.

3
ответ дан 27 November 2019 в 01:09
поделиться

Фактическим способом завершения программы является вызов

raise SystemExit

Это то, что sys.exit делает, в любом случае.

Обычный SystemExit, или с None в качестве единственного аргумента, устанавливает код завершения процесса в ноль. Любое нецелое значение исключения (raise SystemExit("some message")) печатает значение исключения в sys.stderr и устанавливает код выхода в 1. Целочисленное значение устанавливает код завершения процесса в значение:

$ python -c "raise SystemExit(4)"; echo $?
4
19
ответ дан 27 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: