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() |
号
我使用了
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中工作
您可以使用
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) |