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

标签 python recursion try-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 子句 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/

相关文章:

python - 带模数的 Numpy 矩阵幂/指数?

如果最终返回值,则不会引发 python 异常

python try/except/else 递归

python - 尝试/异常(exception)问题Python 2.7

python - 在 Emacs 中使用 Python 的 Unicode 转换问题

python - 如何计算 python pandas dataframe 中的复合指标

python - pygame需要键盘中断来初始化显示

python - 计算 1 到 n 之和的递归函数?

python - 将递归问题代码从 Python 转换为 Common Lisp

c - 从列表中选择升序不连续数字的递归算法