在附加的代码片段中,目标是接收用户输入,并根据输入是否为整数返回整数或递归调用函数,直到给出有效整数。
def verify_input(msg, str_exp=True, req_str=None):
user_input = input(msg)
if str_exp:
pass # TODO: implement later
else:
try:
return int(user_input)
except ValueError:
verify_input("Enter a whole number please. ", str_exp=False)
如果用户在第一个函数调用 中正确响应(即整数),则该整数确实从函数返回。
问题是,如果用户行为不当并且首先没有用整数响应,只在后续尝试时给出整数,我可以看到,使用调试器, try
子句 always 转到 except
子句...即使第二次调用是使用整数。
总结:
verify_input(12) # => 返回 12
verify_input("Hello") # => 返回对 verify_input 的调用 ---> 用户给出答案“12” => 返回 None
。
提前致谢。
最佳答案
当您在 except ValueError
block 中调用 verify_input
时,您缺少一个 return
:
try:
return int(user_input)
except ValueError:
return verify_input("Enter a whole number please. ", str_exp=False)
关于Python:try/except 调用返回错误值,不需要调用 except 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452955/