首页 > 解决方案 > Armstrong 数字两次显示错误输出并在最后更正(Python)

问题描述

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")
    elif (x!= sum_):
        print(x,"is not an armstrong number") 

当我运行此代码时,我得到以下输出:

enter your number153
153 is not an armstrong number
153 is not an armstrong number
it is armstrong

为什么它显示错误两次,最后一次正确输出?我怎样才能解决这个问题?

标签: python

解决方案


正如之前的帖子所指出的,if-loop应该将其放在while循环之外以避免重复打印。

或者,您可以将其设为稍后使用的函数:

def is_armstrong(n: int) -> bool:
    num = str(n)
    powered = len(num)

    return n == sum(int(x)** powered for x in num)


if __name__ == '__main__':
     nums = [153, 371, 456]

     for num in nums:
         print(f' {num} is an armstrong? {is_armstrong(num)} ')

     # or calling by asking user input:
     # x = int(input('Type a number to check: '))
     # print(is_armstrong(x))


# 153  True
# 371  True
# 456  False

推荐阅读