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

Python从列表查找Happy Number时代码无返回结果问题排查

快乐数筛选代码问题排查与修正

你写的代码存在多处逻辑错误,导致无法正常输出结果,具体问题点如下:

  • 未定义存储结果的列表b就直接调用append方法,运行时会直接抛出NameError
  • 逐位拆分数字的逻辑错位:遍历数字每一位的循环里反复将求和变量重置为0,循环结束后仅保留了数字的最后一位,后续平方计算完全无效
  • 平方和计算逻辑位置错误:逐位拆分求平方和的步骤应该放在while循环内部,每次计算完新的平方和后,要对新的数值再次逐位拆分,直到触发终止条件,原代码只对初始数字的最后一位反复做平方计算,会直接触发死循环
  • 返回语句缩进错误:return b被放在了for循环的内部,遍历完列表第一个元素就会直接终止函数执行,不会处理列表剩余元素
  • 求和变量初始逻辑错误:原代码在逐位遍历前把sum赋值为当前遍历到的列表元素,进入逐位循环后又立刻把sum设为0,初始值完全丢失

修正后的可运行代码如下:

a = [1, 4, 7, 82]
def is_happy(num_list):
    res = []
    for num in num_list:
        current = num
        # 用快乐数通用终止规则:收敛到1为快乐数,收敛到4为非快乐数,避免死循环
        while current != 1 and current != 4:
            square_sum = 0
            # 逐位计算平方和
            for d in str(current):
                square_sum += int(d) ** 2
            current = square_sum
        if current == 1:
            res.append(num)
    return res

print(is_happy(a))

代码运行输出结果为[1, 7, 82],符合快乐数的判定规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:17