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

Python如何对数组列表求和?三位数立方及自幂数求解

解决三位数各位数字立方和计算及筛选问题

先修正单个数字的立方和计算代码

你原来的sum_of_digits_cubed函数存在问题:它没有使用传入的参数y,而是直接依赖外部变量a,复用性差。可以把拆分数字和求和合并成一个更简洁的函数:

def digit_cube_sum(n):
    # 直接计算各位数字的立方和,无需先返回数组
    return sum(int(digit)**3 for digit in str(n))

# 测试单个数字
n = 123
print(digit_cube_sum(n))  # 输出36,符合预期

生成所有三位数的立方和列表

你之前的list_split_cube函数只是打印数组,没有返回值,所以变量a会是None。现在用上面的函数批量计算:

# 生成100到999所有数的立方和列表
three_digit_cube_sums = [digit_cube_sum(num) for num in range(100, 1000)]

# 打印前4个结果,对应你给出的数组求和:1、2、9、28
print(three_digit_cube_sums[:4])  # 输出 [1, 2, 9, 28]

筛选出各位立方和等于自身的数(阿姆斯特朗数)

直接用列表推导式筛选即可:

# 筛选三位数中的阿姆斯特朗数
armstrong_numbers = [num for num in range(100, 1000) if digit_cube_sum(num) == num]

print(armstrong_numbers)  # 输出 [153, 370, 371, 407]

为什么你之前添加sum会出错?

你原来的list_split_cube函数没有返回任何数据(仅执行print操作),所以a是None,对None调用sum自然会报错。现在的方案直接跳过生成数组的步骤,直接计算求和结果,更高效也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:24:25