在Spyder中正确终止脚本,没有错误消息



SO 对于我的 python 项目,我采用两个输入,比如 a 和 b 作为整数值。现在代码是这样的:

import sys
a = input("enter a")
b = input("enter b")
if a < b:
print(" enter a greater than b and try again")
sys.exit()
# Rest of the code is here

现在这工作正常。但创建了一个额外的语句

An exception has occurred, use %tb to see the full traceback.
SystemExit

我不希望这样,因为用户可能认为代码的功能不正确。那么有没有办法不显示此语句或任何其他函数,可以在不打印除我编写的行之外的任何内容的情况下退出代码?

注意我已经尝试了 exit((,但它继续执行它下面的代码。另外,我注意到了这个相关问题,但在这种情况下,那里列出的方法不起作用。

编辑:我正在添加更多信息。我需要把这个退出函数放到一个用户定义的函数中,这样每次用户输入一些错误的数据时,代码都会调用这个用户定义的函数,并退出代码。 如果我尝试将我的代码放在 if else 语句中,例如

def end():
print("incorrect input try again")
os.exit()
a = input("enter data")
if a < 10:
end()
b = input ("enter data")
if b < 20:
end()
# more code here

我不知道为什么,但我什至无法最终定义这个用户定义的函数,因为它引发了未定义函数 end(( 的错误。我在Windows上使用Python和Spyder。

您可以使用os._exit()

a = int(input("enter a"))
b = int(input("enter b"))
if a < b:
print(" enter a greater than b and try again")
os._exit(0)

这似乎工作得很好:

import sys
def end():
print("incorrect input try again")
sys.exit(1)
a = input("enter data")
if int(a) < 10:
end()
b = input ("enter data")
if int(b) < 20:
end()

我使用了sys.exit并修复了您的条件,以避免将字符串与整数进行比较。我在输出中看不到任何其他消息。只有这个:

>py -3 test2.py
enter data1
incorrect input try again
>

另请注意 python 文档中的这个 qoute:

退出的标准方法是 sys.exit(n(。[os]_exit(( 通常应该只 在 fork(( 之后的子进程中使用。

它也适用于 repl

相关内容

  • 没有找到相关文章

最新更新