Sentencia match en Python 3.10 para control de flujo

Clase 19 de 32Curso de Fundamentos de Python

Resumen

La sentencia match de Python 3.10 simplifica el control de flujo con una sintaxis clara y legible. Si vienes de otros lenguajes, se siente similar a un switch, pero con el estilo Python. Aquí verás cómo sustituir cadenas de if, elif, else por casos bien definidos con case y cómo usar el comodín _ para capturar lo no contemplado.

¿Qué es la sentencia match en Python 3.10?

La idea central: evaluar una expresión y comparar su valor contra varios casos. Si hay coincidencia, se ejecuta el bloque asociado. Es ideal para reemplazar secuencias repetitivas de if/elif.

  • Introducida en Python 3.10: sintaxis moderna y clara.
  • Inspiración de switch: enfoque por coincidencia de valor.
  • Estructura básica: una expresión, varios case, y un caso comodín con _.
  • Control de flujo más limpio: reemplaza if, elif, elif, else.

¿Por qué reemplaza if/elif/else?

  • Menos repetición: un único punto de comparación.
  • Legibilidad: cada case expresa la intención del caso.
  • Mantenimiento: agregar o cambiar un caso es directo.

¿Cómo funciona el comodín _?

  • _ captura cualquier valor que no coincida con los casos previos.
  • Útil para mostrar un mensaje por defecto.

¿Cómo usar match con el día de la semana?

El ejemplo define una variable dia y usa match para imprimir el nombre del día según un número. Si el valor no coincide con los casos definidos, se muestra un mensaje por defecto con _.

# Python 3.10+
dia = 1

match dia:
    case 1:
        print("hoy es lunes")
    case 2:
        print("hoy es martes")
    case 3:
        print("hoy es miércoles")
    case _:
        print("No coincide con ninguna de las anteriores opciones")
  • Si dia = 1: imprime "hoy es lunes".
  • Si dia = 2: imprime "hoy es martes".
  • Si dia = 3: imprime "hoy es miércoles".
  • Si dia no es 1, 2 o 3: entra en case _ y muestra el mensaje por defecto.

¿Cómo cambiar el valor y ver el resultado?

  • Modifica dia a 2 para ver "hoy es martes".
  • Modifica dia a 3 para ver "hoy es miércoles".
  • Usa un valor no declarado (por ejemplo 9) para activar case _.

¿Qué habilidades y conceptos pones en práctica?

  • Control de flujo con match y case.
  • Mapeo de valores numéricos a mensajes.
  • Uso del comodín _ para casos no contemplados.
  • Pruebas cambiando entradas para verificar salidas.

¿Qué ejercicio practicar con strings y case?

Se propone cambiar la comparación de números por texto. En vez de 1, 2, 3, usa un string y compara de la misma forma. Así ejercitas la coincidencia por valor y el manejo del caso por defecto.

# Ejercicio sugerido
# Cambia dia_num por un string, por ejemplo: "lunes", "martes", "miércoles"
dia_txt = "lunes"

match dia_txt:
    case "lunes":
        print("hoy es lunes")
    case "martes":
        print("hoy es martes")
    case "miércoles":
        print("hoy es miércoles")
    case _:
        print("No coincide con ninguna de las anteriores opciones")

¿Cómo compartir tu solución y aprender más?

  • Crea tu versión más creativa con strings.
  • Prueba varios valores y el caso _.
  • Comenta tu solución y resultados para que todos aprendamos juntos.