10 Ejercicios resueltos de Funciones y Módulos en Python
10 ejercicios resueltos de funciones y módulos en Python. Aprende a estructurar programas reutilizables y limpios paso a paso.
Aprendizaje teórico
El Poder de la Reutilización
Cuando empiezas a programar, es normal escribir instrucciones una debajo de otra. Pero ¿qué sucede cuando necesitas realizar la misma tarea varias veces? En lugar de copiar el código, puedes crear una función y utilizarla siempre que la necesites.
Una función es un bloque de instrucciones que realiza una tarea concreta. Puede recibir parámetros, trabajar con esos datos y devolver un resultado mediante return. Se define con la palabra def:
def saludar(nombre):
return f"Hola, {nombre}"
print(saludar("Ana"))
Los módulos permiten organizar funciones y otras herramientas en archivos que puedes reutilizar. Python también incluye módulos listos para usar, como math para cálculos matemáticos y random para generar valores aleatorios. Para utilizarlos, escribe import seguido del nombre del módulo.
Antes de mirar cada solución, intenta resolver el ejercicio por tu cuenta. Aunque tu respuesta sea diferente, lo importante es comprender cómo funciona.
Ejercicio 1: El saludo formal (Sintaxis básica)
Crea una función llamada saludar_usuario que reciba el nombre de una persona y muestre un mensaje de bienvenida. Llama a la función dos veces con nombres diferentes para comprobar que puedes reutilizarla.
Pista
Define la función con def y coloca el nombre entre paréntesis. Usa una cadena con f para incluirlo en el saludo.
def saludar_usuario(nombre):
print(f"Hola, {nombre}, bienvenido al sistema.")
saludar_usuario("Carlos")
saludar_usuario("Ana")
terminal Resultado esperado:
Hola, Carlos, bienvenido al sistema. Hola, Ana, bienvenido al sistema.
Ejercicio 2: El cuadrado de un número (Uso de return)
Escribe una función llamada calcular_cuadrado que reciba un número y devuelva su cuadrado. Guarda el resultado en una variable y muéstralo fuera de la función.
Pista
Multiplica el número por sí mismo y utiliza return para devolver el resultado.
def calcular_cuadrado(numero):
return numero * numero
valor = 5
resultado_final = calcular_cuadrado(valor)
print(f"El cuadrado de {valor} es {resultado_final}")
terminal Resultado esperado:
El cuadrado de 5 es 25
Ejercicio 3: Calculadora de Área de Círculo (Uso de Módulos)
Crea una función que calcule el área de un círculo a partir de su radio. Utiliza el módulo math para obtener el valor de π y muestra el resultado con dos decimales.
Pista
Importa math y aplica la fórmula math.pi * radio ** 2.
import math
def area_circulo(radio):
if radio < 0:
raise ValueError("El radio no puede ser negativo")
return math.pi * radio ** 2
radio_usuario = 3
print(f"El área de un círculo con radio {radio_usuario} es: {area_circulo(radio_usuario):.2f}")
terminal Resultado esperado:
El área de un círculo con radio 3 es: 28.27
Ejercicio 4: ¿Es mayor de edad? (Retorno Booleano)
Crea una función llamada es_mayor_edad que reciba una edad y devuelva True si la persona tiene 18 años o más, o False si es menor. Utiliza el resultado para mostrar si puede acceder.
Pista
Una comparación como edad >= 18 ya produce un valor verdadero o falso.
def es_mayor_edad(edad):
return edad >= 18
mi_edad = 15
if es_mayor_edad(mi_edad):
print("Acceso permitido.")
else:
print("Acceso denegado. Eres menor de edad.")
terminal Resultado esperado:
Acceso denegado. Eres menor de edad.
Ejercicio 5: Conversor de Moneda
Crea una función que convierta una cantidad de dólares a euros utilizando una tasa de cambio recibida como parámetro. Muestra la cantidad convertida con dos decimales. La tasa del ejemplo es ilustrativa, no una cotización actual.
Pista
Multiplica los dólares por la tasa de cambio. Usa :.2f para mostrar dos decimales.
def convertir_dolar_a_euro(dolares, tasa_cambio):
if dolares < 0 or tasa_cambio <= 0:
raise ValueError("La cantidad y la tasa deben ser válidas")
return dolares * tasa_cambio
dolares_a_cambiar = 50
tasa_ejemplo = 0.92
total_euros = convertir_dolar_a_euro(dolares_a_cambiar, tasa_ejemplo)
print(f"${dolares_a_cambiar} dólares son €{total_euros:.2f} euros.")
terminal Resultado esperado:
$50 dólares son €46.00 euros.
Ejercicio 6: Promedio de una lista
Escribe una función que reciba una lista de calificaciones y calcule su promedio. Si la lista está vacía, devuelve 0 para evitar una división entre cero.
Pista
sum() suma los elementos y len() indica cuántos hay. Divide la suma entre la cantidad.
def calcular_promedio(lista_notas):
if not lista_notas:
return 0
return sum(lista_notas) / len(lista_notas)
mis_notas = [10, 8, 9, 7, 10]
promedio_final = calcular_promedio(mis_notas)
print(f"Tu promedio es: {promedio_final}")
terminal Resultado esperado:
Tu promedio es: 8.8
Ejercicio 7: Generador de Contraseñas (Módulo random)
Crea una función que genere una contraseña sencilla de ocho caracteres combinando letras y números. Utiliza el módulo random para elegir cada carácter. Este ejercicio sirve para practicar módulos y funciones; para contraseñas reales se recomienda secrets.
Pista
Importa random y string. Puedes elegir caracteres con random.choice() y unirlos con ''.join().
import random
import string
def generar_contrasena(longitud=8):
if longitud < 1:
raise ValueError("La longitud debe ser positiva")
caracteres = string.ascii_letters + string.digits
return ''.join(random.choice(caracteres) for _ in range(longitud))
contrasena = generar_contrasena()
print(f"Contraseña generada: {contrasena}")
terminal Resultado esperado:
Se mostrará una contraseña aleatoria de ocho caracteres, por ejemplo: Contraseña generada: a7B2c9D4. La contraseña cambia en cada ejecución. Para generar contraseñas seguras de uso real, reemplaza random.choice por secrets.choice.
Ejercicio 8: Contador de palabras
Crea una función que reciba una oración y devuelva cuántas palabras contiene. Comprueba el resultado con una frase de ejemplo.
Pista
split() separa una cadena en palabras y len() cuenta los elementos obtenidos.
def contar_palabras(frase):
return len(frase.split())
texto = "Aprender Python es muy divertido y útil"
cantidad = contar_palabras(texto)
print(f"La frase tiene {cantidad} palabras.")
terminal Resultado esperado:
La frase tiene 7 palabras.
Ejercicio 9: El número máximo (Lógica interna)
Escribe una función llamada maximo_de_tres que reciba tres números y devuelva el mayor, sin utilizar la función incorporada max(). La solución debe funcionar incluso cuando dos o más números sean iguales.
Pista
Guarda el primer número como mayor provisional y compáralo con los otros dos.
def maximo_de_tres(n1, n2, n3):
mayor = n1
if n2 > mayor:
mayor = n2
if n3 > mayor:
mayor = n3
return mayor
mayor = maximo_de_tres(14, 55, 12)
print(f"El número mayor es: {mayor}")
terminal Resultado esperado:
El número mayor es: 55
Ejercicio 10: Calculadora con parámetros por defecto
Crea una función llamada elevar_potencia que reciba una base y un exponente. Cuando no se indique el exponente, la función debe elevar la base al cuadrado. Prueba ambos casos.
Pista
Asigna el valor 2 al parámetro exponente en la definición de la función.
def elevar_potencia(base, exponente=2):
return base ** exponente
print(elevar_potencia(3, 3))
print(elevar_potencia(4))
terminal Resultado esperado:
27 16
Preguntas frecuentes
¿Cuál es la diferencia entre print y return?
print() muestra información en pantalla. En cambio, return devuelve un valor desde una función para que puedas guardarlo, utilizarlo en un cálculo o pasarlo a otra función. Una función puede mostrar un mensaje sin devolver un resultado útil, por eso conviene aprender cuándo usar cada uno.
¿Para qué sirven los módulos?
Los módulos ayudan a organizar el código en archivos y permiten aprovechar funciones que ya existen. Por ejemplo, puedes importar math para hacer cálculos o crear tu propio archivo con funciones que utilices en distintos programas.
¿Puede una función llamar a otra función?
Sí. Es muy habitual crear funciones pequeñas que resuelvan tareas concretas y luego combinarlas para construir un programa más completo. Así el código resulta más fácil de entender, probar y mantener.
Conclusión
¡Muy bien! Con estos 10 ejercicios resueltos de funciones y módulos en Python ya has practicado cómo crear funciones, recibir parámetros, devolver resultados y aprovechar herramientas incluidas en el lenguaje.
Lo mejor de trabajar con funciones es que no necesitas escribir las mismas instrucciones una y otra vez. Puedes resolver un problema una vez y reutilizar esa solución en otras partes de tu programa. Además, al separar tu código en funciones y módulos, será mucho más sencillo encontrar errores y realizar mejoras.
Si algún ejercicio te resultó difícil, vuelve a intentarlo cambiando los valores de entrada o creando tu propia versión. Practicar con ejemplos pequeños es una excelente forma de ganar confianza. Como siguiente paso, puedes combinar estas funciones con listas y diccionarios para resolver problemas más completos.
Sigue aprendiendo
¿Quieres profundizar en cómo funcionan los parámetros, los valores de retorno y las funciones? La guía oficial de Python es un buen lugar para continuar.
Descubre cómo importar módulos y aprovechar código que ya está disponible en Python para tus proyectos.
Sigue practicando con explicaciones y ejercicios para afianzar lo que acabas de aprender.
Sigue practicando
Otros ejercicios prácticos recomendados
10 Ejercicios resueltos de Estructuras de Control en Python
Domina la lógica de programación con estos ejercicios resueltos de estructuras de control en Python. Aprende if, for y while con ejemplos prácticos y explicaciones claras paso a paso.