python中的阿姆斯特朗数

2024-10-01 11:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

num=int(input("please enter number: "))
for num in range(num, 1000):
    sum1=0
    numcp=num
    if(num>=10 and num<100):
        while(num>0):
            digit=int(num%10)
            d2=digit*digit
            sum1=sum1+d2
            num=int(num/10)

    if(num>=100 and num<1000):
        while(num>0):
            digit=int(num%10)
            d2=digit*digit*digit
            sum1=sum1+d2
            num=int(num/10)
    if(numcp==sum1):
        print("angstrong number: ", sum1)

这个python代码有什么问题。它工作到407然后停止。我不明白为什么当我提供的范围是1000时它会停止。在

已编辑

在100000或1000000之前,还有其他更像Python的方法。在

我不想复制这个if块(if(num>;=10和num<;100))很多次,因为它决定了位数。在


Tags: andinnumberforinputifnumint
3条回答

String遍历String中的每个字符是很简单且可读的。如果您将输入数字转换为String,那么迭代数字并计算一个数字是否为Armstrong Number将变得非常简单

看看这个简单的解决方案:

def armstrong_number(number):
    result = 0
    snumber = str(number)
    l = len(snumber)
    for digit in snumber:
        result += int(digit)**l
        if result > number:
            return False
    if result != number:
        return False
    return True

这是一种新方法

n=list(map(int, raw_input()))

l=len(n)
sum=0
for i in n:
    sum=sum+pow(i,l)

sum=str(sum)
s=[]
for y in sum:
    s.append(int(y))

if(sorted(n)==sorted(s)):
    print('armstrong')
else:
    print('not armstrong')

Armstrong numbers?到目前为止你似乎是对的

The following is the output from the above program. Thus, there are six Armstrong numbers in the range of 0 and 999.
Armstrong numbers: 0, 1, 153, 370, 371, 407

如果你想知道你是否到达终点,你应该把

print(num)

循环后

相关问题 更多 >