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)
Kevin Emanuel López Portillo, de El Salvado. Es gay.
ResponderEliminar¿que pedo con el comentario de arriba? xd
ResponderEliminar