Ми працюємо в державній установі, яка перехопила серію зашифрованих сигналів звʼязку від групи банківських грабіжників. Сигнали містять довгу послідовність цифр. Нашій команді потрібно застосувати різні методи цифрового оброблення сигналів, щоб проаналізувати ці сигнали і виявити закономірності, які можуть указувати на підготовку пограбування.
Наше завдання - шукати закономірності в довгій послідовності цифр зашифрованого сигналу.
Техніка, яку ми тут застосуємо, називається найбільшим добутком серії.
Спершу визначмо кілька термінів.
Розгляньмо приклад із вхідними даними "63915".
3, можливих серій буде три:
"639""391""915""639" дорівнює 162 (6 × 3 × 9 = 162)"391" дорівнює 27 (3 × 9 × 1 = 27)"915" дорівнює 45 (9 × 1 × 5 = 45)"63915" дає серія "639".
Отже, відповідь - 162.Іноді потрібно викликати виняток. Роблячи це, варто завжди додавати змістовне повідомлення про помилку, яке вказує на джерело помилки. Це робить наш код зрозумілішим і значно спрощує налагодження. У ситуаціях, коли відомо, що джерело помилки матиме певний тип, можна викликати один із вбудованих типів помилок, але все одно варто додати змістовне повідомлення.
Ця вправа вимагає, щоб ми використали інструкцію raise і «кинули» ValueError, коли наша функція largest_product() отримує некоректні вхідні дані. Тести пройдуть лише тоді, коли ми і викличемо exception через raise, і додамо до нього повідомлення. Можна сміливо повторно використати код із вправи series!
Щоб викликати ValueError із повідомленням, передайте повідомлення як аргумент типу exception:
# span of numbers is longer than number series
raise ValueError("span must not exceed string length")
# span of number is negative
raise ValueError("span must not be negative")
# series includes non-number input
raise ValueError("digits input must only contain digits")
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.