有没有一种方法告诉我的程序退出?

Kud*_*udu 40 python exit quit

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

elif choice == "q":
    print()
Run Code Online (Sandbox Code Playgroud)

这是可行的,直到我把它放在一个无限循环,这不断打印空行.有没有可以退出程序的方法?另外,你能想到另一种解决方案吗?

Gre*_*ill 84

一种方法是:

sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

import sys当然必须这样做.

另一种方法是break摆脱你的无限循环.例如,您可以这样做:

while True:
    choice = get_input()
    if choice == "a":
        # do something
    elif choice == "q":
        break
Run Code Online (Sandbox Code Playgroud)

另一种方法是将主循环放在一个函数中,并使用return:

def run():
    while True:
        choice = get_input()
        if choice == "a":
            # do something
        elif choice == "q":
            return

if __name__ == "__main__":
    run()
Run Code Online (Sandbox Code Playgroud)

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

  • 异常在Python中不是那么例外。 (5认同)

tzo*_*zot 19

结束程序的实际方法是打电话

raise SystemExit
Run Code Online (Sandbox Code Playgroud)

sys.exit 反正就是这样.

普通的SystemExitNone作为单个参数将进程的退出代码设置为零.任何非整数异常值(raise SystemExit("some message"))都会将异常值打印到sys.stderr并将退出代码设置为1.整数值将进程的退出代码设置为值:

$ python -c "raise SystemExit(4)"; echo $?
4
Run Code Online (Sandbox Code Playgroud)


Rob*_*let 11

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

elif choice == "q":
    exit()
Run Code Online (Sandbox Code Playgroud)

  • `exit()`[由`site`包添加](http://docs.python.org/py3k/library/constants.html?highlight=exit#constants-added-by-the-site-module) .文档说不应该在程序中使用:$ (3认同)