对于我的程序菜单中的“q”(退出)选项,我有以下代码:
elif choice == "q":
print()
这一切正常,直到我将它放入一个无限循环中,它不断打印空白行。有没有可以退出程序的方法?否则,你能想出另一种解决方案吗?
一种方法是:
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 代码的主要部分(不在函数内部的部分)。
结束程序的实际方法是调用
raise SystemExit
sys.exit
反正就是这样。
一个普通的SystemExit
,或None
作为单个参数的,将进程的退出代码设置为零。任何非整数异常值 ( raise SystemExit("some message")
) 将异常值打印为sys.stderr
并将退出代码设置为 1。整数值将进程的退出代码设置为以下值:
$ python -c "raise SystemExit(4)"; echo $?
4
在 Python 3 中有一个exit()
函数:
elif choice == "q":
exit()
请注意,基于 sys.exit() 或任何 Exception 的解决方案可能无法在多线程环境中工作。
由于 exit() 最终“只”引发异常,因此只有在从主线程调用时才会退出进程,并且不会拦截异常。(文档)
来自 Alex Martelli 的这个回答了解更多详情。
见sys.exit
。该函数将以给定的退出状态退出您的程序。