Python: try/except 调用返回错误值,except 子句调用不必要
在附带的代码片段中,目的是接收用户的输入,然后根据输入是否是整数来返回这个整数,或者递归调用这个函数,直到用户输入一个有效的整数。
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
部分总是跳到except
部分……即使第二次调用时输入的是整数。
总结一下:
verify_input(12) # => 返回 12
verify_input("Hello") # => 返回一个对 verify_input 的调用 ---> 用户输入“12” => 返回 None
。
提前谢谢你。
1 个回答
6
你在except ValueError
这个部分调用verify_input
的时候,忘记加return
了:
try:
return int(user_input)
except ValueError:
return verify_input("Enter a whole number please. ", str_exp=False)