PyQuiz 30 – match/case en Python

El reto
codigo = 404
match codigo:
case 200:
msg = 'OK'
case 404:
msg = 'No encontrado'
case _:
msg = 'Otro'
print(msg)¿Cuál es el resultado?
- a) 'No encontrado'
- b) 'Otro'
- c) 'OK'
Piensa tu respuesta antes de seguir leyendo…
Concepto: match/case
La sentencia match/case, introducida en Python 3.10, implementa el pattern matching estructural. Permite comparar un valor con múltiples patrones de forma expresiva y eficiente, siendo más potente que una cadena de if/elif para ciertos casos de uso.
La estructura básica es: match valor: seguido de bloques case patron:. Python evalúa los patrones de arriba a abajo y ejecuta el primer bloque cuyo patrón coincida. El patrón especial case _: es el comodín que actúa como default y captura cualquier valor que no haya coincidido antes.
En este quiz, match 404: evalúa cada case: el 200 no coincide, el 404 sí, por lo que se ejecuta msg = 'No encontrado' y el resto de bloques se ignoran, incluido el comodín _.
Paso a paso
codigo = 404— se asigna el entero404a la variablecodigo.match codigo:— Python comienza a evaluar los patrones con el valor404.case 200:— ¿es404 == 200? No. Se pasa al siguiente.case 404:— ¿es404 == 404? Sí. Se ejecuta el bloque:msg = 'No encontrado'.- El patrón
case _:no se evalúa porque ya hubo una coincidencia anterior. Elmatchtermina. print(msg)— se imprimeNo encontrado.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: A) 'No encontrado'
match/case compara codigo (404) con cada case. Coincide con 404 → msg = 'No encontrado'.
Sabías que…
match/case es mucho más potente que una comparación simple. Puede hacer destructuring de estructuras de datos, guardar valores capturados y combinar patrones con condiciones:
# Equivalente con if/elif (más verboso)
codigo = 404
if codigo == 200:
msg = 'OK'
elif codigo == 404:
msg = 'No encontrado'
else:
msg = 'Otro'
# match con tuplas (destructuring)
punto = (0, 5)
match punto:
case (0, 0):
print('Origen')
case (0, y):
print(f'En eje Y: {y}') # captura y=5
case (x, 0):
print(f'En eje X: {x}')
case (x, y):
print(f'Punto: ({x}, {y})')
# match con guard (condición adicional)
nota = 7
match nota:
case n if n >= 9:
print('Sobresaliente')
case n if n >= 7:
print('Notable') # se imprime esto
case _:
print('Aprobado o suspenso')Prueba tú mismo
Reescribe el match/case del quiz usando if/elif/else. ¿Qué ventajas tiene match/case cuando los patrones son estructuras de datos complejas?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: if, else, elif, match y switch
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
