Python判断Armstrong number先输出两次错误结果,该如何排查修复?
问题原因
- 判断逻辑被放在了
while循环内部,每处理一位数字就会执行一次判断并输出结果,没有等所有数位的立方和计算完成就提前校验,自然会出现多次输出的情况。 - 以输入153为例,循环会执行3次:
- 第一次取个位3计算立方,累加和为27,与153不相等,输出错误结果
- 第二次取十位5计算立方,累加和为27+125=152,与153不相等,再输出一次错误结果
- 第三次取百位1计算立方,累加和为152+1=153,与153相等,输出正确结果
修复方案
将判断逻辑移出while循环,等所有数位的立方和全部计算完成后,仅做一次判断即可。同时原代码中的elif (x!= sum_)可以直接替换为else,减少重复判断。
修复后代码如下:
x = int(input("enter your number")) f = x sum_ = 0 while(f>0): a =f % 10 f = int(f//10) sum_ =sum_ + (a**3) if x == sum_: print("it is armstrong") else: print(x,"is not an armstrong number")
内容的提问来源于stack exchange,提问作者python_says_hello_world
相关产品推荐
相关产品推荐

