Python: Manejo de funciones

Objetivo de aprendizaje

Dominar el manejo de funciones en Python mediante la creación, implementación y aplicación de funciones personalizadas para resolver problemas computacionales, desarrollando competencias técnicas en estructuración de código modular, habilidades cognitivas en el análisis y descomposición de problemas complejos, y actitudes profesionales como la curiosidad intelectual, la precisión técnica y la colaboración efectiva, con el propósito de transformar algoritmos abstractos en soluciones concretas que respondan a necesidades reales de automatización y procesamiento de información en contextos educativos y profesionales.

Contextualización

Imagina que eres el organizador de un festival de música en tu ciudad. Tienes una lista de artistas, horarios, escenarios y asistentes. Cada día debes coordinar decenas de actividades que se repiten: asignar horarios, calcular ingresos, organizar logística. Sin funciones, tendrías que escribir el mismo código una y otra vez, como un organizador que repite las mismas instrucciones a cada persona.

Las funciones en Python son como asistentes virtuales especializados: uno calcula ingresos, otro organiza horarios, otro gestiona invitados. Una vez que defines sus tareas, puedes invocarlos cuando los necesites, con diferentes datos, obteniendo resultados consistentes. En nuestro taller, no solo aprenderás sintaxis; descubrirás cómo descomponer problemas complejos en partes manejables, crear soluciones reutilizables y construir programas que se adapten como un equipo bien coordinado.

Este conocimiento te prepara para el mundo real, donde la eficiencia, la organización y el pensamiento modular no son opciones, sino necesidades. Desde aplicaciones móviles hasta análisis de datos, las funciones son los cimientos sobre los que se construye software útil y elegante.

Desarrollo de la actividad

1. Funciones básicas: Tu primer asistente virtual

Una función es un bloque de código reutilizable que realiza una tarea específica. Se define con la palabra clave def.

def saludar_participante(nombre):
    """Saluda a un participante del festival"""
    mensaje = f"¡Bienvenido al festival, {nombre}! Que disfrutes del evento."
    return mensaje

# Llamando a la función
mensaje_bienvenida = saludar_participante("Ana")
print(mensaje_bienvenida)
# Resultado: ¡Bienvenido al festival, Ana! Que disfrutes del evento.

2. Funciones con parámetros y retorno de valores

Las funciones pueden recibir información (parámetros) y devolver resultados (return).

def calcular_ingresos(precio_entrada, cantidad_asistentes):
    """Calcula los ingresos totales del festival"""
    if cantidad_asistentes < 0:
        return "Error: La cantidad de asistentes no puede ser negativa"
    
    ingresos_totales = precio_entrada * cantidad_asistentes
    return ingresos_totales

# Probando la función con diferentes valores
print(calcular_ingresos(25, 1000))  # 25000
print(calcular_ingresos(30, 500))   # 15000
print(calcular_ingresos(20, -50))   # Mensaje de error

3. Funciones con valores por defecto

Podemos asignar valores predeterminados a los parámetros para hacer las funciones más flexibles.

def organizar_concierto(artista, escenario="Principal", duracion=90):
    """Organiza los detalles de un concierto"""
    detalle = f"Artista: {artista} | Escenario: {escenario} | Duración: {duracion} min"
    return detalle

# Usando valores por defecto
print(organizar_concierto("Los Teenagers"))
# Artista: Los Teenagers | Escenario: Principal | Duración: 90 min

# Sobrescribiendo valores por defecto
print(organizar_concierto("DJ Rhythmo", "Electrónica", 120))
# Artista: DJ Rhythmo | Escenario: Electrónica | Duración: 120 min

El Reto Final

Festival de Música "Código en Armonía"

Eres el coordinador principal del festival de música más importante del año. Debes desarrollar un sistema modular en Python que gestione diferentes aspectos del evento usando funciones.

Tu misión:

Crea un programa Python que incluya las siguientes funciones:

  1. calcular_ingresos_netos: Recibe el precio de entrada, cantidad de asistentes y costos de producción. Retorna las ganancias netas (ingresos - costos).
  2. asignar_escenario: Recibe el nombre del artista y su género musical. Asigna automáticamente un escenario según el género (Rock → Principal, Electrónica → Dance, Pop → Central, otros → Acústico).
  3. verificar_capacidad: Recibe el escenario y cantidad de asistentes esperados. Retorna True si la capacidad es suficiente, False si está sobrecupado (Principal: 5000, Dance: 3000, Central: 4000, Acústico: 1000).
  4. generar_informe: Recibe lista de artistas y asistentes esperados. Usa las funciones anteriores para generar un informe detallado que incluya ingresos netos, asignación de escenarios y verificación de capacidades.

Datos de prueba:

artistas = [
    {"nombre": "The Pythonists", "genero": "Rock", "asistentes_esperados": 4500},
    {"nombre": "DJ Byte", "genero": "Electrónica", "asistentes_esperados": 2800},
    {"nombre": "String Harmony", "genero": "Pop", "asistentes_esperados": 3800},
    {"nombre": "Binary Duo", "genero": "Acústico", "asistentes_esperados": 800}
]

precio_entrada = 30
costos_produccion = 100000

Reflexión metacognitiva:

Antes de codificar, pregúntate: ¿Cómo puedo dividir este problema en partes más pequeñas? ¿Qué funciones ya he aprendido que puedo adaptar? ¿Qué parámetros necesitará cada función? ¿Qué valores deberían retornar?

Este reto integra todo lo aprendido: funciones con parámetros, condicionales, operaciones matemáticas, y sobre todo, el pensamiento modular para resolver problemas complejos.

Evaluación Lúdica

¿Cuál es la palabra clave para definir una función en Python?

Puntaje actual:

0

Pregunta 1 de 5