Треки
/
Python
Python
/
Вправи
/
Паліндромні добутки
Паліндромні добутки

Паліндромні добутки

Середня

Вказівки

Визначте паліндромні добутки в заданому діапазоні.

Паліндромним називають число, яке не змінюється, якщо його цифри записати у зворотному порядку. Наприклад, 121 - паліндромне число, а 112 - ні.

Для заданого діапазону чисел знайдіть найбільший і найменший паліндроми, які є добутками двох чисел у цьому діапазоні.

Рішення має повернути найбільший і найменший паліндроми разом із множниками кожного з них у межах діапазону. Якщо найбільший або найменший паліндром має більше ніж одну пару множників у межах діапазону, поверніть усі пари.

Приклад 1

Задано діапазон [1, 9] (обидві межі включно)...

І задано масив усіх можливих добутків у межах цього діапазону: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

Паліндромні добутки - це всі одноцифрові числа (у цьому випадку): [1, 2, 3, 4, 5, 6, 7, 8, 9]

Найменший паліндромний добуток дорівнює 1. Його множники: (1, 1). Найбільший паліндромний добуток дорівнює 9. Його множники: (1, 9) і (3, 3).

Приклад 2

Задано діапазон [10, 99] (обидві межі включно)...

Найменший паліндромний добуток дорівнює 121. Його множники: (11, 11). Найбільший паліндромний добуток дорівнює 9009. Його множники: (91, 99).

Зауваження щодо реалізації smallest та largest:

Обидві функції мають приймати два іменовані аргументи:

  • max_factor: int
  • min_factor: int, типове значення 0

Їхнє повернене значення має бути tuple -- (value, factors), де value - сам паліндром, а factors - iterable, що містить обидва множники паліндрома в довільному порядку.

Повідомлення про винятки

Іноді виникає потреба викликати виняток. Коли ми це робимо, слід завжди додавати змістовне повідомлення про помилку, щоб указати, у чому джерело помилки. Це робить код зрозумілішим і значно допомагає під час налагодження. У ситуаціях, коли відомо, що джерело помилки матиме певний тип, можна викликати один із вбудованих типів помилок, але все одно слід додати змістовне повідомлення.

У цій вправі потрібно використати інструкцію raise, щоб «кинути» ValueError, коли функція largest() або smallest() приймає пару множників, які не належать до правильного діапазону. Тести пройдуть, лише якщо ми і викличемо exception за допомогою raise, і додамо до нього повідомлення.

Щоб викликати ValueError з повідомленням, запишіть повідомлення як аргумент до типу exception:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Python Exercism

Час розпочати Паліндромні добутки?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.