Числа OCR

Числа OCR

Легка

Вступ

Наша найкраща подруга Марта нещодавно отримала роботу своєї мрії: вона працює з колекціями місцевого історичного музею. Знаючи про наше зацікавлення програмуванням, вона розповідає нам про проблему на роботі, повʼязану з майбутньою виставкою про історію обчислювальної техніки. Кафедра математики місцевого університету передала кілька коробок історичних роздруківок, але через поганий стан документів було вирішено оцифрувати текст. Однак старий університетський принтер мав деякі дивацтва в тому, як він представляв текст, тож наша допомога стала б у пригоді нашій подрузі, щоб успішно видобути дані.

Вказівки

Оптичне розпізнавання символів, або OCR, - це програмне забезпечення, яке перетворює зображення тексту на текст, який може прочитати компʼютер. Перетворіть сітку символів, що зображують якісь цифри, на рядок тексту (англ. string) із цих цифр. Якщо сітка містить кілька ліній комірок, ці лінії потрібно розділити у виводі за допомогою ",".

  • Сітка складається з однієї або більше ліній комірок.
  • Кожна лінія сітки складається з однієї або більше комірок.
  • Кожна комірка має три стовпці завширшки і чотири рядки заввишки (3x4) і зображує одну цифру.
  • Цифри намальовані за допомогою вертикальних рисок ("|"), підкреслень ("_") і пробілів (" ").

Крайні випадки

  • Якщо вхідні дані мають неправильний розмір, ваша програма має повідомити про помилку.
  • Якщо вхідні дані мають правильний розмір, але якусь комірку не вдається розпізнати, ваша програма має вивести "?" замість цього символу.

Приклади

Наведені нижче вхідні дані (без коментарів) перетворюються на "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")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Python Exercism

Час розпочати Числа OCR?

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