有没有方法可以让我的程序退出?

48 投票
5 回答
235459 浏览
提问于 2025-04-15 22:38

在我的程序菜单中,有一个“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

撰写回答