为何自定义Python计算器函数递归调用后返回None?
问题原因与解决方法
先看你的原代码:
def num1(): x = input('Enter your first number: ') if x.isdigit(): return int(x) else: num1()
问题出在递归调用的环节:当你输入非数字时,函数进入else分支,执行num1()发起递归,但这个递归的返回值没有被return出去。也就是说,第一次调用num1()时,如果输入非数字,它会调用新的num1(),但新的num1()返回的数值不会被传递回第一次的调用,第一次的num1()在else分支里没有返回任何值,所以默认返回None。
修复方法很简单,在else分支里加上return,把递归调用的结果返回出去:
def num1(): x = input('Enter your first number: ') if x.isdigit(): return int(x) else: return num1()
这样不管递归多少次,最终的有效数值都会沿着调用链返回出去,就不会出现返回None的情况了。
内容的提问来源于stack exchange,提问作者Joseph Tiglao
相关产品推荐
相关产品推荐

