Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 0x5d en 24 Abril 2012, 06:49 am



Título: [Python]Formas de saber si una palabra es palindromo
Publicado por: 0x5d en 24 Abril 2012, 06:49 am
Hola, buen día a todos !

En esta oportunidad no vengo a dejar un graaaaaaaaaan material :P , pero siempre me gusta intentar hacer una misma cosa de varias maneras. Es por eso que decidí ver de cuantas formas podríamos hacer para verificar si una palabra es palíndromo. Bien, veamos el primero:
Código
  1. n = raw_input(">")
  2. if n.isdigit():
  3. d = [h for h in n]
  4. if d == d[::-1]:  print "El numero es capicua: %s"%(n)
  5. else: print "El numero no es capicua : %s"%(n)
  6. else:
  7. d = [h for h in n]
  8. if d == d[::-1]:  print "El texto es palindromo: %s"%(n)
  9. else: print "El texto no es palindromo : %s"%(n)
Como podemos apreciar el código es bastante sencillo , pedimos entrada por teclado. Verificamos si es la variables un dígito o no(if n.isdigit()). Luego la típica salida invirtiendo la cadena con variable[::-1].

Veamos otro código más sencillo aún:
Código
  1. variable = raw_input("Texto ::> ")
  2. print "Resultado:",[h for h in variable[::-1]] == [s for s in variable]
Apenas dos líneas :D , un ejemplo de salida sería:
Código:
jaavier@Debian:~/codigos$ python palindromo.py
Texto ::> reconocer
Resultado: True
jaavier@Debian:~/codigos$
Otro ejemplo muy similar sería:
Código
  1. var = raw_input("Texto ::> ")
  2. print "Respuesta:",var == var[::-1]
Con la misma salida que el anterior:
Código:
jaavier@Debian:~/codigos$ python palindromo.py
Texto ::> reconocer
Resultado: True
jaavier@Debian:~/codigos$
Y pues la manera más típica:
Código
  1. var = raw_input("Texto ::> ")
  2. if var==var[::-1]:
  3. print "Es Palindromo"
  4. else:
  5. print "No es palindromo"
También tenemos la famosa función lambda():
Código
  1. palindromo = lambda parametro: parametro==parametro[::-1]
  2. print palindromo(raw_input("Texto ::> "))
Nos devolverá True o False.
Y Pues si son unos amantes de la reducción de código como yo, pueden aplicar:
Código
  1. print (lambda d: d==d[::-1])(raw_input("Texto ::> "))
Y a ti , que forma se te ocurre ?

Fuente: http://rootcodes.com/pythonformas-de-saber-si-una-palabra-es-palindromo/

Saludos, Javier.


Título: Re: [Python]Formas de saber si una palabra es palindromo
Publicado por: Karcrack en 26 Abril 2012, 00:10 am
Alternativa recursiva:
Código
  1. def palindromo(s):
  2.    return (len(s)<2)or(s[0]!=s[-1])or(palindromo(s[1:-1]))
  3.  
  4. print palindromo(raw_input())


Título: Re: [Python]Formas de saber si una palabra es palindromo
Publicado por: 0x5d en 26 Abril 2012, 01:19 am
Alternativa recursiva:
Código
  1. def palindromo(s):
  2.    return (len(s)<2)or(s[0]!=s[-1])or(palindromo(s[1:-1]))
  3.  
  4. print palindromo(raw_input())
Muy buena !