🎯 Desafío de la Clase
Completa todos los ejercicios para dominar las funciones en Python. Cada ejercicio te ayudará a entender mejor cómo crear y usar funciones efectivamente.
Ejercicio 1: Función de Saludo Personalizado
FácilCrea una función llamada saludar_persona que tome dos parámetros: nombre y hora. La función debe devolver un saludo apropiado según la hora del día:
- Si la hora es menor a 12: "¡Buenos días, [nombre]!"
- Si la hora está entre 12 y 18: "¡Buenas tardes, [nombre]!"
- Si la hora es mayor a 18: "¡Buenas noches, [nombre]!"
💡 Pista
Usa condicionales (if, elif, else) dentro de tu función para determinar qué saludo mostrar.
✅ Solución
if hora < 12:
return f"¡Buenos días, {nombre}!"
elif hora < 18:
return f"¡Buenas tardes, {nombre}!"
else:
return f"¡Buenas noches, {nombre}!"
# Pruebas
print(saludar_persona("Ana", 9)) # ¡Buenos días, Ana!
print(saludar_persona("Carlos", 15)) # ¡Buenas tardes, Carlos!
print(saludar_persona("María", 20)) # ¡Buenas noches, María!
Ejercicio 2: Calculadora de Estadísticas
MedioCrea una función llamada calcular_estadisticas que tome una lista de números y devuelva un diccionario con:
- La suma de todos los números: "suma"
- El promedio: "promedio"
- El número máximo: "maximo"
- El número mínimo: "minimo"
- La cantidad de números: "cantidad"
💡 Pista
Usa las funciones built-in de Python como sum(), max(), min() y len().
✅ Solución
if len(numeros) == 0:
return "La lista está vacía"
estadisticas = {
"suma": sum(numeros),
"promedio": sum(numeros) / len(numeros),
"maximo": max(numeros),
"minimo": min(numeros),
"cantidad": len(numeros)
}
return estadisticas
# Pruebas
numeros = [10, 20, 30, 40, 50]
resultado = calcular_estadisticas(numeros)
print(resultado)
# {'suma': 150, 'promedio': 30.0, 'maximo': 50, 'minimo': 10, 'cantidad': 5}
Ejercicio 3: Validador de Contraseña
MedioCrea una función llamada validar_password que tome una contraseña como parámetro y devuelva True si cumple con los siguientes criterios:
- Tiene al menos 8 caracteres
- Contiene al menos una letra mayúscula
- Contiene al menos una letra minúscula
- Contiene al menos un número
- Contiene al menos un carácter especial !@#$%^&*
💡 Pista
Usa métodos de string como isupper(), islower(), isdigit() y verifica si los caracteres están en una lista de caracteres especiales.
✅ Solución
Ejercicio 4: Filtrar Números Pares e Impares
MedioCrea una función llamada filtrar_pares_impares que reciba una lista de números y devuelva dos listas: una con los números pares y otra con los impares.
- Usa comprensión de listas para separar pares e impares.
- Devuelve una tupla con ambas listas.
💡 Pista
Puedes usar el operador módulo % para saber si un número es par o impar.
✅ Solución
Ejercicio 5: Contador de Palabras Únicas
MedioCrea una función llamada contar_palabras_unicas que reciba una cadena de texto y devuelva cuántas palabras únicas contiene (ignorando mayúsculas/minúsculas y signos de puntuación).
- Convierte todo el texto a minúsculas.
- Elimina signos de puntuación comunes.
- Usa un conjunto (
set) para contar palabras únicas.
💡 Pista
Puedes usar el método .split() y el módulo string para quitar puntuación.
✅ Solución
Ejercicio 6: Invertir Palabras en una Frase
MedioCrea una función llamada invertir_palabras que reciba una cadena de texto y devuelva una nueva cadena con el orden de las palabras invertido.
- No inviertas las letras de cada palabra, solo el orden de las palabras.
- La función debe devolver la frase invertida como un solo string.
💡 Pista
Puedes usar el método .split() y luego .join().
✅ Solución
Ejercicio 7: Sumar Solo Números Positivos
MedioCrea una función llamada sumar_positivos que reciba una lista de números y devuelva la suma de solo los números positivos.
- Ignora los números negativos y el cero.
- Usa comprensión de listas o la función
filter().
💡 Pista
Puedes usar una condición dentro de la comprensión de listas.
✅ Solución
Ejercicio 8: Generador de Fibonacci
DifícilCrea una función llamada fibonacci que genere los primeros n números de la secuencia de Fibonacci. La función debe usar argumentos variables (*args) para aceptar diferentes parámetros:
- Si se pasa un número: genera esa cantidad de números
- Si se pasan dos números: genera números hasta que el siguiente sea mayor al segundo número
- Si se pasan tres números: genera números entre el rango especificado
💡 Pista
Usa len(args) para determinar cuántos argumentos se pasaron y ajusta la lógica en consecuencia.
✅ Solución
Ejercicio 9: Decorador Personalizado
DifícilCrea un decorador llamado medir_tiempo que mida el tiempo de ejecución de cualquier función y muestre cuánto tiempo tardó en ejecutarse.
💡 Pista
Usa el módulo time para medir el tiempo. Un decorador es una función que toma otra función como argumento y retorna una nueva función.