Detecta productos palíndromos en un rango dado.
Un número palindrómico es un número que sigue siendo el mismo cuando se invierten sus dígitos.
Por ejemplo, 121 es un número palindrómico, pero 112 no lo es.
Dado un rango de números, encuentra los palíndromos más grande y más pequeño que sean productos de dos números dentro de ese rango.
Tu solución debe devolver los palíndromos más grande y más pequeño, junto con los factores de cada uno dentro del rango. Si el palíndromo más grande o más pequeño tiene más de un par de factores dentro del rango, devuelve todos los pares.
Dado el rango [1, 9] (ambos inclusive)...
Y dada la lista 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 un solo dígito (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).
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).
smallest y largest:Ambas funciones deben recibir dos argumentos de palabra clave:
max_factor: intmin_factor: int, por defecto 0Su valor de retorno debe ser una tuple -- (value, factors), donde value es el palíndromo en sí y factors es un iterable que contiene ambos factores del palíndromo en cualquier orden.
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 a la hora de depurar. En los casos en los que sabes que el origen del error será de un tipo determinado, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.
Este ejercicio en particular requiere que uses la sentencia raise para «lanzar» una ValueError cuando la función largest() o smallest() recibe un par de factores que no están en el rango correcto. Las pruebas solo pasarán si lanzas la exception con raise y además incluyes un mensaje con ella.
Para lanzar una 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")
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.