Наша найкраща подруга Марта нещодавно отримала роботу своєї мрії: вона працює з колекціями місцевого історичного музею. Знаючи про наше зацікавлення програмуванням, вона розповідає нам про проблему на роботі, повʼязану з майбутньою виставкою про історію обчислювальної техніки. Кафедра математики місцевого університету передала кілька коробок історичних роздруківок, але через поганий стан документів було вирішено оцифрувати текст. Однак старий університетський принтер мав деякі дивацтва в тому, як він представляв текст, тож наша допомога стала б у пригоді нашій подрузі, щоб успішно видобути дані.
Оптичне розпізнавання символів, або OCR, - це програмне забезпечення, яке перетворює зображення тексту на текст, який може прочитати компʼютер.
Перетворіть сітку символів, що зображують якісь цифри, на рядок тексту (англ. string) із цих цифр.
Якщо сітка містить кілька ліній комірок, ці лінії потрібно розділити у виводі за допомогою ",".
"|"), підкреслень ("_") і пробілів (" ")."?" замість цього символу.Наведені нижче вхідні дані (без коментарів) перетворюються на "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
Наведені нижче вхідні дані перетворюються на "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Іноді потрібно підняти виняток. Коли ми це робимо, завжди варто додати змістовне повідомлення про помилку, яке вказує на джерело помилки. Це робить код зрозумілішим і значно допомагає під час налагодження. У ситуаціях, коли ми знаємо, що джерело помилки має певний тип, можна підняти один із вбудованих типів помилок, але повідомлення все одно має бути змістовним.
Ця конкретна вправа вимагає, щоб ми скористалися інструкцією raise, щоб «кинути» ValueError, коли функція convert() отримує рядок тексту (англ. string), який не є коректним числом OCR. Тести пройдуть лише тоді, коли ми і піднімемо exception, і додамо до нього повідомлення.
Щоб підняти ValueError з повідомленням, запишіть повідомлення як аргумент до типу exception:
# when the rows aren't multiples of 4
raise ValueError("Number of input lines is not a multiple of four")
# when the columns aren't multiples of 3
raise ValueError("Number of input columns is not a multiple of three")
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.