Objetivo de Aprendizaje
Dominar la instrucción match en Python como herramienta para implementar lógica condicional de manera clara y expresiva, desarrollando la capacidad de analizar problemas complejos, diseñar soluciones elegantes mediante estructuras de control avanzadas, y aplicar este conocimiento en la creación de programas más legibles, mantenibles y alineados con las mejores prácticas de la programación moderna, fomentando así un pensamiento computacional estructurado y una actitud de constante búsqueda de la simplicidad y claridad en el código.
Contextualización
Imagina que eres el organizador de un festival de música en Quito, y necesitas clasificar a los asistentes según el tipo de entrada que compraron: VIP, General, Estudiante o Invitado. Tradicionalmente, usarías una cadena interminable de if-elif-else, como un guardia revisando cada documento uno por uno. Pero Python 3.10 nos trajo una herramienta más elegante: la instrucción match, similar a un recepcionista experto que inmediatamente dirige a cada persona al área correcta.
Esta nueva capacidad no es solo un "azúcar sintáctico"; es un cambio de mentalidad. Nos invita a pensar en patrones, en estructuras, en cómo nuestros datos se relacionan entre sí. Como cuando identificas un patrón en las nubes andinas o reconoces la estructura de una receta tradicional, match nos ayuda a ver patrones en nuestros datos y actuar en consecuencia.
Desarrollo de la Actividad
La instrucción match funciona comparando un valor con una serie de patrones. Es como tener un mapa de decisiones donde cada ruta está claramente marcada. Veamos cómo funciona con ejemplos prácticos:
Ejemplo 1: Clasificación de asistentes al festival
def clasificar_asistente(tipo_entrada):
match tipo_entrada:
case "VIP":
return "Acceso al área preferencial + barra libre"
case "General":
return "Acceso al área general"
case "Estudiante":
return "Acceso con descuento (presentar carnet)"
case "Invitado":
return "Acceso al backstage"
case _:
return "Tipo de entrada no reconocido"
# Probemos la función
print(clasificar_asistente("VIP")) # Resultado: Acceso al área preferencial + barra libre
print(clasificar_asistente("Estudiante")) # Resultado: Acceso con descuento (presentar carnet)
Ejemplo 2: Sistema de recomendación de actividades según clima
def recomendar_actividad(clima, temperatura):
match (clima, temperatura):
case ("soleado", temp) if temp > 25:
return "¡Día perfecto para visitar la Mitad del Mundo!"
case ("lluvioso", _):
return "Recomendado: Visitar museos en el Centro Histórico"
case ("nublado", temp) if 15 <= temp <= 25:
return "Ideal para caminar por el Teleférico"
case ("soleado", _):
return "Puedes recorrer la Mariscal"
case _:
return "Revisa el pronóstico para planificar mejor"
# Probemos con diferentes condiciones climáticas
print(recomendar_actividad("soleado", 28)) # Resultado: ¡Día perfecto para visitar la Mitad del Mundo!
print(recomendar_actividad("lluvioso", 18)) # Resultado: Recomendado: Visitar museos en el Centro Histórico
Actividad práctica: Copia estos ejemplos en tu entorno de Python y experimenta modificándolos. ¿Qué pasa si agregas un nuevo tipo de entrada al festival? ¿O si incluyes un nuevo patrón climático? Juega con los valores y observa cómo se comporta el programa.
El Reto Final
Eres el desarrollador de un sistema para la feria gastronómica "Sabores del Ecuador". Tu tarea es crear un programa que:
- Clasifique a los visitantes según su tipo (Niño, Adulto, Adulto Mayor, Estudiante con carnet).
- Calcule el precio de entrada aplicando descuentos según la clasificación.
- Recomiende platos típicos según la región de origen del visitante (Costa, Sierra, Oriente, Insular).
- Maneje casos especiales como grupos familiares (más de 3 personas del mismo núcleo familiar).
Utiliza la instrucción match para implementar esta lógica de manera clara y estructurada. Considera que los precios base son: $5 para niños, $10 para adultos, $7 para adultos mayores y $6 para estudiantes. Los descuentos por grupo familiar son del 15%.
Preguntas para reflexionar: ¿Cómo estructuraste tus patrones? ¿Qué ventajas encuentras en usar match frente a múltiples if anidados? ¿Cómo garantizas que tu código sea comprensible para otros programadores?
Evaluación Lúdica: ¿Eres un maestro del match?
Responde estas 5 preguntas para poner a prueba tu comprensión de la instrucción match.
1 ¿En qué versión de Python se introdujo la instrucción match?
2 ¿Qué símbolo se utiliza como comodín (wildcard) en la instrucción match?
3 ¿Cuál es la principal ventaja de usar match sobre múltiples sentencias if-elif?
4 ¿Qué imprimirá el siguiente código?
status = 404
match status:
case 200: print("OK")
case 404: print("No encontrado")
case _: print("Error")
match status:
case 200: print("OK")
case 404: print("No encontrado")
case _: print("Error")