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))多次决定数字位数。
答案 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)