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

时间:2014-08-22 17:55:50

标签: 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子句总是转到except子句......即使第二次调用是一个整数。

总结一下:
verify_input(12)#=>返回12
verify_input(“你好”)#=>返回调用verify_input --->用户给出答案“12”=>返回None

提前致谢。

1 个答案:

答案 0 :(得分:8)

当您在return区块中致电verify_input时,您错过了except ValueError

try:
    return int(user_input)
except ValueError:
    return verify_input("Enter a whole number please. ", str_exp=False)