A legjobb barátod, Marta nemrég kapta meg álmai állását egy helyi történeti múzeum gyűjteményénél. Mivel tudja, hogy érdekel a programozás, bizalmasan elmesél neked egy problémát a munkájából: hamarosan kiállítás nyílik a számítástechnika történetéről. Egy helyi egyetem matematikai tanszéke több doboznyi történelmi nyomtatványt adományozott, de mivel a dokumentumok rossz állapotban vannak, úgy döntöttek, hogy digitalizálják a szöveget. A régi egyetemi nyomtatóban azonban volt néhány furcsaság abban, ahogy a szöveget megjelenítette, és a barátod szívesen venné a segítségedet, hogy sikeresen kinyerjétek az adatokat.
Az optikai karakterfelismerés (OCR) olyan szoftver, amely a szövegről készült képeket géppel olvasható szöveggé alakítja.
Adott egy karakterekből álló rács, amely számjegyeket ábrázol: alakítsd át a rácsot számjegyekből álló stringgé.
Ha a rács több cellsorból áll, akkor a kimenetben a sorokat "," választja el egymástól.
"|"), aláhúzásokkal ("_") és szóközökkel (" ") rajzolják ki."?"-t arra a karakterre.A következő bemenetből (a megjegyzések nélkül) "1234567890" lesz.
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
A következő bemenetből "123,456,789" lesz.
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Néha szükség van arra, hogy kivételt dobj. Ilyenkor mindig adj meg egy beszédes hibaüzenetet, ami megmutatja, mi a hiba forrása. Ettől olvashatóbb lesz a kódod, és a hibakeresést is jelentősen megkönnyíti. Ha tudod, hogy a hibaforrás egy adott típusú, dobhatod a beépített hibatípusok egyikét, de ilyenkor is szerepeljen benne beszédes üzenet.
Ebben a feladatban a raise utasítással kell „dobnod” egy ValueError-t, amikor a convert() függvény olyan stringet kap, amely nem érvényes OCR-szám. A tesztek csak akkor lesznek sikeresek, ha raise-szel dobod a exception-t, és üzenetet is fűzöl hozzá.
Ha üzenettel szeretnél ValueError-t dobni, írd meg az üzenetet az exception típus argumentumaként:
# 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")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.