Palíndromo
Comprueba si una cadena se lee igual al derecho que al revés. Domina el slicing de strings y la normalización de texto en Python.
slicing [::-1] str.lower() str.replace() comparación de strings
El problema
Escribe una función es_palindromo(texto) que devuelva True si el texto es un palíndromo.
La función debe ignorar mayúsculas, espacios y signos de puntuación:
"Amo la paloma"→True(amolapaloma invertido es amolapaloma)"radar"→True"Python"→False
Ejemplos
| texto | resultado |
|---|---|
"radar" | True |
"Anita lava la tina" | True |
"A man a plan a canal Panama" | True |
"Python" | False |
"hello" | False |
Código inicial
def es_palindromo(texto):
# Tu código aquí
pass
print(es_palindromo("radar")) # True
print(es_palindromo("Anita lava la tina")) # True
print(es_palindromo("Python")) # False
Concepto clave: el slicing inverso [::-1]
Python permite invertir cualquier secuencia con el slice [::-1]:
"hola"[::-1] # "aloh"
[1, 2, 3][::-1] # [3, 2, 1]
El truco s == s[::-1] comprueba si una cadena es igual a su inverso en una sola línea.
Variante: palíndromo de números
def es_palindromo_numero(n):
s = str(abs(n)) # abs() para manejar negativos
return s == s[::-1]
print(es_palindromo_numero(121)) # True
print(es_palindromo_numero(-121)) # False (los negativos no son palíndromos)
print(es_palindromo_numero(1221)) # True
Próximos pasos
- Escribe la versión sin usar slicing: usa dos punteros, uno desde el inicio y otro desde el final
- Comprueba si una lista es palíndromo:
[1, 2, 3, 2, 1]