Un palíndromo es una palabra, frase, número o
cualquier otra secuencia de caracteres que se lee igual hacia adelante que hacia
atrás, ignorando los espacios, la puntuación y las mayúsculas/minúsculas.
Solución al Ejercicio: Palíndromos
📋 Copiar código
import re
def es_palindromo_ignorando_no_alfanumericos(texto):
"""
Verifica si una cadena es un palíndromo ignorando caracteres no alfanuméricos y mayúsculas/minúsculas.
Args:
texto: La cadena de texto a analizar.
Returns:
True si la cadena es un palíndromo después de la limpieza, False en caso contrario.
"""
texto_alfanumerico = "".join(re.findall(r'[a-zA-Z0-9]', texto)).lower()
return texto_alfanumerico == texto_alfanumerico[::-1]
# Ejemplo de uso:
texto1 = "A man, a plan, a canal: Panama"
resultado1 = es_palindromo_ignorando_no_alfanumericos(texto1)
print(f"¿'{texto1}' es un palíndromo (ignorando no alfanuméricos)? {resultado1}")
texto2 = "Race car!"
resultado2 = es_palindromo_ignorando_no_alfanumericos(texto2)
print(f"¿'{texto2}' es un palíndromo (ignorando no alfanuméricos)? {resultado2}")
texto3 = "Hello, world."
resultado3 = es_palindromo_ignorando_no_alfanumericos(texto3)
print(f"¿'{texto3}' es un palíndromo (ignorando no alfanuméricos)? {resultado3}")
texto4 = "Was it a car or a cat I saw?"
resultado4 = es_palindromo_ignorando_no_alfanumericos(texto4)
print(f"¿'{texto4}' es un palíndromo (ignorando no alfanuméricos)? {resultado4}")
Explicación de la solución:
import re
:
Importa el módulo re
para trabajar con expresiones regulares.
def
es_palindromo_ignorando_no_alfanumericos(texto):
: Define la
función que toma la cadena texto
como entrada.
texto_alfanumerico = "".join(re.findall(r'[a-zA-Z0-9]',
texto)).lower()
: Limpia la cadena:
re.findall(r'[a-zA-Z0-9]', texto)
:
Encuentra todas las coincidencias de caracteres alfanuméricos (letras de
la 'a' a la 'z', mayúsculas o minúsculas, y dígitos del 0 al 9) en el
texto
. Devuelve una lista de estos caracteres.
"".join(...)
: Une todos los
caracteres alfanuméricos encontrados en una sola cadena.
.lower()
: Convierte la
cadena resultante a minúsculas para la comparación sin distinción de
mayúsculas.
return texto_alfanumerico ==
texto_alfanumerico[::-1]
: Verifica si la cadena alfanumérica
limpia es un palíndromo comparándola con su versión invertida ([::-1]
).
Devuelve True
si son iguales (es un palíndromo) y False
en caso contrario.
¡Intenta implementar esta función y probarla con
los ejemplos proporcionados en el "Ejecutor de Python Interactivo"!