Kurzusok
/
Python
Python
/
Feladatok
/
OCR-számok
OCR-számok

OCR-számok

Könnyű

Bevezetés

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.

Utasítások

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.

  • A rács egy vagy több cellsorból áll.
  • A rács minden sorát egy vagy több cella alkotja.
  • Minden cella három oszlop széles és négy sor magas (3x4), és egy számjegyet ábrázol.
  • A számjegyeket függőleges vonalakkal ("|"), aláhúzásokkal ("_") és szóközökkel (" ") rajzolják ki.

Határesetek

  • Ha a bemenet mérete nem megfelelő, a programodnak jeleznie kell, hogy hiba történt.
  • Ha a bemenet mérete megfelelő, de egy cella nem ismerhető fel, akkor a programod írjon "?"-t arra a karakterre.

Példák

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.

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

Kivételüzenetek

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")
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Python Exercism

Készen állsz elkezdeni a(z) OCR-számok feladatot?

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.