47

对于我的程序菜单中的“q”(退出)选项,我有以下代码:

elif choice == "q":
    print()

这一切正常,直到我将它放入一个无限循环中,它不断打印空白行。有没有可以退出程序的方法?否则,你能想出另一种解决方案吗?

4

5 回答 5

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()

使用时需要该run()函数的唯一原因return是(与其他一些语言不同)您不能直接return从 Python 代码的主要部分(不在函数内部的部分)。

于 2010-05-12T23:24:44.760 回答
26

结束程序的实际方法是调用

raise SystemExit

sys.exit 反正就是这样。

一个普通的SystemExit,或None作为单个参数的,将进程的退出代码设置为零。任何非整数异常值 ( raise SystemExit("some message")) 将异常值打印为sys.stderr并将退出代码设置为 1。整数值将进程的退出代码设置为以下值:

$ python -c "raise SystemExit(4)"; echo $?
4
于 2010-06-10T09:31:27.170 回答
14

在 Python 3 中有一个exit()函数:

elif choice == "q":
    exit()
于 2010-05-12T23:45:55.957 回答
3

请注意,基于 sys.exit() 或任何 Exception 的解决方案可能无法在多线程环境中工作。

由于 exit() 最终“只”引发异常,因此只有在从主线程调用时才会退出进程,并且不会拦截异常。(文档

来自 Alex Martelli 的这个回答了解更多详情。

于 2013-11-07T20:46:48.607 回答
3

sys.exit。该函数将以给定的退出状态退出您的程序。

于 2010-05-12T23:24:58.180 回答