A tua melhor amiga, Marta, arranjou recentemente o emprego com que sonhava, a trabalhar nas coleções de um museu de história local. Sabendo do teu interesse por programação, desabafa contigo sobre um problema no trabalho, relacionado com uma próxima exposição sobre a história da informática. O departamento de matemática de uma universidade local tinha doado várias caixas de impressos históricos, mas, dada a má condição dos documentos, decidiu-se digitalizar o texto. No entanto, a impressora antiga da universidade tinha algumas particularidades na forma como o texto era representado, e a tua amiga agradecia uma ajuda tua para extrair os dados com sucesso.
O Reconhecimento Óptico de Carateres, ou OCR, é software que converte imagens de texto em texto legível por máquina.
Dada uma grelha de carateres que representa alguns algarismos, converte a grelha numa string de algarismos.
Se a grelha tiver várias linhas de células, as linhas devem ser separadas na saída por ",".
"|"), sublinhados ("_") e espaços (" ")."?" para esse caráter.A seguinte entrada (sem os comentários) é convertida em "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
A seguinte entrada é convertida em "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Por vezes, é necessário lançar uma exceção. Quando o fazes, deves incluir sempre uma mensagem de erro significativa que indique qual é a origem do erro. Isto torna o teu código mais legível e ajuda imenso no debug. Nos casos em que sabes que a origem do erro vai ser de um determinado tipo, podes optar por lançar um dos tipos de erro incorporados, mas deves continuar a incluir uma mensagem significativa.
Este exercício em particular exige que uses a instrução raise para «lançar» um ValueError quando a função convert() recebe uma string que não é um número OCR válido. Os testes só passam se fizeres raise da exception e incluíres uma mensagem com ela.
Para lançares um ValueError com uma mensagem, escreve a mensagem como argumento do 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")
Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.