Aprender a usar funciones en Python te permite dividir tu código en bloques reutilizables, más legibles y fáciles de mantener. Esta guía es para quien empieza a programar y quiere dominar el principio de divide y vencerás aplicado a la lógica de programación.
En Python, las funciones se construyen con la palabra reservada def, seguida del nombre de la función y los parámetros que necesita para operar. Este enfoque evita duplicar lógica y prepara tu código para escalar.
¿Cómo se define una función en Python?
La estructura básica usa def, un nombre descriptivo, paréntesis con parámetros opcionales y dos puntos para abrir el bloque indentado [01:05].
python
def saludar():
print("Hola mundo")
saludar()
Si solo defines la función pero no la llamas al final, no obtendrás ninguna respuesta al ejecutar. La llamada saludar() es la que dispara la ejecución del bloque.
¿Por qué mi función no imprime nada en Python? Porque definir una función con def solo la registra en memoria. Necesitas invocarla escribiendo su nombre seguido de paréntesis para que se ejecute.
¿Cómo paso parámetros y argumentos a una función?
Los parámetros viven dentro de los paréntesis y representan la información que la función necesita para trabajar. Al llamarla, pasas los argumentos correspondientes.
Si olvidas un argumento, Python lanza un error de missing positional argument. Para evitarlo puedes usar valores por defecto directamente en la definición [04:30]:
python
def saludar(name, last_name="no tiene apellido"):
print(f"Hola {name}, {last_name}")
También existen los argumentos nombrados, que te permiten pasar los parámetros en cualquier orden si haces referencia explícita al nombre:
python
saludar(last_name="Florida", name="Carly")
¿Qué diferencia hay entre parámetro y argumento?
El parámetro es la variable declarada en la definición de la función. El argumento es el valor real que envías cuando la invocas. Es una distinción pequeña, pero ayuda a leer mejor la documentación de cualquier librería.
¿Cómo construir una calculadora con funciones en Python?
Un caso clásico para entender el poder de las funciones es una calculadora con las cuatro operaciones básicas. Cada operación vive en su propia función y devuelve un valor con return en lugar de imprimirlo [06:20].
python
def suma(a, b):
return a + b
def restar(a, b):
return a - b
def multiply(a, b):
return a * b
def dividir(a, b):
return a / b
Usar return es clave: la función entrega el resultado para que otra parte del código lo use, en vez de mostrarlo directamente en pantalla. Esto te da flexibilidad para encadenar operaciones o guardar el resultado en variables.
¿Cuál es la diferencia entre print y return en una función?print muestra un valor en consola y termina ahí. return devuelve el valor a quien llamó la función para seguir trabajando con él.
¿Cómo orquestar varias funciones desde una función principal?
La función calculadora() actúa como controlador. Usa un bucle while True para mantener el menú activo, captura la opción del usuario con input() y delega cada cálculo a la función correspondiente.
python
def calculadora():
while True:
print("Seleccione una operación")
print("1. Suma")
print("2. Resta")
print("3. Multiplicación")
print("4. División")
print("5. Salir")
option =input("Ingrese su opción (1/2/3/4/5): ")if option =="5":print("Saliendo de la calculadora")break elif option in("1","2","3","4"): number1 =float(input("Ingrese el primer número: ")) number2 =float(input("Ingrese el segundo número: "))if option =="1":print("La suma es:",suma(number1, number2)) elif option =="2":print("La resta es:",restar(number1, number2)) elif option =="3":print("La multiplicación es:",multiply(number1, number2)) elif option =="4":print("La división es:",dividir(number1, number2))else:print("Opción no válida, por favor intenta de nuevo")
calculadora()
Fíjate en dos detalles que marcan la diferencia:
El input se compara como string ("5"), no como entero, para evitar errores de conversión.
El break es el que rompe el while True cuando el usuario elige salir.
Los números se convierten a float para aceptar decimales como 70.6.
¿Por qué importa dividir el código en funciones?
Dividir el código en funciones no es solo estética. Es una habilidad lógica que mejora tres cosas concretas:
Legibilidad: cada función tiene un nombre que explica qué hace.
Mantenimiento: si la suma falla, sabes exactamente dónde corregir.
Reutilización: puedes invocar suma(10, 4) desde cualquier parte sin reescribir la lógica.
El resultado al ejecutar la calculadora con la opción uno y los valores 10 y 4 es 14. Con la opción dos, 70.6 menos 0.6 devuelve 70. Pequeñas piezas, gran control.
¿Qué función vas a escribir como tu próximo ejercicio? Cuéntame en los comentarios qué operación o utilidad quieres convertir en una función reutilizable.
Aprendí más de las correcciones al código que si hubiera salido bien a la primera.
Que maravillosa manera de aprender.
Gracias por considerar esto! De hecho si quisimos poner las tomas donde hay errores por que es algo que nos pasa desde el hola mundo y creo que es importante familiarizarse con los errores y no tenerles tanto miedo.
Recientemente, mientras exploraba y experimentaba en el campus, encontré una excelente ruta de aprendizaje de Python en Platzi.🦉
Hace dias que quedo, seguramente me hicieron caso en Twitter, cuando lanzaron el curso de Django, comente que hacia falta esta ruta de Python y Djando. Backen. :)
Pero esa ruta ya existía, de echo le quitaron cursos y le metieron este curso y el de Django, a mi sólo me faltará el de FastAPI y ya término, espero seguir con mi ruta de HTML y CSS que siempre la dejo en el olvido jajaja
Un dato piola, por ahí de la versión de Python 3.10. añadieron los statements de match case, simplificando un tanto las cosas.
Excelente aportación compañero, además de que con match también puedes evaluar patrones de diccionarios, match es muy util!
es lo que estaba viendo hoy que pidió ayuda un miembro de un grupo de python en el que estoy y dije que es eso de match case, nunca lo había escuchado en python
solo tengo una sugerencia, a mi en lo personal me confundía que en clase se utilizaran términos que aun se habían explicado en el curso, como el caso de 'def', ya que estoy empezando a aprender desde cero, sería genial que avanzaran con un poco mas de orden. gracias
no se si les pasa a todos o solo a mi pero siento que los videos estan medio mezclados... el video pasado uso una funcion para explicar generadores... y en este explica que es una funcion... ya me paso con otros videos.
Creo que los han reorganizado intentando mejorar la relación de contenido. No está mal, aunque a veces se sienten saltos de tema.
Como el mensaje de la calculadora, del cual no tengo contexto y supongo que es por ese reordenamiento.
Cuando defino las operaciones agregué el caso de que se ingrese el divisor 0.
Y al definir la función calculadora agregué el manejo de excepciones para contemplar los casos en los que se ingrese valores inválidos.
def suma(a,b):return a + b
def resta(a,b):return a - b
def producto(a,b):return a * b
def division(a,b):if b ==0:print('Error: No se puede dividir por 0')else:return a / b
``````python
def calculadora():whileTrue:print('Seleccione una opción del 1 al 5:')print('1. Suma')print('2. Resta')print('3. Producto')print('4. Division')print('5. Salir')try: opcion =int(input('Ingrese la opción elegida: '))except:print('Entrada no válida, por favor ingrese un valor entre 1 y 5')continueif opcion ==5:print('Saliendo de la calculadora')breakif opcion in[1,2,3,4]:try: num1 =float(input('Ingrese el primer número: ')) num2 =float(input('Ingrese el segundo número: '))except:print('Entrada no válida. Por favor ingrese números válidos.')continueif opcion ==1:print(f'{num1} + {num2} = ',suma(num1,num2)) elif opcion ==2:print(f'{num1} - {num2} = ',resta(num1,num2)) elif opcion ==3:print(f'{num1} * {num2} = ',producto(num1,num2)) elif opcion ==4:print(f'{num1} / {num2} = ',division(num1,num2))else:print('No es una opción valida. Intente nuevamente por favor')calculadora()
Excelente, eso es manejo de excepciones.
excelente! tambien hice lo mismo
Esta clase es muy valiosa porque si bien lo que buscamos al aprender cualquier habilidad es obtener un resultado correcto, muestra el escenario de la realidad que se vive al momento de aplicar el aprendizaje. La frustración, la desesperación, el nerviosismo generado por que las cosas no salgan a la primera, que más allá del conocimiento mismo es lo que muchas veces más cuesta afrontar al aprender cualquier habilidad. Superar la adversidad conforme aplicamos lo que aprendemos para seguir adelante y al final, alcanzar el resultado deseado. Sin la falla no habría resultado, por lo que fallar no es algo malo, es parte del proceso.
def calcular_area_rectangulo(base, altura):"""Calcula el área de un rectángulo."""return base * altura
def calcular_area_circulo(radio, pi=3.14159):"""Calcula el área de un círculo."""return pi * radio **2# Llamadas a las funciones
area_rectangulo =calcular_area_rectangulo(5,3)area_circulo =calcular_area_circulo(2)print(f"Área del rectángulo: {area_rectangulo}") # Salida: Área del rectángulo:15print(f"Área del círculo: {area_circulo}") # Salida: Área del círculo:12.56636
Las funciones son una herramienta esencial en la programación, ya que permiten modularizar el código y hacerlo más legible y mantenible. Las funciones en Python pueden ser simples o complejas y pueden aceptar parámetros, devolver valores y manejar cantidades variables de argumentos.
Cool
Me gustó mucho el curso . Pero esta clase la encontré de las peores . Les comparto mi código de como elaborar el ejercicio con buenas prácticas
ni siquiera se ha llegado a varias cosas que pones en tu codigo...
Es interesante el metodo de enseñansa de Cali, porque en otros cursos primero te enseñan el concepto. En su caso he visto que en algunos momentos te muestra un codigo con un tema que aún no ha explicado, por ejemplo; este tema, el "def", lo aplicamos en la clase pasada y recién vamos a verlo.
Pero no me quejo, he aprendido mejor asi.
Hola Cesar :) gracias por el feedback!
No se si los errores fueron planeados pero es mejor asi, porque vemos casos reales que pueden suceder en lugar de que el codigo funcine a la primera.
Me encanta la metodología. Yo aprendí Python con un muy buen libro, pero efectivamente de los errores es de donde más se aprende
¿fui al unico que se le puso negro el video del minuto 14:17 al 15:08?
Si, a mi tambien me paso.
espera, entonces que seria yield y return?
El return te devuelve un valor y con esto concluye la función o el método.
El yeild te permite evaluar, diferentes posibilidades de respuesta que coincidan con la condición, y devuelve cada una de ellas, para manejarlas como requieras.
Eso entendí, si estoy equivocado por favor me lo hacen saber.
cuando uno usa return, la función devuelve todo. Por ejemplo si estamos recorriendo una base de datos, return devuelve todos los valores de la base de datos en un solo paquete.
yeild en cambio, devuelve solo un valor sobre la marcha y alista el siguiente, entonces si estamos recorriendo una base de datos es mejor usar yeild para evitar el consumo de memoria, hacer más eficiente el código, controlar las iteraciones, etc.
Esto quiere decir que podemos usar return cuando manejamos valores pequeños y hacemos operaciones con datos como por ejemplo la calculadora de la clase, es algo simple y no necesitamos recorrer una lista de datos.
Yeild lo vamos a usar cuando necesitamos recorrer una gran cantidad de datos y que necesitamos modificarlos.
Depende de cada caso el uso de return y yeild, por lo general es más usado return ya que en la inmesa mayoria de los casos la funciones que vamos a crear no necesitamos recorrer muchos datos.
Hi, estoy retomando Python 🐍 y este curso esta 👍, hice una calculadora en su momento.
"""menu_calculadora.py"""import os
# import sysdefmenu():"""Funcion Menu""" op =Truewhile op: os.system('cls')print('💰 Calculadora 💰'.center(30,'*'))print('1.- Suma')print('2.- Resta')print('3.- Multiplicacion')print('4.- Division')print('5.- Salir')# opcion = int(input('Ingrese una opcion: ')) opcion = pedir_numero_entero()if opcion ==1: suma()elif opcion ==2: resta()elif opcion ==3: multiplicacion()elif opcion ==4: division()elif opcion ==5: salir() op =Falseelse:print('Please, enter a valid menu opcion')input()defsuma():"""Funcion +"""print('\nFunction Addition') n1, n2 = ingre_dosnumeros()print('Resultado: ', n1 + n2)defresta():"""Funcion -"""print('\nFunction Subtraction') n1, n2 = ingre_dosnumeros()print('Resultado: ', n1 - n2)defmultiplicacion():"""Funcion *"""print('\nFunction Multiplication') n1, n2 = ingre_dosnumeros()print('Resultado: ', n1 * n2)defdivision():"""Funcion /"""print('\nFunction Division') n1, n2 = ingre_dosnumeros()print('Resultado: ', n1 / n2)defsalir():"""Funcion Salir"""print('\n*** Bye ***')input() os.system('cls')defingre_dosnumeros():"""Funcion ingresa 2 numeros""" n1 = pedir_numero_entero() n2 = pedir_numero_entero()return(n1, n2)defpedir_numero_entero():"""Funcion ingresa numero entero"""whileTrue:try: num =int(input("Introduce un numero entero: "))breakexcept ValueError:print('Error, introduce un numero entero')return num
menu()```"""menu\_calculadora.py"""import os# import sysdefmenu():"""Funcion Menu""" op =Truewhile op: os.system('cls')print('💰 Calculadora 💰'.center(30,'\*'))print('1.- Suma')print('2.- Resta')print('3.- Multiplicacion')print('4.- Division')print('5.- Salir')# opcion = int(input('Ingrese una opcion: ')) opcion = pedir\_numero\_entero() if opcion == 1: suma() elif opcion == 2: resta() elif opcion == 3: multiplicacion() elif opcion == 4: division() elif opcion == 5: salir() op = False else: print('Please, enter a valid menu opcion') input()defsuma():"""Funcion +"""print('\nFunction Addition') n1, n2 = ingre\_dosnumeros()print('Resultado: ', n1 + n2)defresta():"""Funcion -"""print('\nFunction Subtraction') n1, n2 = ingre\_dosnumeros()print('Resultado: ', n1 - n2)defmultiplicacion():"""Funcion \*"""print('\nFunction Multiplication') n1, n2 = ingre\_dosnumeros()print('Resultado: ', n1 \* n2)defdivision():"""Funcion /"""print('\nFunction Division') n1, n2 = ingre\_dosnumeros()print('Resultado: ', n1 / n2)defsalir():"""Funcion Salir"""print('\n\*\*\* Bye \*\*\*')input() os.system('cls')def ingre\_dosnumeros():"""Funcion ingresa 2 numeros""" n1 = pedir\_numero\_entero() n2 = pedir\_numero\_entero()return(n1, n2)def pedir\_numero\_entero():"""Funcion ingresa numero entero"""whileTrue:try: num =int(input("Introduce un numero entero: "))breakexcept ValueError:print('Error, introduce un numero entero')return num
menu()
Mi version de la calculator:
def calculator():whileTrue:print('Bienvenido a la calculadora Bobadillistica, elige una opción:')print("1. Suma")print("2. Resta")print("3. Multiplicación")print("4. División")print("5. Salir") option =int(input('Elige: '))if option ==1: num1 =int(input('Elegiste suma, que sumaras? ')) num2 =int(input('Con cuanto?: '))print('El resultado es: ', num1 + num2) elif option ==2: num1 =int(input('Elegiste resta, que restaras? ')) num2 =int(input('Con cuanto?: '))print('El resultado es: ', num1 - num2) elif option ==3: num1 =int(input('Elegiste multiplicar, que multiplicaras? ')) num2 =int(input('Con cuanto?: '))print('El resultado es: ', num1 * num2) elif option ==4: num1 =int(input('Elegiste dividir, que dividiras? ')) num2 =int(input('Entre cuanto?: '))if num2 !=0:print('El resultado es: ', num1 / num2)else:print('Error: no se puede dividir entre cero') elif option ==5:print('Hasta luego Bobadillista')breakelse:print('Elige una opción válida') cont =input('¿Quieres continuar? (s/n): ')if cont.lower()=='s':continueelse:print('Hasta luego Bobadillista')breakcalculator()
buena y sencilla forma de hacerlo! aunque utilizando las funciones permite mayor elegancia y reutilización del código!!
# CALCULADOR BÁSICOdefadd(a,b):return a+b
defsubtraction(a,b):return a-b
defmultiplications(a,b):return a*b
defdivision(a,b):return a/b
defcalculating():whileTrue: option_sign =['+','-','*','/'] num1 =int(input('Ingresa el primer número: ')) sign =input('Ingresa el signo del operación: ') num2 =int(input('Ingresa el segundo número: '))if sign in option_sign:if sign =='+':print(num1,sign,num2,'=',add(num1,num2))elif sign =='-':print(num1,sign,num2,'=',subtraction(num1,num2))elif sign =='*':print(num1,sign,num2,'=',multiplications(num1,num2))elif sign =='/':print(num1,sign,num2,'=',division(num1,num2))else:print('eliges un signo')print('''
🧮🧮🧮🧮🧮🧮🧮
''')whileTrue: opcion =input("Para salir presiona '<' + ENTER \nPara seguir presiona '>' + ENTER \n")if opcion in['<','>']:breakelse:print("Por favor, ingresa un signo válido ('<' o '>')")if opcion =='>':print('🚀'*10)continueelif opcion =='<':print('👋🏻'*10)breakprint('CALCULADOR BÁSICO')calculating()```Hola compañeros y profesores, hice un calculador básico como práctica. ¡Espero sus comentarios por favor!
Comparto mi solución
def sumar(a,b):
return a+b
def resta (a,b):
return a-b
def multiplicacion (a,b):
return a*b
def division (a,b):
return a/b
print("\nEsto es una calculadora")
def calculadora ():
while True:
print("Seleccione una operación")
print("Op 1 - Suma")
print("Op 2 - Resta")
print("Op 3 - Múltiplicación")
print("Op 4 - División")
print("Op 5 - Salir de la calculadora")
option = input("\nSeleccione una opción (1,2,3,4,5):")