关于if语句:python中的exit函数不起作用

Exit function in python doesn't work

我对python还不熟悉,我正在尝试使用来自sysexit函数,但不知何故它在我的计算机上不起作用。这是我的代码:

1
2
3
4
5
from sys import exit

userResponse = input ("n or y?")
if not (userResponse =="n" or userResponse =="y") :
exit ("ERROR")


exit引发一个SystemExit异常;这就是它终止程序的方式。您的环境在终止后显示该异常不是错误,它只是向您显示原因。我同意你的看法(如,这个PEP),默认行为应该是不打印出这个异常和KeyboardException的回溯消息。

但最终,执行停止了,正如它被设计的那样。

详见文件:https://docs.python.org/2/library/sys.html sys.exit

这里的一些回答最初表明您不能向exit传递字符串。这是错误的:来自文档(强调我的)

The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered"successful termination" and any nonzero value is considered"abnormal termination" by shells and the like. Most systems require it to be in the range 0–127, and produce undefined results otherwise.... If another type of object is passed, None is equivalent to passing zero, and any other object is printed to stderr and results in an exit code of 1. In particular, sys.exit("some error message") is a quick way to exit a program when an error occurs.

内置的exit函数也做同样的事情。一般来说,通过从模块导入来隐藏内置函数并不重要,但在这种情况下并不重要。建议的样式为

1
2
import sys
sys.exit("My exception")

如果这对您来说不具有指导意义,您可以使用OS.exit绕过异常处理。不要无缘无故地这么做


您必须正确缩进:

1
2
if not (userResponse =="n" or userResponse =="y") :
    exit('Error')

您还可以引发异常以获取更具描述性的错误消息:

1
2
3
userResponse = input ("n or y?")
if not (userResponse =="n" or userResponse =="y") :
    raise ValueError('Does not work')


追踪@mrcarnimore…

1
2
3
4
5
6
from sys import exit

userResponse = raw_input("n or y?")
if not (userResponse =="n" or userResponse =="y"):
     print('Error Message Here')
     exit(1)