Ta meilleure amie Marta vient de décrocher le poste de ses rêves : elle travaille sur les collections d'un musée d'histoire local. Sachant que la programmation t'intéresse, elle se confie à toi au sujet d'un problème rencontré au travail, pour une prochaine exposition sur l'histoire de l'informatique. Le département de mathématiques d'une université locale avait fait don de plusieurs cartons d'impressions historiques, mais vu le mauvais état des documents, il a été décidé de numériser le texte. Cependant, la vieille imprimante de l'université avait quelques bizarreries dans sa façon de représenter le texte, et ton amie aurait bien besoin de ton aide pour réussir à extraire les données.
La reconnaissance optique de caractères, ou OCR, est un logiciel qui convertit des images de texte en texte lisible par une machine.
Étant donné une grille de caractères représentant des chiffres, convertis la grille en une chaîne de chiffres.
Si la grille comporte plusieurs lignes de cellules, les lignes doivent être séparées dans la sortie par ",".
"|"), de tirets bas ("_") et d'espaces (" ")."?" pour ce caractère.L'entrée suivante (sans les commentaires) est convertie en "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
L'entrée suivante est convertie en "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Parfois, il est nécessaire de lever une exception. Dans ce cas, il faut toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Lorsque tu sais que l'erreur provient d'un type précis, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois tout de même y joindre un message explicite.
Cet exercice-ci demande d'utiliser l'instruction raise pour « lever » une ValueError lorsque la fonction convert() reçoit une string qui n'est pas un nombre OCR valide. Les tests ne passeront que si tu lèves l'exception avec raise et que tu y joins un message.
Pour lever une ValueError avec un message, écris ce message comme argument du type 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")
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.