Track
/
Python
Python
/
Esercizi
/
Numeri OCR
Numeri OCR

Numeri OCR

Facile

Introduzione

La tua migliore amica Marta ha recentemente trovato il lavoro dei suoi sogni: lavora con le collezioni di un museo di storia locale. Sapendo quanto ti interessa la programmazione, si confida con te su un problema che ha al lavoro, in vista di una prossima mostra sulla storia dell'informatica. Il dipartimento di matematica di un'università locale aveva donato diverse scatole di stampe storiche, ma data la cattiva condizione dei documenti si è deciso di digitalizzare il testo. Tuttavia, la vecchia stampante dell'università aveva qualche stranezza nel modo in cui rappresentava il testo, e alla tua amica servirebbe il tuo aiuto per riuscire a estrarre i dati.

Istruzioni

Il riconoscimento ottico dei caratteri, o OCR, è un software che converte immagini di testo in testo leggibile da una macchina. Data una griglia di caratteri che rappresenta alcune cifre, converti la griglia in una stringa di cifre. Se la griglia ha più righe di celle, le righe vanno separate nell'output con una ",".

  • La griglia è fatta di una o più righe di celle.
  • Ogni riga della griglia è fatta di una o più celle.
  • Ogni cella è larga tre colonne e alta quattro righe (3x4) e rappresenta una cifra.
  • Le cifre sono disegnate usando pipe ("|"), underscore ("_") e spazi (" ").

Casi limite

  • Se l'input non ha una dimensione valida, il programma dovrebbe indicare che c'è un errore.
  • Se l'input ha la dimensione corretta, ma una cella non è riconoscibile, il programma dovrebbe produrre un "?" per quel carattere.

Esempi

Il seguente input (senza i commenti) viene convertito in "1234567890".

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # Decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # The fourth line is always blank,

Il seguente input viene convertito in "123,456,789".

    _  _ 
  | _| _|
  ||_  _|
         
    _  _ 
|_||_ |_ 
  | _||_|
         
 _  _  _ 
  ||_||_|
  ||_| _|
         

Messaggi delle eccezioni

A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo per indicare qual è l'origine dell'errore. Così il codice diventa più leggibile e il debugging ne risulta molto più semplice. Nei casi in cui sai che l'origine dell'errore sarà di un certo tipo, puoi scegliere di sollevare uno dei tipi di errore predefiniti, ma dovresti comunque includere un messaggio significativo.

Questo particolare esercizio richiede di usare l'istruzione raise per «lanciare» un ValueError quando la funzione convert() riceve una stringa che non è un numero OCR valido. I test passeranno solo se usi raise sull'exception e ci alleghi anche un messaggio.

Per sollevare un ValueError con un messaggio, scrivi il messaggio come argomento del tipo 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")
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Python Exercism

Vuoi iniziare Numeri OCR?

Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.