Python: try/except 调用返回错误值,except 子句调用不必要

2 投票
1 回答
787 浏览
提问于 2025-04-18 18:13

在附带的代码片段中,目的是接收用户的输入,然后根据输入是否是整数来返回这个整数,或者递归调用这个函数,直到用户输入一个有效的整数。

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)

撰写回答