我正在做一个python课程,他们在while循环中建议使用try和except块,以便在满足条件之前一直要求输入。凭直觉,我觉得只需要在“ except”块中再次调用该函数就更短了:
def exceptiontest():
try:
print(int(input("number 1: "))+int(input("number 2:")))
except:
print("a mistake happened")
exceptiontest()
exceptiontest()
在课程的论坛上提问时,我得到的答复是不一样。我现在有点困惑。有人可以为我澄清吗?预先感谢!
答案 0 :(得分:4)
如果您继续输入错误的输入,则在except
中调用该函数最终会引发RecursionError: maximum recursion depth exceeded
错误。通常,人类在放弃之前不会输入太多错误数据来击中错误,但是您不必要将函数调用放在堆栈上。
while
循环更好,因为它是一个函数调用,等待有效的输入。 IT不会浪费过多的资源。
答案 1 :(得分:1)
while
循环,有两个原因
答案 2 :(得分:0)
使用while
循环(尚未提及)的另一个原因是,您可以利用Python 3.8附带的assignment expressions。
函数add
封装了获取两个数字并尝试将它们相加的方法。
def add():
'try to add two numbers from user input, return None on failure'
x = input('number 1: ')
y = input('number 2: ')
try:
return float(x) + float(y)
except TypeError, ValueError:
return None
只要没有while
,下面的result
循环就会运行。
while (result := add()) is None:
print('you made a mistake, make sure to input two numbers!')
# use result