Поскольку "q" (выходят) из опции в моем меню программы, у меня есть следующий код:
elif choice == "q":
print()
Это работало хорошо, пока я не поместил его в бесконечный цикл, который продолжал печатать пустые строки. Существует ли метод, который может выйти из программы? Еще, можно ли думать о другом решении?
Один из способов:
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 (той части, которая не находится внутри функции).
В Python 3 есть функция exit ()
:
elif choice == "q":
exit()
См. sys.exit
. Эта функция завершит вашу программу с заданным статусом выхода.
Фактическим способом завершения программы является вызов
raise SystemExit
Это то, что sys.exit
делает, в любом случае.
Обычный SystemExit
, или с None
в качестве единственного аргумента, устанавливает код завершения процесса в ноль. Любое нецелое значение исключения (raise SystemExit("some message")
) печатает значение исключения в sys.stderr
и устанавливает код выхода в 1. Целочисленное значение устанавливает код завершения процесса в значение:
$ python -c "raise SystemExit(4)"; echo $?
4