Mar*_* II 5 python exception negative-number
我正在尝试运行一个带有数字的基本提示,然后在其上运行一个递归函数。
任何负数都会导致递归错误,因为函数无法处理它们。
现在,我已经通过 Python 了解到这种情况需要“尝试/除外”模型。这是我想出的:
try:
choice = int(input('Enter a number: '))
INSERT RECURSIVE FUNCTION HERE
except RecursionError as err:
print('Error: ', str(err))
Run Code Online (Sandbox Code Playgroud)
这个异常不起作用,因为它仍然用红线显示整个递归过程,我的异常只替换了最后一行。我知道我可以通过逻辑轻松解决这个问题,例如:
if choice < 0:
print("Error: Bro, We don't take no Negative Numbers around here.")
Run Code Online (Sandbox Code Playgroud)
然而,我被告知我们通常希望避免在 Python 中“通过逻辑解决错误”,而是通过“尝试/除外”模型工作。
我该怎么做才能通过“try/except”模型而不是“if/else”来拒绝负数?
如果你能帮助我理解一种对 ValueError 做出反应的方法,那将是另一个很大的帮助。
说,你只想打印正数,如果数字是负数,你会引发异常
a = int(raw_input())
if a < 0:
myError = ValueError('a should be a positive')
raise myError
print(a)
Run Code Online (Sandbox Code Playgroud)
“更喜欢尝试/除外”只是一个指导方针,而不是一个硬性规定。在这种情况下,正如您所发现的那样,它没有任何意义。您应该if choice < 0:
像平常一样使用。
一般来说,有三个选择的理由try/except
,但都不适用于此。
顺便说一句,为什么向新 Python 程序员强调“更喜欢 try/ except”的主要原因是,许多程序员来自异常缓慢或不存在的语言,这使得他们对使用异常产生偏见,即使在适当的情况下也是如此。
归档时间: |
|
查看次数: |
27050 次 |
最近记录: |