Palíndromos con Python
Los palíndromos son palabras, frases o números que leídos de atrás hacia adelante se
leen igual que de adelante hacia atrás; por ejemplo: arenera y Ana. Para el caso de los
números se les llama comúnmente capicúa; por ejemplo: 1991 y 2002. Este pequeño
programa nos indica si una palabra es o no es palíndromo.
igual, aux = 0, 0
texto = input("Ingrese la palabra que desea evaluar: ")
for ind in reversed(range(0, len(texto))):
if texto[ind].lower() == texto[aux].lower():
igual += 1
aux += 1
if len(texto) == igual:
print("El texto es palindromo:")
else:
print("El texto no es palindromo:")
Con tan solo 13 líneas de código se puede saber si una palabra o frase es palíndromo o
no, esto se debe a que su sintaxis es demasiado simple. Python es un lenguaje
puramente interpretado y dinámico.
Declarando variables:
igual, aux = 0, 0
Creamos 2 variables usando asignación múltiple, esto es posible en Python solo si se
cumple una sola regla, debe existir un número de valores igual al número de variables y
viceversa. Ambas variables son de tipo int y se inicializan con un valor de 0, ellas
jugaran el papel de contador y nos servirá para indicarle al usuario si la palabra
ingresada es o no es palíndromo más adelante cuando se evalúen.
Solicitando y leyendo datos con la función input ():
texto = input("Ingrese la palabra que desea evaluar: ")
Solicitamos al usuario que ingrese una palabra y leemos dicha palabra usando la
función input(), cuyo único argumento es opcional y puede ser un string; a diferencia de
otros lenguajes, en Python esto se hace en una sola línea de código. Por último,
guardamos la palabra en el variable texto para procesarla más adelante.
Bucle for y función reversed(), procesando la información:
for ind in reversed(range(0, len(texto))):
if texto[ind].lower() == texto[aux].lower():
igual += 1
aux += 1
El proceso es muy sencillo en Python, el bucle for va a iterar sobre un rango de
números, pero será un rango invertido. Para generar un rango invertido usamos la
función reversed (), que recibe como único argumento el rango generado por la
función range () que esta última función recibe 2 argumentos, el primero es el valor de
inicio del rango y el segundo hasta dónde debe llegar el rango. Con la función len
() obtenemos la longitud de la palabra y corresponde con el segundo argumento de la
función range ().
Cada valor obtenido del rango invertido será almacenado en la variable local ind y será
usada para iterar de forma invertida sobre el string, es decir, de atrás hacia adelante. El
método .lower () convierte cualquier carácter del string en minúscula.
Evaluando caracteres:
La sentencia if se encarga de evaluar si el carácter ubicado en el índice ind del
variable texto es igual al carácter ubicado en el índice aux en la variable texto. Cabe
recordar que la variable ind guarda los valores invertidos del rango. Si ambos caracteres
son iguales, entonces se incrementa la variable igual en +1, de lo contrario, continua el
bucle incrementando solo a la variable aux en +1.
Dictamen final, ¿es o no es palíndromo?:
if len(texto) == igual:
print("El texto es palindromo!")
else:
print("El texto no es palindromo!")
La sentencia if en este fragmento de código va a verificar con la función len () si la longitud de
la palabra ingresada por el usuario es igual al valor contenido en la variable igual. Dependiendo
del resultado de dicha verificación, nos va a informar con un mensaje usando la función print
(), si la palabra es o no es palíndromo.