Αριθμοί OCR

Αριθμοί OCR

Εύκολο

Εισαγωγή

Η καλύτερή σου φίλη, η Marta, πρόσφατα έπιασε τη δουλειά των ονείρων της, δουλεύοντας με τις συλλογές ενός τοπικού μουσείου ιστορίας. Γνωρίζοντας το ενδιαφέρον σου για τον προγραμματισμό, σου εκμυστηρεύεται ένα ζήτημα στη δουλειά για μια επερχόμενη έκθεση πάνω στην ιστορία των υπολογιστών. Το τμήμα μαθηματικών ενός τοπικού πανεπιστημίου είχε δωρίσει αρκετά κουτιά με ιστορικές εκτυπώσεις, αλλά δεδομένης της κακής κατάστασης των εγγράφων, πάρθηκε η απόφαση να ψηφιοποιηθεί το κείμενο. Ωστόσο, ο παλιός εκτυπωτής του πανεπιστημίου είχε κάποιες ιδιαιτερότητες στον τρόπο που αναπαριστούσε το κείμενο, και η φίλη σου θα χρειαζόταν τη βοήθειά σου για να εξαγάγει με επιτυχία τα δεδομένα.

Οδηγίες

Η Οπτική Αναγνώριση Χαρακτήρων, ή OCR, είναι λογισμικό που μετατρέπει εικόνες κειμένου σε κείμενο αναγνώσιμο από μηχανή. Δεδομένου ενός πλέγματος χαρακτήρων που αναπαριστά κάποια ψηφία, μετέτρεψε το πλέγμα σε μια συμβολοσειρά ψηφίων. Αν το πλέγμα έχει πολλές σειρές κελιών, οι σειρές θα πρέπει να χωρίζονται στην έξοδο με ένα ",".

  • Το πλέγμα αποτελείται από μία ή περισσότερες γραμμές κελιών.
  • Κάθε γραμμή του πλέγματος αποτελείται από ένα ή περισσότερα κελιά.
  • Κάθε κελί έχει πλάτος τρεις στήλες και ύψος τέσσερις σειρές (3x4) και αναπαριστά ένα ψηφίο.
  • Τα ψηφία σχεδιάζονται με κάθετες γραμμές ("|"), κάτω παύλες ("_") και κενά (" ").

Οριακές περιπτώσεις

  • Αν η είσοδος δεν έχει έγκυρο μέγεθος, το πρόγραμμά σου θα πρέπει να δηλώνει ότι υπάρχει σφάλμα.
  • Αν η είσοδος έχει το σωστό μέγεθος, αλλά ένα κελί δεν είναι αναγνωρίσιμο, το πρόγραμμά σου θα πρέπει να βγάζει ένα "?" για αυτόν τον χαρακτήρα.

Παραδείγματα

Η παρακάτω είσοδος (χωρίς τα σχόλια) μετατρέπεται σε "1234567890".

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # Decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # The fourth line is always blank,

Η παρακάτω είσοδος μετατρέπεται σε "123,456,789".

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

Μηνύματα εξαίρεσης

Μερικές φορές είναι απαραίτητο να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα ουσιαστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθά σημαντικά στο debugging. Σε περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά και πάλι θα πρέπει να συμπεριλάβεις ένα ουσιαστικό μήνυμα.

Η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν η συνάρτηση convert() λαμβάνει μια συμβολοσειρά που δεν είναι έγκυρος αριθμός OCR. Τα τεστ θα περάσουν μόνο αν και κάνεις raise το exception και συμπεριλάβεις ένα μήνυμα μαζί του.

Για να πετάξεις ένα ValueError με μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο 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")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Αριθμοί OCR;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.