有没有方法可以让我的程序退出?
在我的程序菜单中,有一个“q”(退出)选项,我写了以下代码:
elif choice == "q":
print()
这个代码之前运行得很好,但当我把它放进一个无限循环里后,它就一直在打印空行。有没有什么方法可以退出这个程序?或者,你能想到其他解决办法吗?
5 个回答
14
在Python 3中,有一个叫做exit()
的函数:
elif choice == "q":
exit()
26
结束一个程序的正确方法是调用
raise SystemExit
这就是 sys.exit
实际上所做的事情,可以查看相关文档。
如果你直接使用 SystemExit
,或者只给它传一个 None
,那么程序的退出代码会被设置为零。任何非整数的异常值(比如 raise SystemExit("一些信息")
)会把这个异常信息打印到 sys.stderr
,并把退出代码设置为1。而如果你传入一个整数值,程序的退出代码就会被设置为这个整数的值:
$ python -c "raise SystemExit(4)"; echo $?
4
98
一种方法是这样做:
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()
使用return
时,你需要run()
这个函数,原因是(和其他一些语言不同)你不能直接在Python代码的主部分(不在函数里的那部分)使用return
。