Tracks
/
Python
Python
/
Ejercicios
/
Números OCR
Números OCR

Números OCR

Fácil

Introducción

Tu mejor amiga Marta acaba de conseguir el trabajo de sus sueños trabajando con las colecciones de un museo de historia local. Como sabe que te interesa la programación, te confía un problema que tiene en el trabajo para una próxima exposición sobre la historia de la computación. El departamento de matemáticas de una universidad local había donado varias cajas de impresiones históricas, pero dado el mal estado de los documentos, se tomó la decisión de digitalizar el texto. Sin embargo, la vieja impresora de la universidad tenía algunas peculiaridades en cómo representaba el texto, y tu amiga podría usar tu ayuda para extraer los datos con éxito.

Instrucciones

El reconocimiento óptico de caracteres, u OCR, es un software que convierte imágenes de texto en texto legible por máquina. Dada una cuadrícula de caracteres que representan algunos dígitos, convierte la cuadrícula en un string de dígitos. Si la cuadrícula tiene varias filas de celdas, las filas deben separarse en la salida con una ",".

  • La cuadrícula está formada por una o más líneas de celdas.
  • Cada línea de la cuadrícula está formada por una o más celdas.
  • Cada celda mide tres columnas de ancho y cuatro filas de altura (3x4) y representa un dígito.
  • Los dígitos se dibujan con barras verticales ("|"), guiones bajos ("_") y espacios (" ").

Casos límite

  • Si la entrada no tiene un tamaño válido, tu programa debe indicar que hay un error.
  • Si la entrada tiene el tamaño correcto, pero una celda no es reconocible, tu programa debe mostrar un "?" para ese carácter.

Ejemplos

La siguiente entrada (sin los comentarios) se convierte en "1234567890".

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

La siguiente entrada se convierte en "123,456,789".

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

Mensajes de excepción

A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y ayuda mucho con el debug. En situaciones en las que sabes que el origen del error será de un tipo determinado, puedes optar por lanzar uno de los tipos de error incorporados, pero aun así debes incluir un mensaje significativo.

Este ejercicio en particular requiere que uses la sentencia raise para «lanzar» un ValueError cuando la función convert() recibe un string que no es un número OCR válido. Las pruebas solo pasarán si usas raise para lanzar la exception y además incluyes un mensaje con ella.

Para lanzar un ValueError con un mensaje, escribe el mensaje como argumento del 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")
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Python Exercism

¿Todo listo para empezar Números OCR?

Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.