10 ejercicios resueltos de funciones y módulos en Python. Aprende a estructurar programas reutilizables y limpios paso a paso.
El Poder de la Reutilización
Hasta ahora, es probable que hayas escrito código que se ejecuta de arriba abajo. Pero, ¿qué pasa si necesitas repetir una tarea compleja varias veces? Copiar y pegar código es una mala práctica. Aquí entran las Funciones.
Una función es como una pequeña máquina o fábrica dentro de tu código:
- Entrada (Parámetros): Le das materia prima (datos).
- Proceso: La máquina hace su trabajo.
- Salida (Return): Te devuelve un producto final.
En Python, se definen con la palabra clave def.
Por otro lado, los Módulos son simplemente archivos .py que contienen muchas de estas funciones. Son como una caja de herramientas; en lugar de tener todas las herramientas tiradas en el suelo, las guardas en cajas ordenadas (archivos) y las llamas (con import) solo cuando las necesitas.
Inténtalo tú primero!
🧠 Desafío de Lógica:
La programación no se aprende leyendo, se aprende escribiendo.
En los siguientes ejercicios, leerás el problema. Detente, no hagas scroll hacia la solución. Abre tu editor de Python e intenta crear la función tú mismo. Si te atascas o si tu código funciona, compara tu solución con la nuestra. ¡A veces hay más de una forma correcta de hacerlo!
Ejercicios Resueltos
Ejercicio 1: El saludo formal (Sintaxis básica)
El Problema:
Crea una función llamada saludar_usuario que reciba un nombre como parámetro e imprima un saludo formal: «Hola, [nombre], bienvenido al sistema.»
# Definimos la función con un parámetro llamado 'nombre'
def saludar_usuario(nombre):
print(f"Hola, {nombre}, bienvenido al sistema.")
# Llamamos a la función enviando un valor real
saludar_usuario("Carlos")
saludar_usuario("Ana")
Ejercicio 2: El cuadrado de un número (Uso de return)
El Problema:
Escribe una función llamada calcular_cuadrado que reciba un número entero y retorne (devuelva) el valor de ese número elevado al cuadrado. Luego, imprime el resultado fuera de la función.
def calcular_cuadrado(numero):
resultado = numero * numero
return resultado # Devolvemos el valor, no lo imprimimos dentro
# Guardamos lo que devuelve la función en una variable
valor = 5
resultado_final = calcular_cuadrado(valor)
print(f"El cuadrado de {valor} es {resultado_final}")
Ejercicio 3: Calculadora de Área de Círculo (Uso de Módulos)
El Problema:
Crea una función que calcule el área de un círculo dado su radio. Para obtener un valor preciso de Pi ($\pi$), debes importar el módulo math y usar math.pi.
import math # Importamos el módulo matemático estándar
def area_circulo(radio):
# Fórmula: Pi * radio al cuadrado
area = math.pi * (radio ** 2)
return area
radio_usuario = 3
print(f"El área de un círculo con radio {radio_usuario} es: {area_circulo(radio_usuario):.2f}")
Ejercicio 4: ¿Es mayor de edad? (Retorno Booleano)
El Problema:
Diseña una función llamada es_mayor_edad que reciba una edad numérica. La función debe devolver True si la edad es 18 o más, y False si es menor.
def es_mayor_edad(edad):
if edad >= 18:
return True
else:
return False
# Probamos la función
mi_edad = 15
if es_mayor_edad(mi_edad):
print("Acceso permitido.")
else:
print("Acceso denegado. Eres menor de edad.")
Ejercicio 5: Conversor de Moneda
El Problema:
Crea una función que convierta una cantidad de dólares a tu moneda local (ejemplo: Euros). La función debe recibir la cantidad de dólares y la tasa de cambio.
def convertir_dolar_a_euro(dolares, tasa_cambio):
euros = dolares * tasa_cambio
return euros
dolares_a_cambiar = 50
tasa_actual = 0.92 # 1 Dólar = 0.92 Euros (ejemplo)
total_euros = convertir_dolar_a_euro(dolares_a_cambiar, tasa_actual)
print(f"${dolares_a_cambiar} dólares son €{total_euros} euros.")
Ejercicio 6: Promedio de una lista
El Problema:
Escribe una función que reciba una lista de números (calificaciones) y devuelva el promedio de dichas calificaciones.
def calcular_promedio(lista_notas):
suma = sum(lista_notas) # Suma todos los elementos
cantidad = len(lista_notas) # Cuenta cuántos elementos hay
if cantidad == 0:
return 0 # Evitamos división por cero
return suma / cantidad
mis_notas = [10, 8, 9, 7, 10]
promedio_final = calcular_promedio(mis_notas)
print(f"Tu promedio es: {promedio_final}")
Ejercicio 7: Generador de Contraseñas (Módulo random)
El Problema:
Usando el módulo random, crea una función que simule el lanzamiento de un dado. La función no recibe parámetros, pero debe devolver un número aleatorio entre 1 y 6 cada vez que se llame.
import random # Importamos el módulo de aleatoriedad
def lanzar_dado():
numero = random.randint(1, 6) # Genera entero entre 1 y 6
return numero
# Lanzamos el dado 3 veces
print(f"Tirada 1: {lanzar_dado()}")
print(f"Tirada 2: {lanzar_dado()}")
print(f"Tirada 3: {lanzar_dado()}")
Ejercicio 8: Contador de palabras
El Problema:
Crea una función que reciba una oración larga y devuelva el número de palabras que contiene. (Pista: investiga el método .split() de las cadenas).
def contar_palabras(frase):
# .split() separa el texto por espacios y crea una lista
lista_palabras = frase.split()
return len(lista_palabras)
texto = "Aprender Python es muy divertido y útil"
cantidad = contar_palabras(texto)
print(f"La frase tiene {cantidad} palabras.")
Ejercicio 9: El número máximo (Lógica interna)
El Problema:
Crea una función llamada maximo_de_tres que reciba tres números como argumentos y devuelva el mayor de ellos, sin usar la función max() nativa de Python.
def maximo_de_tres(n1, n2, n3):
if n1 > n2 and n1 > n3:
return n1
elif n2 > n1 and n2 > n3:
return n2
else:
return n3
mayor = maximo_de_tres(14, 55, 12)
print(f"El número mayor es: {mayor}")
Ejercicio 10: Calculadora con parámetros por defecto
El Problema:
Escribe una función llamada elevar_potencia que reciba un número base y un exponente. Si el usuario no envía el exponente, la función debe elevar al cuadrado por defecto (exponente = 2).
# Asignamos un valor por defecto al exponente
def elevar_potencia(base, exponente=2):
return base ** exponente
print(elevar_potencia(3, 3)) # Aquí usa el 3 como exponente (3*3*3 = 27)
print(elevar_potencia(4)) # Aquí usa el 2 por defecto (4*4 = 16)
Preguntas Frecuentes (FAQs)
¿Cuál es la diferencia entre print y return?
Esta es la duda más común. print solo muestra texto en la pantalla para que lo vea el humano, pero el programa «pierde» ese dato. return entrega el dato al programa para que pueda guardarlo en una variable o usarlo en otra operación matemática.
¿Para qué sirven los módulos?
Sirven para organizar el código. Imagina escribir un programa de 10,000 líneas en un solo archivo; sería imposible de leer. Los módulos te permiten separar la lógica (ej: un archivo para funciones matemáticas, otro para gestión de usuarios, etc.).
¿Puede una función llamar a otra función?
¡Sí, absolutamente! De hecho, es una práctica excelente. Puedes tener funciones pequeñas y específicas, y una función «maestra» que las llame en orden para resolver un problema más grande.
Conclusión
¡Excelente trabajo! Has pasado de escribir scripts lineales a crear bloques de construcción lógicos. Entender las funciones y los módulos es lo que diferencia a un principiante de un programador capaz de construir sistemas complejos.
Al usar funciones, tu código ahora es más limpio, más fácil de corregir y, sobre todo, reutilizable. Ya no tienes que reescribir la lógica del área del círculo cada vez que la necesites; ¡simplemente llamas a tu función!
¿Listo para el siguiente paso?
Si quieres seguir avanzando, el siguiente paso natural es aprender sobre Estructuras de Datos (Listas y Diccionarios) para procesar información más compleja dentro de tus funciones.
Visita nuestro blog para ver la guía completa y seguir practicando. ¡El código no se escribe solo, sigue programando!
