12.12.2017, 18:48 [+3 UTC]
в нашей команде: 2 373 чел. | участники онлайн: 17 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
12.12.2017, 02:52

Последний вопрос:
12.12.2017, 17:45

Последний ответ:
12.12.2017, 16:34

Последняя рассылка:
12.12.2017, 18:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
16.12.2009, 23:37 »
Николай // Programmator
Подробно и понятно, спасибо Вам огромное! [вопрос № 175365, ответ № 257820]
18.11.2009, 07:42 »
Roma2010
Cпасибо за ценный совет! GRUB уже и установил! [вопрос № 174334, ответ № 256648]
31.10.2009, 23:54 »
Rasul
Спасибо за совет! Удалил 2 антивируса, оставил НОД32. [вопрос № 173865, ответ № 256059]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 498
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 52
Хватов Сергей
Статус: Академик
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 191958
Раздел: • PHP / Perl / Python
Автор вопроса: KSIW2S (Посетитель)
Отправлена: 01.12.2017, 19:09
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:

Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в K -ю степень (где K – количество цифр в числе) равна самому числу. Например,
153 = 1^3 + 5^3 + 3^3 .
Напишите программу, которая находит все числа Армстронга на отрезке [ a , b ] .
Входные данные
Входная строка содержит два натуральных числа – значения a и b , разделённых пробелами. Гарантируется, что a ≤ b .
Выходные данные
Программа должна вывести в одну строчку все числа Армстронга на отрезке [ a , b ] , разделив их пробелами. Если таких чисел нет, программа должна вывести число -1.
Примеры
входные данные
100 400
выходные данные
153 370 371
входные данные
500 600
выходные данные
-1

На языке PYTHON!!! Заранее спасибо!!!

Состояние: Консультация закрыта

Здравствуйте, KSIW2S!

Попробуйте вот такой вариант:

Код (Python) :: выделить код
def digits(n, d=[]): 
   return digits(n//10, [n%10]+d) if n else d or [0]
a, b = map(int, input().split())
s = []
for x in range(a,b+1):
   d = digits(x)
   if x==sum(map(lambda x: x**len(d), d)):
      s.append(str(x))
if len(s)==0:
   s.append("-1")
print(' '.join(s))

Не забывайте отступы внутри for и if - в Python это важно.


Консультировал: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Дата отправки: 06.12.2017, 14:52

5
нет комментария
-----
Дата оценки: 06.12.2017, 17:10

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 191958

Коцюрбенко Алексей aka Жерар
Мастер-Эксперт

ID: 312929

# 1

= общий = | 04.12.2017, 05:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
KSIW2S:

Попробуйте вот такой вариант:

Код (Python) :: выделить код
def digits(n, d=[]): 
   return digits(n//10, [n%10]+d) if n else d or [0]
a, b = map(int, input().split())
s = []
for x in range(a,b+1):
   d = digits(x)
   if x==sum(map(lambda x: x**len(d), d)):
      s.append(str(x))
if len(s)==0:
   s.append("-1")
print(' '.join(s))

Не забывайте отступы внутри for и if - в Python это важно.

• Отредактировал: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
• Дата редактирования: 04.12.2017, 05:40

KSIW2S
Посетитель

ID: 401415

# 2

= общий = | 04.12.2017, 07:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

Здравствуйте, а нет ли решения этого задания с использованием более простых функций, просто многое из выше написанного я не знаю

Коцюрбенко Алексей aka Жерар
Мастер-Эксперт

ID: 312929

# 3

= общий = | 04.12.2017, 12:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
KSIW2S:

© Цитата:
а нет ли решения этого задания с использованием более простых функций, просто многое из выше написанного я не знаю

Есть, но оно будет намного объёмнее. А какие из функций Вы не знаете?

KSIW2S
Посетитель

ID: 401415

# 4

= общий = | 04.12.2017, 12:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

While, for, if,list

Коцюрбенко Алексей aka Жерар
Мастер-Эксперт

ID: 312929

# 5

= общий = | 05.12.2017, 07:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
KSIW2S:

© Цитата:
While, for, if, list

Это, строго говоря, не функции, а операторы языка. Работают они практически так же, как и в других языках (C, Java, PHP и т.п.).
Оператор if проверяет заданное в нём условие; если оно истинно, то выполняется следующие за ним (после двоеточия) операторы - до окончания соответствующего отступа. В противном случае аналогичным образом выполняются следующие операторы elif (со своими условиями), пока не встретится тот, чьё условие выполняется (или не дойдём до оператора else - его содержимое выполняется без условий).
Оператор цикла while делает то же самое, но несколько раз - повторно, пока выполняется условие.
Оператор цикла for так же выполняется несколько раз, но не в зависимости от условия, а для всех элементов какого-либо списка (словаря, строки и т.п.).
А list - это, собственно, как раз оператор создания списка.

KSIW2S
Посетитель

ID: 401415

# 6

= общий = | 05.12.2017, 07:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

Странно, нам всегда говорили, что это функции

Коцюрбенко Алексей aka Жерар
Мастер-Эксперт

ID: 312929

# 7

= общий = | 05.12.2017, 12:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
KSIW2S:

© Цитата:
Странно, нам всегда говорили, что это функции

В самом широком смысле - да, но обычно используют термин "оператор" (или "синтаксическая конструкция"). А функцией (процедурой, подпрограммой - это обычно синонимы) принято называть фрагмент программы, к которому можно обратиться из других частей программы, причём неоднократно. Операторы же выполняются "на месте" (в той части программы, где они расположены) и только один раз (циклические могут и несколько раз, но при соответствующих условиях).

KSIW2S
Посетитель

ID: 401415

# 8

= общий = | 05.12.2017, 14:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

Спасибо, теперь буду знать

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.32436 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн