Почему он не печатает числа Армстронга до 1000? - PullRequest
1 голос
/ 14 февраля 2020

Он работал без вложенного l oop только для проверки, был ли введенный номер номером Армстронга.

c=0
for y in range(1000):
    for x in str(y):
        c += int(x) ** len(str(y))
        if c == y:
            print(c)

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Ваша проблема в том, что переменная c должна очищаться в каждой итерации:

for y in range(1000):
    c=0
    for x in str(y):
        c += int(x) ** len(str(y))
        if c == y:
            print(c)

Или вы можете использовать вариант, подобный варианту в @CDJB:

for y in range(1000):
    if sum(int(x)**len(str(y)) for x in str(y)) == y:
        print(y) 
1 голос
/ 14 февраля 2020

Поскольку числа Армстронга являются числами такими, что сумма кубов каждого ди git числа равна оригинальному числу. Кажется, ваш код поднимает каждую ди git до n-й степени, где n равно количеству цифр в числе. Приведенный ниже код будет печатать числа Армстронга, меньшие 1000:

for y in range(1000):
    if sum(int(x)**3 for x in str(y)) == y:
        print(y) 

Вывод:

0
1
153
370
371
407

Судя по комментариям, существует несколько определений чисел Армстронга ; если вы ищете другое определение, тогда смотрите ответ @ Mandy007 ниже.

...