Reto: Palíndromos
Dada una cadena decir si es un palíndromo.
También puede ver la entrada: Palíndromos en una frase
Método 1
Pedimos al usuario una palabra y la convertimos a minúsculas. Por ejemplo, Radar se transforma en radar y ahora comparamos el primer caracter con el último, el segundo con el anteúltimo y así sucesivamente. Pero no es necesario comparar todos, es suficiente con comparar la mitad de ellos para no duplicar trabajo.def esPalindromo(palabra):
for i in range(0,int(len(palabra)/2)): #Es suficiente con analizar la mitad
if palabra[i]!=palabra[-i-1]:
return False
return True
palabra=input('Escriba una palabra: ').lower()
print(palabra, '¿es un palindromo?',esPalindromo(palabra))
Método 2
Pedimos al usuario una palabra y la convertimos en una lista. Distinguimos dos casos según la longitud de la palabra sea par o impar.y=input('Dime una palabra: ')
x=list(y)
z=len(x)
i=z/2
if z%2==0:
m=x[0:int(i)]
m.reverse()
q=x[int(i):int(z)]
if m==q:
print('Es un Palíndromo')
else:
print('No es un Palíndromo')
else:
h=(z/2)-0.5
m=x[0:int(h)]
m.reverse()
q=x[int(h+1):int(z)]
if m==q:
print('Es un Palíndromo')
else:
print('No es un Palíndromo')
Método 3
Pedimos una palabra al usuario y convertimos todos sus caracteres en minúsculas. Esto se hace para que al poner por ejemplo Menem nos diga que si es un palíndromo.Para hacer el reverso del string
y
lo más sencillo es hacer y[::-1]
. De esta forma al comparar una cadena alfanumérica con su reverso si son iguales entonces sabemos que se trata de un palíndromo.y=input('Dime una palabra: ').lower()
if y==y[::-1]:
print('Es un Palíndromo')
else:
print('No es un Palíndromo')
Método 4
En este método la sentencia else sorprendentemente se sale del if.y=input('Dime una palabra: ')
z=list(y)
x=-1
w=len(z)
while x<w:
x+=1
w-=1
if z[x]!=z[w]:
print('No es un Palíndromo')
break
else:
print('Si es un Palíndromo')
Método 5
Usamos una variable booleana de control.p=input('Dime una palabra: ').lower()
es=True
for i in range(len(p)):
if p[i]!=p[len(p)-i-1]:
es=False
if es:
print('Si es un palíndromo')
else:
print('No es un palíndromo')
Método 6
Utilizamos ''.join(reversed(x)) para darle la vuelta a x y darle ese valor a y.x=input('Dime una palabra: ').lower()
y=''.join(reversed(x))
if y==x:
print('Es un Palíndromo')
else:
print('No es un Palíndromo')
Método 7
Invierte el orden de los elementos de la listaz
.y=input('Dime una palabra: ').lower()
x=list(y)
z=list(x)
z.reverse()
if z==x:
print('Es un Palíndromo')
else:
print('No es un Palíndromo')
Método 8
Usando la recursividad.- si la palabra tiene cero letras o una letra si es un palíndromo
- de lo contrario compara la primera y la última letra de la palabra
- si son diferentes no es un palíndromo
- si son iguales
- eliminamos la primera y la última letra de la palabra
- volvemos a llamar a la función con esta palabra más pequeña
#usando la recursividad
def palindromo(palabra):
if len(palabra)<=1: #si la palabra tiene cero letras o una letra si es un palíndromo
print("Si es un palindromo")
else: #de lo contrario
if palabra[0]!=palabra[-1]: #compara la primera y la última letra de la palabra
print("No es un palindromo") #si son diferentes no es un palíndromo
else: #si son iguales
palabra=palabra[1:-1] #elimina la primera y la última letra del string
palindromo(palabra) #vuelve a llamar a la función con este string más pequeño
candidato=input('Dime una palabra: ').lower()
palindromo(candidato)
No hay comentarios:
Publicar un comentario