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

Python阿姆斯特朗数代码问题:判断条件始终执行else分支

阿姆斯特朗数判断代码的错误分析与修复

错误原因

你的代码核心问题是在循环中修改了原始输入的num变量:
在while num>0循环里,每次执行num=num//10,循环结束后num的值会变成0。最后判断summ == num时,实际是拿计算出的阿姆斯特朗和与0比较,自然永远进入else分支。

比如输入371,循环结束后num变为0,而summ是371,371≠0,所以输出"Not Armstrong"。

修复后的代码

只需要保存原始输入的数值,用新变量参与最终判断即可:

# Armstrong Number
num = int(input("Enter a number: "))
original_num = num  # 保存原始输入值
a = []
b = []
while num > 0:
    digit = num % 10   # 取最后一位数字
    a.append(digit) # 存储各位数字到列表
    num = num // 10

for i in a:
    numb = i ** len(a) # 计算各位数字的位数次方
    b.append(numb) # 存储计算结果到列表

summ = sum(b)      # 计算所有结果的和
print("Sum is:", summ)

if summ == original_num:  # 和原始输入值比较
    print("Yes Armstrong No")
else:
    print("Not Armstrong")

验证

输入371时,original_num保留了371,summ计算结果也是371,此时判断条件成立,会输出"Yes Armstrong No"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:05:20