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

遍历指定范围生成强数列表时返回空列表的问题求助

问题原因

你的代码里l1和l2是全局变量,每次调用strong函数时不会自动清空,导致后续判断时会累加之前所有数字的各位阶乘总和,自然无法正确匹配当前数字,最终得到空列表。

修复后的代码
import math

s = int(input("enter end range: "))
l3 = []

def strong(x):
    l1 = []  # 每次调用函数时重新初始化列表
    l2 = []
    for i in str(x):
        l1.append(int(i))
    for i in l1:
        l2.append(math.factorial(i))
    return sum(l2) == x        

for i in range(0, s + 1):
    if strong(i):
        l3.append(i)
print(l3)
可选优化写法

不用额外列表存储,直接计算阶乘和,代码更简洁:

import math

s = int(input("enter end range: "))
l3 = []

def strong(x):
    total = 0
    for digit in str(x):
        total += math.factorial(int(digit))
    return total == x        

for i in range(0, s + 1):
    if strong(i):
        l3.append(i)
print(l3)

输入150时,输出就是预期的[1, 2, 145]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:10:23