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

为什么Python中isFour函数调用返回None而非预期的True?

代码返回None的问题分析

核心问题如下:

  • 递归调用未添加return返回值:Python函数默认没有显式写return语句时会返回None,你在int>0分支中仅执行了递归调用,没有将递归的执行结果返回给上层调用,因此外层调用isFour(16)最终拿到的是默认返回的None。
  • 递归调用的函数名拼写错误:你定义的函数名为isFour,但代码中递归调用的是未定义的isPositive,实际运行时会直接抛出NameError,即便你是笔误写错了函数名,缺少return的问题依然会导致返回None。
  • 除法逻辑与参数命名不规范:使用/做除法会得到浮点数,虽然Python中4.0 == 4返回True,但使用//做整数除法更符合业务逻辑;同时不建议使用Python内置类型名int作为参数名,会覆盖内置类型导致后续使用异常。

修正后的代码

def isFour(num):
    if num == 4:
        return True
    if num > 0:
        return isFour(num // 2)
    return False

print(isFour(16))

运行上述代码即可得到期望输出True。

内容的提问来源于stack exchange,提问作者hello1949

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:39:02