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

为何我的Python阿姆斯特朗数(Armstrong number)代码无法正常运行?

问题分析与解决方法

你的代码核心问题是原始输入的number被循环修改为0,导致最后判断阿姆斯特朗数的逻辑完全错误。

具体问题点

第一个循环中,你执行了number = number // 10,每次循环都会把number缩小10倍,循环结束后number已经变成0。此时判断if int(s) == int(number),本质是在判断幂次和s是否等于0,这显然和阿姆斯特朗数的判断逻辑(幂次和等于原始数字)不符。

修正后的代码

只需要在最开始保存原始输入的数值,用这个原始值完成最后的对比即可:

original_number = int(input('Enter a number'))
number = original_number  # 复制一份用来拆解数字,不改动原始值
n = len(str(original_number))
m = s = 0
list1 = []
for i in range(n):
    m = number % 10
    print(m)
    list1.append(m)
    number = number // 10
print(list1)

for o in list1:
    p = o ** n
    s = s + p
    print(s, 'is the sum of nth power of individual terms')

if s == original_number:
    print('It is an armstrong number')
else:
    print('It is not an armstrong number')

可选优化方案

如果想简化代码,可以直接遍历原始数字的字符串形式,省去取模和整除的步骤:

original_number = int(input('Enter a number'))
digit_count = len(str(original_number))
power_sum = sum(int(digit)**digit_count for digit in str(original_number))

print('It is an armstrong number' if power_sum == original_number else 'It is not an armstrong number')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:15:40