对于程序菜单中的“q”(退出)选项,我有以下代码:
elif choice == "q":
print()
直到我把它放在一个无限循环中,这一直保持打印空白行。有没有可以退出程序的方法?否则,您能想到另一种解决方案吗?
答案 0 :(得分:77)
一种方法是:
sys.exit(0)
当然,你必须import sys
。
另一种方法是从你的无限循环中break
。例如,您可以这样做:
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
函数的唯一原因是(与其他语言不同),您不能直接return
来自Python代码的主要部分(部分不在函数内部。)
答案 1 :(得分:17)
结束程序的实际方法是调用
raise SystemExit
这是sys.exit
does, anyway。
普通SystemExit
或None
作为单个参数,将进程的退出代码设置为零。任何非整数异常值(raise SystemExit("some message")
)都会将异常值打印到sys.stderr
并将退出代码设置为1.整数值将进程的退出代码设置为值:
$ python -c "raise SystemExit(4)"; echo $?
4
答案 2 :(得分:10)
在Python 3中有一个exit()
函数:
elif choice == "q":
exit()
答案 3 :(得分:3)
见sys.exit
。该函数将以给定的退出状态退出程序。
答案 4 :(得分:2)
请注意,基于sys.exit()或任何Exception的解决方案可能无法在多线程环境中运行。
由于exit()最终“仅”引发了一个异常,它只会在从主线程调用时退出进程,并且异常不会被截获。 (doc)