PyQuiz 30 - match/case en Python | Quiz interactivo

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

  1. codigo = 404 — se asigna el entero 404 a la variable codigo.
  2. match codigo: — Python comienza a evaluar los patrones con el valor 404.
  3. case 200: — ¿es 404 == 200? No. Se pasa al siguiente.
  4. case 404: — ¿es 404 == 404? Sí. Se ejecuta el bloque: msg = 'No encontrado'.
  5. El patrón case _: no se evalúa porque ya hubo una coincidencia anterior. El match termina.
  6. print(msg) — se imprime No 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.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicar un comentario