Rutas
/
Python
Python
/
Ejercicios
/
Productos palíndromos
Productos palíndromos

Productos palíndromos

Media

Instrucciones

Detecta productos palíndromos en un rango dado.

Un número palíndromo es un número que sigue siendo el mismo cuando se invierten sus cifras. Por ejemplo, 121 es un número palíndromo, pero 112 no lo es.

Dado un rango de números, encuentra los palíndromos mayor y menor que sean producto de dos números dentro de ese rango.

Tu solución debe devolver los palíndromos mayor y menor, junto con los factores de cada uno dentro del rango. Si el palíndromo mayor o el menor tiene más de un par de factores dentro del rango, devuelve todos los pares.

Ejemplo 1

Dado el rango [1, 9] (ambos inclusive)...

Y dado el array de todos los productos posibles dentro de este rango: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

Los productos palíndromos son todos números de una sola cifra (en este caso): [1, 2, 3, 4, 5, 6, 7, 8, 9]

El producto palíndromo más pequeño es 1. Sus factores son (1, 1). El producto palíndromo más grande es 9. Sus factores son (1, 9) y (3, 3).

Ejemplo 2

Dado el rango [10, 99] (ambos inclusive)...

El producto palíndromo más pequeño es 121. Sus factores son (11, 11). El producto palíndromo más grande es 9009. Sus factores son (91, 99).

Notas sobre la implementación de smallest y largest:

Ambas funciones deben recibir dos argumentos de palabra clave:

  • max_factor: int
  • min_factor: int, por defecto 0

Su valor devuelto debe ser una tuple -- (value, factors), donde value es el propio palíndromo y factors es un iterable que contiene ambos factores del palíndromo en cualquier orden.

Mensajes de excepción

En ocasiones es necesario lanzar una excepción. Cuando lo hagas, conviene incluir siempre 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 debugging. En los casos en los que sepas que el origen del error va a 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 largest() o smallest() reciba un par de factores que no estén en el rango correcto. Los tests solo pasarán si usas raise con 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:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Python Exercism

¿Listo para empezar Productos palíndromos?

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