Palíndromos con Python

Los palíndromos son palabras, frases o números que leídos de atrás hacia adelante se leen igual 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 o frase 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 palindromo 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 mas 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 la 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 sera 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 funcion 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 de la 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.

Ejecutando nuestra aplicación:
[fixedtorres@linuxero]$ python Palindromos.py
Ingrese la palabra que desea evaluar: arenera
El texto es palindromo!
[fixedtorres@linuxero]$

En esta primera ejecución nos muestra que la palabra arenera es palíndromo.

[fixedtorres@linuxero]$ python Palindromos.py
Ingrese la palabra que desea evaluar: araña
El texto no es palindromo!
[fixedtorres@linuxero]$

En esta segunda prueba nos indica que la palabra araña no es palíndromo.

Invirtiendo palabra, forma corta
texto = input("Ingrese una palabra: ")
rever = texto[::-1]

if texto == rever:
    print("La palabra ingresada si es palindromo!!")
else:
    print("La palabra ingresada no es palindromo!!")

Todo el proceso realizado al inicio se puede reducir a 7 líneas de código, como se muestra en este fragmento de código. La novedad aquí es la rever = texto[::-1], genera un nuevo string invertido y lo almacena en la variable rever. Por último usamos la sentencia if para comparar si son iguales y dependiendo del resultado nos indicará si la palabra es o no es palíndromo.



Un comentario en “Palíndromos con Python

  • el 19/05/2019 a las 6:33:49 PM
    Permalink

    palabra=input(«ingrese la palabra a ser analizada: «)
    inver=»
    t=len(palabra)
    while t>0:
    t=t-1
    print(palabra[t])
    inver=inver+palabra[t]
    print(inver)

    if palabra == inver:
    print(‘la palabra ingresada es palindroma’)
    else: print(‘la palabra no es palindroma’)

    #como puede observarse este codigo no tiene ninguna funcion en especial, solo los comandos más básicos de phyton, de nada prros y que pasen su prueba (sin funciones raras XD)

    Respuesta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *