阿姆斯特朗在蟒蛇中的数字

时间:2016-02-12 09:21:24

标签: python python-3.x numbers

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时,我无法弄清楚为什么它会停止。

被修改

任何其他更加pythonic的方式,这个数字直到100000或1000000。

我不想复制这个if if(if(num&gt; = 10和num&lt; 100))多次决定数字位数。

11 个答案:

答案 0 :(得分:2)

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

  

以下是上述程序的输出。因此,有   六个阿姆斯壮数字在0和999范围内。
  阿姆斯特朗数字:0,1,153,370,371,407

如果你想知道你是否到了最后,你应该放一个

print(num)

循环之后

答案 1 :(得分:1)

使用String迭代Python中的每个字符,简单易读。如果您将输入数字转换为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

答案 2 :(得分:1)

这是一种新方法

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')

答案 3 :(得分:0)

###### List Comprehension to find Armstrong Number ######

num = raw_input('Enter the number: ')

if sum([int(i) ** len(num) for i in num]) == int(num):
    print num, 'is a Armstrong number'
else:
    print num, 'is NOT Armstrong number'

答案 4 :(得分:0)

这是Python中的简单阿姆斯特朗号码程序

n=input("Enter")
a=len(n)
s=0
x=0
c=int(n)
for i in range(0,a):
    x=int(n[i])
    s=s+x**a
if s==c:
    print("amstrong")
else:
    print("no")

答案 5 :(得分:0)

这是我的

a = input("Please enter a number: ")
t = 0
for i in a: t += int(i) ** len(a)
print(a, "Armstrong.") if t == int(a) else print(a, "Not Armstrong.")

答案 6 :(得分:0)

最简单的方法是通过列表理解。 以下代码段使用范围0到99999

之间的列表推导生成Armstrong数字
print("armstrong a.k.a. narcissistic numbers : ")
armstrong = [x for x in range(100000) if sum(list(map(lambda y: y ** len(str(x)), list(map(int, str(x)))))) == x]
print(armstrong)

输出:

阿姆斯特朗a.k.a.自恋数字:

[0,1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084]

答案 7 :(得分:0)

Armstrong数字查找器(简易版)

#include<stdio.h>

int primeornot(int a)
{
    int i, number_to_increment=0;

    for(i=1;i<=a;i++)
    {
        if(a % i == 0)
        {
            number_to_increment+=1;
        }
        else
        {
            number_to_increment+=0;
        }
    }
    if(number_to_increment==2)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

main()
{
    int number_given_by_user;

    printf("Enter a positive integer to find whether it is prime or not : ");
    scanf("%d",&number_given_by_user);

    if(primeornot(number_given_by_user))
    {
        printf("The given number is a prime number");
    }
    else
    {
        printf("The given number is not a prime number");
    }
}

答案 8 :(得分:0)

或更多种高尔夫代码方式:

n = input("Please enter a number: ")
print(f"{n} is {'' if int(n) == sum(int(i)**len(n) for i in n) else 'not '}an Armstrong number")

例如,输出n = 54748和1000:

# 54748 is an Armstrong number
# 1000 is not an Armstrong number

答案 9 :(得分:0)

阿姆斯壮功能-基本功能

def Armstrong(num):
    listt = []
    summ = 0
    for i in str(num):
        carry = pow(int(i),len(str(num)))
        listt.append(carry)
    for i in listt:
        summ = summ+i
    if num == summ:
        print(num , "is an Armstrong number")
    else:
        print(num , "is NOT an Armstrong number")

答案 10 :(得分:-1)

enter image description here#armstrong数字

在您要检查的阿姆斯壮数字是否存在的范围内生成数字

then