Python- Armstrong Number


# Armstrong Number
num= int(input("Enter a number: "))
a=[]
b=[]
while num>0:
digit=num%10   #Taking the last digit
a.append(digit) # creating a list with the individual digits
num=num//10
for i in a:
numb=i**len(a) #Calculating the power
b.append(numb) # Creating a new list with the numbers powered to length of the digits
summ=sum(b)      #Sum of all the digits in the new list "b"
print("Sum is:", summ)
if summ == num:
print("Yes Armstrong No")
else:
print("Not Armstrong")

最后一个sum ==num "if"条件总是返回else条件。

例如,如果我的数字(num)是371,那么3^3+7^3+1^3也是371也就是原始数字=和因此它是阿姆斯特朗数所以它应该返回&;是的阿姆斯特朗数&;但它返回&;no &;(其他条件). .我无法将错误识别为sum ==num(此处为真)。

您正在覆盖号码。

你可以直接写:

num = int(input("Enter a number: "))
sum = 0
for digit in str(num):
sum += int(digit)**len(str(num))
if sum == num:
print("Yes Armstrong No")
else:
print("Not Armstrong")

它会起作用的。

你应该复制你的原始输入:

original_num = int(input("Enter a number: "))
num = original_num

…并检查它,当你覆盖num几次:

if summ == original_num:

最新更新