Palíndromo


Descripción

Python proveé una función integrada llamada reversed, la cual toma como argumento una secuencia de elementos - como una lista o una cadena - y devuelve un objeto reversed que contiene los elementos en orden inverso.

reversed('parrot')

Puedes usar la función list para convertir el objeto reversed a una lista

list(reversed('parrot'))
['t', 'o', 'r', 'r', 'a', 'p']

O también puedes convertirlo a una cadena usando el método join

''.join(reversed('parrot'))
'torrap'

Dado lo anterior, podemos escribir una función, como la siguiente, que revierta una palabra.

def reverse_word(word):
    return ''.join(reversed(word))

Un palíndromo es una palabra que se escribe de la misma forma al derecho y al revés, por ejemplo, (en inglés)) noon o rotator. Escribe una función llamada is_palindrome que tome como argumento una cadena y devuelve True si la cadena es un palíndromo, y que devuelva False si no lo es.

Puedes usar el siguiente bucle para encontrar todos los palíndromos, de al menos siete letras, de la lista de palabras del archivo words.txt.

for word in word_list:
    if len(word) >= 7 and is_palindrome(word):
        print(word)

Ejemplo de Ejecución:

>> python is_palindrome.py
deified
halalah
reifier
repaper
reviver
rotator
sememes

Solución

Mostrar solución
def reverse_word(word):
  return ''.join(reversed(word))

def is_palindrome(word):
  return word.lower() == reverse_word(word).lower()

f = open('/content/drive/MyDrive/words.txt')
word_list = f.read().split()
for word in word_list:
  if len(word) >= 7 and is_palindrome(word):
    print(word)
f.close()

Probar solución en Google Colab

Fuente del ejercicio: https://allendowney.github.io/ThinkPython/chap09.html#id1