Rutas
/
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 en el departamento de colecciones de un museo de historia local. Como sabe de tu interés por la programación, te cuenta un problema que ha surgido en el trabajo para una próxima exposición sobre la historia de la informática. El departamento de matemáticas de una universidad local había donado varias cajas de documentos impresos históricos, pero dado el mal estado en que se encuentran, se ha decidido digitalizar el texto. Sin embargo, la vieja impresora de la universidad tenía algunas peculiaridades a la hora de representar el texto, y tu amiga agradecería 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 representa varios 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 un ",".

  • 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 tiene tres columnas de ancho y cuatro filas de alto (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 facilita mucho la depuración. En situaciones en las que sabes que el origen del error será de un tipo concreto, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.

Este ejercicio en concreto requiere que uses la instrucción 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 con la exception e incluyes además 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 pestaña nueva
Python Exercism

¿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.