[Python]Formas de saber si una palabra es palindromo

Iniciado por 0x5d, 24 Abril 2012, 06:49 AM

0 Miembros y 1 Visitante están viendo este tema.

0x5d

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 (python) [Seleccionar]
n = raw_input(">")
if n.isdigit():
d = [h for h in n]
if d == d[::-1]:  print "El numero es capicua: %s"%(n)
else: print "El numero no es capicua : %s"%(n)
else:
d = [h for h in n]
if d == d[::-1]:  print "El texto es palindromo: %s"%(n)
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 (python) [Seleccionar]
variable = raw_input("Texto ::> ")
print "Resultado:",[h for h in variable[::-1]] == [s for s in variable]

Apenas dos líneas :D , un ejemplo de salida sería:
jaavier@Debian:~/codigos$ python palindromo.py
Texto ::> reconocer
Resultado: True
jaavier@Debian:~/codigos$

Otro ejemplo muy similar sería:
Código (python) [Seleccionar]
var = raw_input("Texto ::> ")
print "Respuesta:",var == var[::-1]

Con la misma salida que el anterior:jaavier@Debian:~/codigos$ python palindromo.py
Texto ::> reconocer
Resultado: True
jaavier@Debian:~/codigos$

Y pues la manera más típica:
Código (python) [Seleccionar]
var = raw_input("Texto ::> ")
if var==var[::-1]:
print "Es Palindromo"
else:
print "No es palindromo"

También tenemos la famosa función lambda():
Código (python) [Seleccionar]
palindromo = lambda parametro: parametro==parametro[::-1]
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 (python) [Seleccionar]
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.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

Karcrack

Alternativa recursiva:
Código (python) [Seleccionar]
def palindromo(s):
   return (len(s)<2)or(s[0]!=s[-1])or(palindromo(s[1:-1]))

print palindromo(raw_input())

0x5d

Cita de: Karcrack en 26 Abril 2012, 00:10 AM
Alternativa recursiva:
Código (python) [Seleccionar]
def palindromo(s):
   return (len(s)<2)or(s[0]!=s[-1])or(palindromo(s[1:-1]))

print palindromo(raw_input())

Muy buena !
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !