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

Python判断Perfect Number函数返回None而非False该如何修改

代码问题分析与调整方案

你遇到的返回None的问题,以及代码本身的逻辑问题,需要调整以下两处:

  • 仅在「输入小于0」「循环中求和等于输入值」两个分支加了return语句,当非完数走完整个for循环后,函数没有任何返回动作,会默认返回None。需要在函数末尾统一加返回结果的逻辑,覆盖所有执行分支。
  • 求和等于原数的判断放在了for循环内部,还没遍历完所有真因子就做判断,本身逻辑不符合完数的计算规则,应该遍历完所有1到number-1的数、算完总因子和之后再做比较。

额外规范建议:不要用sum作为变量名,sum是Python内置的求和函数名,自定义变量覆盖内置函数名属于不规范写法,容易引发后续问题。


修改后的参考代码

def perfect(number):
    total = 0
    is_perfect = False
    if number < 0:
        return is_perfect
    # 遍历所有真因子求和
    for i in range(1, number):
        if number % i == 0:
            total += i
    # 求和完成后再判断是否为完数
    if total == number:
        is_perfect = True
    # 统一返回结果,覆盖所有分支
    return is_perfect

print(perfect(8)) # 输出False
print(perfect(6)) # 输出True

内容的提问来源于stack exchange,提问作者M. Vladimir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:00