No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso B谩sico de Python

Curso B谩sico de Python

Facundo Garc铆a Martoni

Facundo Garc铆a Martoni

Proyecto: pal铆ndromo

20/32
Recursos

En este ejemplo, aprenderemos a detectar si una palabra es pal铆ndromo en Python. Para el ejemplo utilizaremos 鈥淟uz azul鈥.

Vamos a definir la funci贸n utilizando def:

def esPalindromo(palabra):
	palabra = str(palabra).strip().lower()
	palabra and print(palabra == palabra[::-1])
esPalindromo(luzazul) # va a imprimir True.

驴Qu茅 acaba de ocurrir?

En la primera l铆nea de la funci贸n, convertimos el valor recibido a string, eliminamos los espacios indeseados aplicando strip y formateamos a min煤scula con lower.

驴Por qu茅? Porque si ejecutamos esPalindromo(True) nuestro programa mostrar铆a un error, ya que no se pueden ejecutar m茅todos strip y lower sobre datos de tipo booleano.

En la segunda l铆nea, ejecutando palabra and, lo que le decimos al programa es que si la variable palabra es Truty, ejecute el c贸digo despu茅s del and.

Esta es una forma mucho m谩s corta de correr el siguiente c贸digo:

if palabra == True:
	ejecutar.....

Pero, 驴qu茅 es un valor truty?

En programaci贸n, un valor truty es cualquier valor que, sin ser expl铆citamente un booleano True, la computadora lo interpreta como un true. Por ejemplo: cualquier n煤mero mayor a 0 o cualquier string que no este vac铆o.

Luego, dentro del print() no es necesario hacer un if que retorne true o false, al hacer la comparaci贸n.

# if palabra == palabra[::-1]:
#	return True
# else:
#	return False

palabra == palabra[::-1]

Si la comparaci贸n es correcta, va a imprimir True, de lo contrario devolvera False.

Aporte creado por: Alejandro Barrios

Aportes 773

Preguntas 193

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Soy muy fan谩tico de simplificar las cosas, espero pueda ser legible.

def es_palindromo(palabra):
    palabra = palabra.replace(' ', '').lower()
    
    if palabra[::] == palabra[::-1]:
        return True
    
    else:
        return False


def run():
    palabra = input('Ingrese una palabra: ')
    if es_palindromo(palabra):
        print('Es palindromo')

    else:
        print('No es palindromo')


if __name__ == "__main__":
    run()

Aqu铆 unos Palindromos, por si quieren poner en practica:
鈥淥铆 lo de mam谩: me doli贸鈥

鈥淪ometamos o matemos鈥

鈥淵o dono rosas, oro no doy鈥

鈥淚saac no ronca as铆鈥

鈥淟avan esa base naval鈥

鈥淣o traces en ese cart贸n鈥

鈥溌縎er谩 lodo o d贸lares?鈥

鈥淟ogra Casillas all铆 sacar gol鈥

馃槃

Me qued茅 con la duda de por que se utiliza esto: if name == 鈥main鈥:
Encontr茅 que Python asigna variables especiales antes de correr el c贸digo. A la variable name le asigna el string 鈥main鈥. Esto pasa siempre que corras el programa directamente de Python. Si tienes esta condicional en tu programa y decides importarlo desde un programa distinto, NO va a correr, por que al importarlo, ya no est谩 corriendo directo desde el programa original. Hice mi mejor esfuerzo por explicarlo, pero si no me entendiste, Aqu铆 est谩 el video explicando.

Buenas pr谩cticas
[Dejar dos espacios (l铆neas de c贸digo) entre las funciones]
[Crear una funci贸n principal]

Esta l铆nea de c贸digo:
if __name__ == "__main__": main() //es el punto de entrada de un programa de Python. Una vez que se encuentra Python con esta l铆nea de c贸digo, empieza a ejecutar todo lo qu茅 est茅 abajo, c贸mo en este ejemplo, la funci贸n "main".

Muchachos no se si las pasa, pero yo tome el anterior curso b谩sico de python, pero me perdi mucho. Nunca entend铆 porque poniamos la linea if name==鈥main鈥:
run()
Lo termin茅 dejando a la mitad.
Ahora me siento mas tranquilo voy entendiendo las cosas y me emociona ir avanzando. Tal vez es solo imprensi贸n mia pero siento a este curso mejor 馃槂

algunos creen que mientras mas peque帽o es su archivo .py , o mejor dicho; mientras menos l铆neas de c贸digo tiene un programa, se es mas eficiente o mejor programador. Si uno llega a trabajar en un lugar con otros programadores que deban revisar su c贸digo, sencillamente les va a llover muchas cr铆ticas , ojo con eso!

Si usan VSCode y dan clic derecho en el c贸digo y luego en Format Document aparecer谩 una ventana para instalar autopep8 que sirve para formatear el c贸digo y que cumpla los est谩ndares. Le dan a yes y se instalar谩. Una vez instalado dan clic derecho y Format Document y el c贸digo se acomoda.

La movie TENET aborda el tema de los pal铆ndromos de manera impl铆cita y extiende su trama m谩s all谩 de los l铆mites de la f铆sica

Me parece una excelente clase, tomar todo lo aprendido y plasmarlo en este peque帽o proyecto, para alguien que esta aprendiendo con facundo, es muy importante ver toda esta estructura cl谩sica de la programaci贸n.
No me parece un buen inicio comenzar un curso b谩sico de Python y empezar a resumir c贸digo y simplificar la estructura del profesor, si lo que se busca es plasmar todo lo aprendido de forma amigable y did谩ctica para tener buenas bases en el futuro, ahora si ya sabes todo esto y puedes hacerlo en una l铆nea鈥︹渃reo que tomaste el nivel de curso equivocado鈥.
Me pregunto鈥 Qu茅 pasa s铆 el profesor viene y explica en dos l铆neas esta clase? seguramente pensamos que el profesor no explica bien, que es un pirata y ese curso de Python no sirve.!
Que complejo somos Gente鈥!

Un truco para evitar los if excesivos y hacer tu codigo mucho mas corto

def esPalindromo(palabra):
	palabra = str(palabra).strip().lower()
	palabra and print(palabra == palabra[::-1])

esPalindromo(luzazul) # va a imprimir True.

Que hice???
En la primera linea de la funcion convertimos el valor recibido a string, eliminamos los espacios indeseados y formateamos a minuscula.
.
por que? porque si ejecutamos esPalindromo(True) nuestro programa daria error ya que no se pueden ejecutar metodos strip y lower sobre datos de tipo booleano.
.
En la segunda linea ejecutando palabra and lo que le decimos al programa es que si la variable palabra es Truty, ejecute el codigo despues del and.
es una forma mucho mas corta de hacer

if palabra == True:
	ejecutar.....

pero y que es un valor truty?
.
En la programacion, un valor truty es cualquier valor que sin ser explicitamente un booleano True, la computadora lo interpreta como un true. por ejemplo: cualquier numero mayor a 0 o cualquier string que no este vacio.
.
luego, dentro del print() NO es necesario hacer un if que retorne true o false, al hacer la comparacion

# if palabra == palabra[::-1]:
#	return True
# else:
#	return False

palabra == palabra[::-1]

si la comparacion es correcta, va a imprimir True, de lo contrario devolvera False, y ademas, queda mucho mas lindo 馃槈
.
esto podemos es solo un ejemplo, y pueden adaptarlo para que haga return en vez de imprimir por consola, espero les sirva.

Dejo mi aporte con el c贸digo comentado

Varias personas han preguntado (incluy茅ndome):

El tema de colores que Facundo est谩 usando en Visual Studio code, seg煤n yo, es :
Atom One Dark y la extensi贸n Bracket Pair Colorizer 2 (links abajo)

https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onedark

https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2

https://alvarohurtado.es/2020/11/16/que-hace-if-name-main-en-python/

Para los que al igual que yo se enreden un poco con el:

if __name__ == '__main__':

no me funcionaba mi c贸digo pero me di cuenta que la palabra 鈥淭rue鈥 y 鈥淔alse鈥 van con letra may煤scula al inicio y eso era mi error no lo tenia en cuenta pero espero ayude a alguien mas tambi茅n si tiene el mismo problema 馃槂

Hola, vengo de futuro (de algunas clases m谩s adelante), existe una forma de escribir (en VSCode) la estructura del programa principal, es decir:

def run()
	pass

if __name__ == '__main__':
	run()

隆Con una sola palabra!
.
Para ello debes ir a Archivo->Preferencias->Snippets de Usuario (File->Preferencias->User Snippets), luego te aparece una barra superior con muchos lenguajes de programaci贸n, busca el que diga 鈥楶ython鈥 y dale click.
.
Una vez ah铆 te debe aparecer algo como esto:

{
	// Place your snippets for python here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
}

隆No te asustes! Aqu铆 podr谩s configurar atajos de palabras para crear funciones o estructuras en Python, solo copia y pega el siguiente c贸digo del cual me bas茅:

"Creates main Python structure": {
        "prefix": "pymain",
        "body": [
            "def run():",
            "\tpass$0\n\n",
            "if __name__ == '__main__':",
            "\trun()"
        ]
    }

De esta manera, el archivo 鈥楶ython.json鈥 debe aparecer as铆:

{
	// Place your snippets for python here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }

	"Creates main Python structure": {
        "prefix": "pymain",
        "body": [
            "def run():",
            "\tpass$0\n\n",
            "if __name__ == '__main__':",
            "\trun()"
        ]
    }
}

隆Listo! Ahora cada vez que escribas 鈥榩ymain鈥 en cualquier archivo de Python te debe aparecer la opci贸n para crear la estructura, solo debes presionar la tecla Tab o Enter y ya te debe escribir la estructura.

name=input("Ingresa una palabra o frase: ")
name=name.strip().lower().replace(" ","")
print(name)
name_backward=(name[::-1])
print(name_backward)
if name==name_backward:
    print("Felicidades, esto es un pal铆ndromo")
else:
    print("Esta vez no lograste encontrar un pal铆ndromo, sigue intentando!")
if __name == "__main__":
run()

Esta condicional se encarga, de ejecutar las funciones principales, como podemos ver en este caso tenemos dos funciones.

1.- palindromo(): Esta funcion es una funcion que se encarga de transformar los caracteres de linea de texto, entonces quiere decir que pasaria a categorizarse como una funcion alternativa
2.- run(): Esta es la funcion es la que se encarga de obtener los datos de la funcion palindromo y trabajar con ello mas los datos ingresados por el usuario, por ende esta pasaria a ser la funcion principal, y como funcion principal es la que debe ir dentro del condicional if __name == 鈥main鈥:


IMPORTANTE Como dice el profesor siempre es buena buena practica no solamente para Python, tener claro una jerarquia entre las clases para tener clara su funcion ademas hace el codigo mas elegante y legible para ti y otras personas.

Estuve investigando sobre el operador ternario en Python, y encontr茅 que se usa as铆.

True if expresion == expresion else False

Se interpreta como, haz esto si se cumple esta condici贸n, si no haz esto.

def palindromo(palabra):
    palabra = palabra.replace(' ', '').lower()
    return True if palabra == palabra[::-1] else False

def run():
    palabra = input('Escribe una palabra: ')
    if palindromo(palabra) == True:
        print('Es pal铆ndromo')
    else:
        print('No es pal铆ndromo')


if __name__ == '__main__':
    run()

驴Porque en mi editor no se colocan los comandos, palabras, signos, en colores? algunos s铆, otros no.
Como le puedo hacer para que se pongan en color igual sino siento que voy mal jajaja,

Para los que no entiendan lo de name==鈥main鈥: tratare de explicarlo con lo que encontr茅 en internet.
La variable name toma el valor de main cuando lo ejecutas como principal, y toma el valor de module si lo est谩n importando, osea lo est谩n invocando en otro script o c贸digo.
Este condicional se usa para comprobar si un m贸dulo de python est谩 siendo ejecutado directamente o est谩 siendo importado, ya que puede ser que alg煤n script lo quieras utilizar como principal pero que no se ejecute cuando este sea importado.

Aqui mi aporte con analisis semantico y esp (entrada, proceso y salida)

# OBJETIVO
# Crear un programa que identifique si una cadena de texto es palindroma o no 
# ej. luz azul = luzazul --> es palindroma

# ANALISIS SEMANTICO 
# cadena de texto --> conocida en ingles como string estas son caracteres simbolicos compuestos por letras o signos
# palindromo --> que se lee igual de derecha a izquierda y vice versa

# ANALISIS EPS
# E --> strings

# P --> a) leer string
#       b) eliminar todos los espacio innecesarios
#       c) cambiar letras a minuscula
#       d) cambiar orden de lectura (derecha a izquierda)
#       e) si cambi = palabra: 
#          return true (O es palintromo)
#          si no: 
#          return false (O no es palindromo) 

# S --> comparar 

# funcion que corre el programa, realiza paso a
def run():
    palabra = input("Ingrese un string: ")
    cambiar(palabra)


# funcion para realizar paso b, c, d
def cambiar(palabra):
    palabra = palabra.replace(" ", '').lower() # b y c
    cambio_orden = palabra[::-1] # d
    comparar(palabra, cambio_orden)


# funcion para realizar paso e
def comparar(palabra, cambio_orden):
    if palabra == cambio_orden:
        print(palabra + " es un palindromo")
    else:
        print(palabra + " no es palindromo")

if __name__ == "__main__":
    run()```

Os dejo mis apuntes sobre buenas pr谩cticas.

C贸digo de buenas practicas:

  1. Crear una funci贸n principal la llamaremos 鈥Main o Run

  2. Crear el punto de entrada o 鈥entry point
    If__name__== 鈥main鈥:
    Pass
    3.Dejar dos espacios (verticales) entre funciones y tambi茅n con el entry point
    4.Si se invoca una funci贸n a mitad del script se tiene que declarar antes de que se invoque.

Es valido utilizar un c贸digo m谩s simple que arroje el mismo resultado?

Voy a compartirles algo que me paso durante esta clase.
Si por alguna raz贸n el programa no les inicia, o inicia pero no pregunta la palabra la razon es muy simple, en la parte de :

if name == " main" :

Los guiones bajo deben ser dobles, en el v铆deo no se alcanza a ver con claridad as铆 que es normal la confusi贸n xd

A un amigo le pusieron a hacer este proyecto en un examen de la universidad 馃槷
Facundo lo hizo en 10 minutos, adem谩s con explicaci贸n muy buena. Crack!!!

馃懢 Determina si una palabra o texto es un pal铆ndromo.

def palindromo(palabra):
    palabra = palabra.replace(" ", "")
    palabra = palabra.upper()
    palabra_invertida = palabra[::-1]
    if palabra == palabra_invertida:
        return True
    else:
        return False


def run():
    palabra = input("Ingresa una palabra: ")
    es_palindromo = palindromo(palabra)
    if es_palindromo == True:
        print("Es pal铆ndromo")
    else:
        print("No es pal铆ndromo")


if __name__ == "__main__":
    run()

Les comparto mi c贸digo por si a alguien le sirve, a帽adi una funci贸n adicional que usa un diccionario para eliminar acentos en las vocales y otros signos de puntuaci贸n para evitar 鈥渇alsos negativos鈥

words = { ' ': '', '谩': 'a', '茅': 'e', '铆': 'i', '贸': 'o', '煤': 'u', '驴': '?', '隆': '!', ',': '', '.': '', ':': '', ';': '' }


def replace_group (text, words):
    for i, j in words.items():
        text = text.replace(i, j)
    return text

Usa un ciclo for para buscar coincidencias del diccionario y en el caso de encontrarlas reemplazarla o eliminarla segun sea el caso.


def palindromo(frase):
    frase_inversa = frase[::-1]

    if frase == frase_inversa:
        return True
    else:
        return False


def run():
    frase = input('Ingresa la frase para saber si es un palindromo: ').lower().strip()

    frase = replace_group(frase, words)

    if palindromo(frase) == True:
        print('Es un palindromo')
    else:
        print('No es un palindromo')


if __name__ == '__main__':
    run()

Me da que Luz azul no es palindromo y no encuentro el error

def palindromo(palabra):
    palabra = palabra.replace(" ", " ")
    palabra = palabra.lower()
    palabra_invertida = palabra[::-1]
    if palabra == palabra_invertida:
        return True
    else:
        return False


def run(): 
    palabra = input ("Escribe una palabra: ")
    es_palindromo = palindromo(palabra)
    if es_palindromo == True:
        print("Es palindromo")
    else:
        print ("No es palindromo")

if __name__== "__main__":
    run()```

My code:

def is_palindrome(word):
    clean_word = word.lower().replace(" ", "")
    return clean_word == clean_word[::-1]


def run():
    word = input("Write a word: ")
    if is_palindrome(word):
        print("Is palindrome")
    else:
        print("Is not palindrome")


if __name__ == '__main__':
    run()

def palindromo(palabra):
palabra = palabra.replace(" 鈥,鈥")
palabra = palabra.lower()
palabra_invertida = palabra[::-1]
if palabra == palabra_invertida:
return True
else:
return False

def run():
palabra = input("Escribe una palabra: ")
es_palindromo = palindromo(palabra)
if es_palindromo == True:
print(鈥楨s palindromo鈥)
else:
print(鈥楴o es palindromo鈥)

if name == 鈥main鈥: #Esta linea simepre se escribe al iniciar codigo en pyhon
run()

palabra = input("ingresa la palabra : ")
palabra = palabra.lower()
palabra = palabra.replace(" ", "")

if palabra == palabra[::-1]:
    print("es palindromo")
else:
    print("NO es palindromo")

Simpliflique un poco los metodos y puse directamente la condicional de palabra

def palindromo(palabra):
    palabra = palabra.replace(' ', '').lower()
    if palabra == palabra[::-1]:
        return True
    else:
        return False


def run():
    palabra = input('Escribe una palabra: ')
    es_palindromo = palindromo(palabra)
    if es_palindromo == True:
        print('Es pal铆ndromo')
    else:
        print('No es pal铆ndromo')


if __name__ == '__main__':
    run()

Al principio me daba error porque puse.

if name = (un igual ) 鈥main鈥 :

jajaja y aparte, si dice 鈥渋gual鈥 min 3:23.
mi error de principiante

creo que no puede ser mas simple 馃槢

palabra = input("di una palabra: ")

if palabra == palabra[::-1]:
    print("es un palindromo")

else:
    print("no es un palindromo")``````
frase = input("ingrese una palabra o frase: ") 
sin_espacios = frase.replace(' ','').lower()
al_reves = sin_espacios[::-1]

if sin_espacios == al_reves:
    print("la frase: '", frase, "' es un palindromo" )
else:
    print("la frase: '", frase , "' no es palindromo")```

Si a alguien le sirve, he encontrado el tema m谩s parecido que utiliza el profesor en su VS Code, b煤squenlo en extensiones como: Sublime Material Theme. A mi me parece mucho mejor este theme que el que viene por default en VS Code.

Hola,

No me queda tan claro para que sirve el if name == 鈥main鈥:
Alguien me podr铆a explicar por favor?

Gracias!

鉁 Hola. Versi贸n simplificada sin usar 鈥淭rue鈥 o 鈥淔alse鈥:

def palindromo_creator():
    palabra_ingresada = input("Escriba una palabra: ").lower().replace(" ","")
    if palabra_ingresada == palabra_ingresada[::-1]:
        print("Es pal铆ndromo")
    else:
        print("No es pal铆ndromo")

if __name__ == "__main__":
    palindromo_creator() 
def palindrome(string):
        if string == string[::-1]:
           return ("Felicidades! tu palabra es un palindromo")
        else:
            return ("Tu palabra no es un palindromo")


print("""
Hola! Quieres saber si una palabra es un palindromo o no?
""")

respuesta = input("Elige SI o NO: ")
respuesta = respuesta.lower()

if respuesta == "si":
     print(palindrome(input("Elige una palabra: ")))

elif respuesta == "no":
    print("Que malo eres :(")

else:
    print("Elige una opcion valida")

Analice el uso del operador ternario o primitivo en Python y me ayudo mucho para poder realizar mi c贸digo a un 鈥渆stilo declarativo鈥 y no tener que utilizar una sola variable.

El cual dice:
[haz esto鈥 SI [la operaci贸n da verdadero] DE LO CONTRARIO [haz esto鈥

True if expresion == expresion else False

Dejo mi aporte de como quedo mi c贸digo por si alguien gusta implementarlo y/o analizarlo 馃槂

def palindromo(palabra):
    return 'Es palindromo' if palabra.replace(' ','').lower() == palabra[::-1].replace(' ','').lower() else 'No es palindromo'
    

def main():
    print(palindromo(input('Escribe una palabra: ')))


if __name__ == '__main__':
    main()

Hola hola,
Aqu铆 esta mi c贸digo:

def palindrome(string):
    string = string.lower().replace(' ', '')
    return string == string[::-1]

def main():
    is_palindrome = palindrome(input('Your string: '))

    print("Yep it's palindrome" if is_palindrome else "No it's not palindrome")

if __name__ == '__main__':
    main()
<def palindromo(palabra):
        palabra = palabra.replace(" ", "")
        palabra = palabra.lower()
        dato = palabra == palabra[::-1]
        return dato   

def run():
    palabra = input("escribe una palabra: ")
    es_palindromo = palindromo(palabra)
    if es_palindromo == True:
        print("Es Palindromo")
    else:
        print("No es palindromo")
if __name__ == "__main__":
    run()> 

Actividad Palindromo

def palindromo(palabra):
palabra = palabra.replace(鈥 ', 鈥樷)
palabra = palabra.lower()
palabra_invertida = palabra[::-1]
if palabra == palabra_invertida:
return True
else:
return False

def run():
palabra = input(鈥楨Scribre Una Palabra :鈥)
es_palindromo = palindromo(palabra)
if es_palindromo == True:
print(鈥楨s Palindromo鈥!鈥)
else:
print('No es Palindromo 馃槮 ')

if name == 鈥main鈥:
run()

Creo que quedo contento con el resultado. Aunque tuve que patinar un ratico para acomodar todo antes de ver el capitulo jeje

def es_palindromo(palabra):
        palabra = palabra.upper()
        palabra = palabra.replace(' ','')
        palabra_reves = palabra[::-1]

        if palabra == palabra_reves:
                return True
        else:
                return False


def run():
        palabra = str(input("Hola, por favor escriba una palabra para verificar si es un palindromo: "))
        verificacion = es_palindromo(palabra)
        largo = str(len(palabra.replace(' ','')))

        if verificacion == True:
                print(palabra + " es un palindromo y tiene " + largo + " caracteres")
        else:
                print(palabra + " no es un palindromo, por favor intenta con otra palabra.")


if __name__ == '__main__':
        run()

Un saludo 馃槈

Pal铆ndromo

def run():
    texto = input('Escribe un/a palabra/frase:')
    texto = texto.replace(' ', '')
    texto = texto.upper()
    texto_invertido = texto[::-1]
    if texto == texto_invertido:
        print('Es palindromo')
    else:
        print('No es palindromo')


if __name__ == '__main__':
    run()

Pal铆ndromo simplificado

def run():
    texto = input('Escribe un/a palabra/frase:').replace(' ', '').upper()
    if texto == texto[::-1]:
        print('Es palindromo')
    else:
        print('No es palindromo')


if __name__ == '__main__':
    run()

Pal铆ndromo con funci贸n extra

def palindromo(texto):
        texto = texto.replace('  ', ' ').upper()
        texto_invertido = texto[::-1]
        return True

def run():
    texto = input('Escribe un/a palabra/frase:')     
    if palindromo(texto):
        print('Es palindromo')
    else:
        print('No es palindromo') 


if __name__ == '__main__':
    run()
def palindromo(palabra):
    palabra = palabra.replace(' ','').lower()
    return palabra == palabra[::-1]


def run():
    palabra = input("Escribe una palabra: ")
    if palindromo(palabra):
        print("Es palindromo")
    else:
        print("No es palindromo")


if __name__ == '__main__':
    run()
palabra = input('Escibe una palabra : ')
palabra = palabra.lower().replace(' ','')

if palabra == palabra[::-1] :
    print('Es palindromo')
else :
    print ('No es palindromo')

Me quedo as铆.


def palindrome(word: str):
    word = word.replace(" ", "").lower()
    return word == word[::-1]


def main():
    if palindrome(input("word:")):
        print("is palindromo")
    else:
        print("isnt palindromo")


if __name__ == "__main__":
    main()

Peque帽o aporte

def palindromo(palabra):
    if palabra == palabra[::-1]:
        return "Es una palindromo"
    else:
        return "No es un palindromo"

print("Bienvenido al detectos de palindromos, si deseeas detener el programa escribe fin")

while True:
    palabra = input("Por favor ingresa una palabra: ")
    if palabra == "fin":
        break
    else:
        print(palindromo(palabra.lower().replace(' ', '')))

Comparto mi c贸digo.

me codigo es el siguiente:
creen que comet铆 alguna mala practica?
hice asi por que pens茅 que no era necesario una funcion en este caso.

Un c贸digo eficiente es aquel que cae entre optimo y legible

Buena practica: dejar doble espacio entre funciones

Funci贸n modularizada y les dejo el ternario en python:
caso True if condicion else caso False (linea 3)

Espero que les sirva

Hi Friends!
I always try to simplify the code!

def run():
    palabra = input("Escribe una palabra: ").replace(" ","").lower()
    if palabra == palabra[::-1]:
        print ("Es Pal铆ndromo")
    else:
        print ("No es Pal铆ndromo")


if __name__ == '__main__':
    run() 

Recordar que cuando empece me costaba demasiado esto, muy bien explicado 馃槃

Realizando el ejercicio, tal como esta en el video me di cuenta del scope. Simplifoque el ejercicio un poquito.

Recomiendo el uso de PyCharm

def palindrome(word):
    return word == word[::-1]


def clean_word(word):
    return word.replace(' ', '').lower()


def run():
    word = input('Escribe una palabra: ')
    my_word = clean_word(word)
    is_palindrome = palindrome(my_word)
    if is_palindrome:
        print('Es pal铆ndromo', my_word)
    else:
        print('No es pal铆ndromo', my_word)


if __name__ == '__main__':
    run()

Buenas Pr谩cticas vistas hasta esta clase.

  1. Crear funciones para no repetir c贸digo y tener un script legible.
  2. Crear una funci贸n principal que es la que va a correr el programa al principio (generalmente denominada con el est谩ndar run/main).
  3. Usar la palabra pass en espacios donde a煤n no se vaya a escribir c贸digo.
  4. Escribir el c贸digo de las funciones por encima del bloque de c贸digo que la va a invocar.
  5. Dejar dos renglones de espacio entre funciones.
  6. Declarar el punto de entrada o Entry Point, el cual invoca y ejecuta la funci贸n principal.

Quise agregar que quitara los acentos para una mejor normalizaci贸n.

<code> 

def palindromo(palabra):
    palabra = palabra.replace(' ', '')
    palabra = palabra.replace('谩','a')
    palabra = palabra.replace('茅','e')
    palabra = palabra.replace('铆','i')
    palabra = palabra.replace('贸','o')
    palabra = palabra.replace('煤','u')
    palabra = palabra.lower()
    palabra_invertida = palabra[::-1]
    if palabra == palabra_invertida:
        return True
    else:
        return False

def run():
    palabra = input('Escribe una palabra o frase para saber si es pal铆ndromo: ')
    es_palindromo = palindromo(palabra)
    if es_palindromo == True:
        print('Es pal铆ndromo')
    else: print('No es palindromo')

if __name__ == '__main__':
    run()

Seguro hay formas m谩s eficientes, sin embargo esta funciona.

Us茅 9 l铆neas sin usar funciones

frase1 = input("Escribe tu frase para averiguar si es palindromo: ")
frase1 = frase1.replace(' ','')
frase1 = frase1.lower()
frase2 = frase1[::-1]

if frase1 == frase2:
    print("Es pal铆ndromo")
else:
    print("No es pal铆ndromo")

Me gusta que aparezca la variable en los print que mando

def run():
    nombre = input('Ingresa un palindromo:\n')
    nombre_nomal = nombre.replace(" ","").upper()
    nombre_invertido =nombre_nomal[::-1]
    if nombre_invertido == nombre_nomal:
        print(nombre + ', es un palindromo 鉁')
    else:   
        print(nombre + ', no es un palindromo 鉂')


if __name__ == '__main__':
    run()

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Pal铆ndromo = Palabra que se lee igual al derecho y al rev茅s

  • Una buena pr谩ctica en Python es tener una funci贸n principal que va a correr el programa al principio, por lo general es llamada main o run

  • Es buena pr谩ctica dejar 2 espacios entre cada funci贸n

  • Esta l铆nea de c贸digo es el punto de entrada de un programa de Python y es una buena pr谩ctica ponerla:
    if name = main:

  • Las funciones debemos crearlas siempre por encima del lugar donde fueron invocadas

  • Replace es una funci贸n importante a saber usar

Excelente, es incre铆ble como Facundo explica tan f谩cilmente todo sobre Python, vuelvo y digo, por fin entend铆 lo que por meses hab铆a intentando hacer鈥 no es que no haya aprendido, pero la verdad, ver la l贸gica como lo explica Facundo es como aprender con plastilina鈥 Es un excelente instructor.

Basado en la clase, un pal铆ndromo para n煤meros

def palindromo(numero):
    if numero[::] == numero[::-1]:
        return True
    else:
        return False

def run():
    numero = input("Esbe un numero: ")
    es_palindromo = palindromo(numero)
    if es_palindromo == True:
        print(f"El n煤mero {numero} si es un pal铆ndromo")
    else:
        print(f"El n煤mero {numero} no es un pal铆ndromo")
        
if __name__ == '__main__':
    run()

para n煤meros

Comparto mi resumen:

Ya se empieza a poner bueno XD
Por cierto 驴para qu茅 est谩n estudiando Python?馃槃

Fun fact: 鈥淎repera鈥 es palindromo xd

C贸digo simplificado:

def palindrome(word):
    word = word.replace(' ', '').lower()
    print("It's Palindrome") if word == word[::-1] else print("Isn't Palindrome")


def run():
    palindrome(input('Write a word: '))


if __name__ == '__main__':
    run()

Mi c贸digo simplificado un poco para que elimine espacios vac铆os, elimine comas y pase todo el texto a min煤sculas (para que la comprobaci贸n no sea 鈥CaseSentive

def palindromo(palabra):
    palabra = palabra.replace(" ","").replace(",","").lower()
    if(palabra[::-1] == palabra):
        print("S脥 es pal铆ndromo")
        return
    print("NO es pal铆ndromo")


def run():
    palabra = input("Ingres su palabra")
    palindromo(palabra)


if __name__ == "__main__":
    run()

Intento previo antes de ver la resoluci贸n del maestro Garc铆a:
(ser铆an ocho l铆neas pero en los comentarios pude observar que se pueden juntar los m茅todos en la misma variable 馃槃)

1 palabra = (input(welcome)).replace(鈥 鈥,鈥欌)
2 palabra2 = palabra.replace(鈥 鈥,鈥欌)
3 palabra2 = palabra2[::-1]
4 if palabra == palabra2:
5 print(鈥楾u palabra es un pal铆ndromo 馃槃.鈥)
6 else:
7 print(鈥楴op, no es un pal铆ndromo.鈥)

脡xitos!

Para las personas que no les quedo claro el funcionamiento de if name == 鈥main鈥, aqui les dejo una buena explicacion: https://stackoverflow.com/questions/419163/what-does-if-name-main-do.

El **entry point **

<'__name__'== '__main__':> 

es muy importante en python, la raz贸n es que en python podemos ejecutar nuestros archivos como un script o como un modulo que se importa:

1. Script: Cuando se ejecuta como un script se ejecuta todo el c贸digo que hemos elaborado, en el caso del ejemplo ser铆a todo el c贸digo del archivo de palindromo.

2. Modulo: Cuando se ejecuta un archivo de c贸digo como modulo, lo que estamos haciendo es importar las funciones y los objetos definidos en nuestro archivo para usar solo los que necesitemos.

Para que python identifique esta distinci贸n, que es muy importante para todos los que programamos en python, es muy importante definir este entry point.

Espero les guste de esta manera

frase = input("Ingresa la frase pal铆ndroma: ")

def run():
    frase_modificada = frase.replace(" ","").upper()
    if frase_modificada == frase_modificada[::-1]:
        palindromo("s铆")
    else :
        palindromo("no")

def palindromo(cambio):
    print("La frase: ("+frase+") "+cambio+" es pal铆ndromo")

if __name__ == "__main__":
    run()

def main():
palabra = input('Inserte la palabra: ')

def palindromo(texto):
    texto = texto.replace(' ','')
    texto_slice = texto[::-1]
    if (texto == texto_slice):
        print(f'La palabra o frase {palabra} es un pal铆ndromo...')
    else:
        print(f'La palabra o frase {palabra} no es un pal铆ndromo...')

palindromo(palabra)

if name == 鈥main鈥:
main()

Por norma se tienen que dejar dos espacios cada que se crea una funcion nueva

puntualmente no sab铆a c贸mo se denotaba el entry point, hasta hoy me vine a enterar, todos los d铆as sr aprende algo nuevo 馃槂

"Anita lava la tina"
Besto palindromo.

Mi c贸digo acortando sin usar booleanos

![](

Logre comprimir el c贸digo hasta 5 l铆neas!

palabra = input('Elige una palabra: ').replace(' ', '').upper()
if palabra == palabra[::-1]:
    print('Esa palabra es un palindromo')
else:
    print('Esa palabra no es un palindromo')

Este video es muy bueno para entender el concepto de entry point o punto de entrada (鈥渆studien el curso de ingles鈥 diria fredy 馃槀)
https://www.youtube.com/watch?v=_u-3pwdbHeg

Versi贸n m谩s simplificada

def palindromo(palabra):
    palabra = palabra.replace(' ', '').lower()
    return palabra[::-1] == palabra

def run():
    palabra = input("Escribe una palabra: ")
    if palindromo(palabra):
        print("Es palindromo")
    else:
        print("No es palindromo")

if __name__ == '__main__':
    run()

Actividad:

El pal铆ndromo

Mi versi贸n, espero que tambi茅n les ayude.

def palindromo(cadena):
    es_palindromo = 0
    cadena = cadena.lower().replace(' ','') 
    if cadena == cadena[::-1]:
        es_palindromo = 1
    return es_palindromo

inicio = """
Benvenido

Vamos a averiguar si tu cadena es un pal铆ndromo.

Favor de ingresar una cadena: 
"""

cadena = input(inicio)

if palindromo(cadena):
    print('Tu cadena \'' + cadena + '\' s铆 es un pal铆ndromo')
else:
    print('Tu cadena \''+ cadena+'\' no es un pal铆ndromo')
def es_palindromo(phrase):
    phrase = phrase.lower().replace(' ','');
    return phrase == phrase[::-1]

print( es_palindromo("Luz azul") )
 

entry point = punto de entrada a nuestro programa:
if name == 鈥main鈥:

La palabra pal铆ndromo es de hecho de origen griego y viene de la construcci贸n 鈥減alin dromein鈥, es decir, volver atr谩s, recorrer a la inversa, porque se trata precisamente de eso, de palabras o frases sim茅tricas que se pueden transitar en ambos sentidos.

Aqu铆 mi c贸digo:

entrada = input("Escriba la frase: ")
entrada = entrada.replace(" ", "")
palindromo = entrada[::-1]
if entrada == palindromo:
    print("La entrada es un palindromo")
else:
    print("la entrada no es palindromo")

aqu铆 mi humilde c贸digo

def limpiar_palabra(palabra):
      return palabra.lower().replace(" ","").replace(":","").strip()

def es_palindromo(palabra):
      palabra = limpiar_palabra(palabra)
      if palabra == palabra[::-1]:
            return True
      else:
            return False

def main():
      palabra = input("ingrese una palabra: ")
      if es_palindromo(palabra):
            print("es un palindromo")
      else:
            print("no es un plindromo")


if __name__ == "__main__":
      main()

Concepto
La palabra pal铆ndromo es de hecho de origen griego y viene de la construcci贸n 鈥減alin dromein鈥, es decir,聽volver atr谩s, recorrer a la inversa, porque se trata precisamente de eso, de palabras o frases sim茅tricas que se pueden transitar en ambos sentidos. Los pal铆ndromos num茅ricos tambi茅n existen, aunque se conocen como capic煤a: 1331, 8008, 353.

Ejemplos: Luz azul, Somos o no somos, Isaac no ronca as铆, S茅 verlas al rev茅s, Am贸 la paloma, Anita lava la tina, Luz azul, Yo hago yoga hoy, Ana lava lana鈥

C贸digo de la clase

Fantastic class! everything was clear, teacher Facundo explains very well and has a good energy. 馃懆馃徎鈥嶐煉火煢

return palabra==palabra_invertida


Explicaci贸n del c贸digo

  1. Primero escribimos el [[punto de entrada en Python]] 鈫
    if __name__ == "__main__":
    Esto har谩 que Python lea en primer lugar esta l铆nea de c贸digo y ejecutar谩 todo lo contenga debajo, es decir, ejecutar谩 la funci贸n run().

  2. Python leer谩 la funci贸n run() en d贸nde se ejecutar谩 todo el c贸digo dentro de la funci贸n.

    1. Escribimos dentro de la funci贸n run() una variable llamada palabra donde guardaremos un input() que contenga la entrada del usuario.

    2. Escribimos una variable llamada es_palindromo d贸nde guardaremos una funci贸n llamada palindromo() y dentro de esa funci贸n escribimos el par谩metro palabra, que es la entrada del usuario para ser comparada en la funci贸n palindromo.

    3. Escribimos if es_palindromo == True:, d贸nde se verificar谩 si la comparaci贸n de la variable palabra dentro de la funci贸n es_palindromo se retorna True si es realmente un pal铆ndromo o False si no lo es.

  3. Dentro de funci贸n palindromo incluyendo el par谩metro palabra (entrada del usuario) para realizar la comparaci贸n, se verificar谩 si la entrada por el usuario guardada en la variable palabra es o no un pal铆ndromo:

    1. Escribimos la variable palabra en la que guardaremos la propia variable con 2 met贸dos, el m茅todo .replace(" ", "") d贸nde se guardar谩 la entrada del usuario eliminandose cualquier espacio porque los espacios en blanco son caracteres que se cuentan, y sino se piensa en ello arrojar谩 un resultado err贸neo en la comparaci贸n.

      Despu茅s escribimos el m茅todo .lower() para convertir todo el string en min煤scula, ya que las palabras may煤sculas y min煤sculas son caracteres distintos entre s铆, y sino se tiene en cuenta arrojar谩 un resultado err贸neo en la comparaci贸n

    2. Escribimos una nueva variable llamada palabra_invertida d贸nde guardaremos la anterior variable palabra con todos los m茅todos aplicados y mencionando entre corchetes los 铆ndices [::-1], dichos 铆ndices convertir谩n todo el string de la variable palabra y se guardar谩 en la variable con el string invertido.

    3. Escribimos if palabra == palabra_invertida: para realizar la comparaci贸n de la variable palabra (entrada del usuario con los m茅todos aplicados (.replace y .lower())).

      • Si ambas variables son iguales escribimos return True

      • Si ambas variables son diferentes escribimos return False

  4. Finalmente la funci贸n principal run() ejecutar谩 el if d贸nde se compara si la variable es_palindromo es igual a True, si es as铆 se imprimir谩 en consola Es pal铆ndromo

    De lo contrario ser谩 False y se imprimir谩 en consola No es pal铆ndromo

Intento escribir los c贸digos antes de ver el v铆deo, y as铆 lo hice con 茅ste. Luego de ver el v铆deo agregu茅 lo que ense帽贸 el profesor y as铆 qued贸.

def palindrom(palabra):
    palabra = palabra.replace(" ", "").lower()
    reves = palabra[::-1]
    if palabra == reves:
        print("Es un palindromo")
    else:
        print("No es un palindromo")


def run():
    print ("驴Quiere conocer si una palabra es un palindromo?")
    palindrom(input("Ingrese una palabra: "))


if __name__ == "__main__":
    run()

mi practica sin errores:
def palindromo(palabra):
palabra = palabra.replace(鈥 鈥,鈥欌)
palabra = palabra.lower()
palabra_invertida = palabra [::-1]
if palabra == palabra_invertida:
return True

else:
    return False

def run():
palabra = input('escribe una palabra: ')
es_palindromo = palindromo(palabra)
if es_palindromo == True:
print(鈥榚s palindromo鈥)
else:
print (鈥楨sta Palabra no es palindromo 馃槩鈥)

if name==鈥main鈥:
run()