2016-02-12 3 views
0
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.Номера Армстронга в питоне

Edited

любой другой более вещий способ сделать это для числа до 100000 или 1000000.

Я не 't хотите скопировать этот блок if (num> = 10 и num < 100)) много раз, который определяет количество цифр.

ответ

2

Armstrong numbers? Кажется, вы правы до сих пор

Ниже приведена информация о выходе из вышеуказанной программы. Таким образом, есть шесть чисел Armstrong в диапазоне от 0 до 999.
Armstrong цифры: 0, 1, 153, 370, 371, 407

Если вы хотите знать, если вы дошли до конца Вам необходимо вероятно, поставить

print(num) 

после цикла

+0

lol my error Я ожидал большего количества armstrong. – Dementor

+0

Всегда желая, чтобы ваш маленький код был лучше его предшественников :) – Obsidian

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 
+1

Вы должны включить объяснение своего кода. Описание того, как и почему этот код решает проблему, более полезна, так как помогает OP и другим читателям самостоятельно решать эту и подобные проблемы. –

+1

Вы совершенно правы @ ЭнтониГеогеган. – Forge

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

Это Простой Armstrong Номер программы в 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") 
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.") 
Смежные вопросы