You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:39:15