首页 > 解决方案 > sys.exit() 导致意外错误导致“repl 进程意外死亡”

问题描述

我正在使用 repl.it 对登录/注册屏幕进行编码。Python中的代码如下:

while True:
    print("""
============MAIN MENU================
                   *Welcome*
                   1. Register
                   2. Login
                   3. Quit
""")
    
    x=input("Enter choice:")
    if int(x)==1:
        register()
    elif int(x)==2:
        login()
    elif int(x)==3:
        print("Goodbye then!")
        sys.exit()

它工作正常,但在按下选项 3 时,它会打印到屏幕上,但随后会显示此错误:

repl process died unexpectedly:

当我过去使用 sys.exit 时,它只是诉诸简单的退出(光标闪烁)并且没有错误消息。

我做错了什么,出于教学目的,这里的最佳实践是什么?

标签: pythonexit-codesys

解决方案


我建议您将代码更改为:

while True:
    print("""
============MAIN MENU================
                   *Welcome*
                   1. Register
                   2. Login
                   3. Quit
""")
    
    x = int(input("Enter choice: "))
    if x == 1:
        register()
    elif x == 2:
        login()
    elif x == 3:
        print("Goodbye then!")
        break

不建议sys.exit()在迭代中使用方法而不是break在循环外执行所有必要的操作。至于为什么它会引发错误,sys.exit()使迭代操作崩溃并终止程序。所以首先break跳出循环总是一个好习惯。


推荐阅读