为何我的Python递归程序返回None?递归函数返回值问题排查
问题原因分析
你的递归函数出现返回None的问题,核心原因是异常分支里的递归调用没有传递返回值:
- 当第一次输入非整数(比如
ll),触发except块,此时函数会调用inp()发起递归,但这个递归调用的结果没有被return出去。 - 当第二次输入正确的整数(
6),当前递归层级的函数会返回6,但这个返回值只传递给了上一层递归的inp()调用,而上一层函数在except块里没有把这个值返回,所以最外层的inp()最终没有拿到有效返回值,默认返回None。
修正后的代码
只需在except块里加上return,把递归调用的结果传递回去即可:
def inp(): try: k=input("enter") l=int(k) return l except : return inp() # 加上return传递递归结果 print(inp())
运行这段代码,输入错误后再输入正确整数,就能正常输出对应的数值了。
内容的提问来源于stack exchange,提问作者Naruto Naruto
相关产品推荐
相关产品推荐

