关于python:在Spyder中正确终止脚本而没有错误消息

Properly terminate script without error message in Spyder

因此,对于我在Python中的项目,我将接受两个输入,比如A&B作为整数值。现在代码是这样的:

1
2
3
4
5
6
7
8
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

现在这个很好用。但创建了一个额外的语句

1
2
3
An exception has occurred, use %tb to see the full traceback.

SystemExit

我不希望这样,因为用户可能认为代码的功能不正常。那么,有没有什么方法可以不显示这个语句,或者任何其他函数可以退出代码而不打印任何东西,除了我写的行?

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

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

1
2
3
4
5
6
7
8
9
10
11
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。


这似乎很管用:

1
2
3
4
5
6
7
8
9
10
11
12
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并修正了您的条件,以避免将字符串与整数进行比较。我在输出中看不到任何其他消息。仅此:

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

请同时注意python docs中的此Qoute:

The standard way to exit is sys.exit(n). [os]_exit() should normally only
be used in the child process after a fork().

它也在repl中工作


您可以使用os._exit()

1
2
3
4
5
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)