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.
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 ",".
"|"), underscore ("_") e spazi (" ")."?" per quel carattere.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".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
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")
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.