El condicional switch (match) de Python

El condicional switch (match) de Python

A partir de la versión 3.10 de Python, se añadió la posibilidad de utilizar el condicional switch (match). Son similares a los condicionales if, pero sirven para simplificar comparaciones donde tenemos que escribir muchos elif.

error = input('Introduzca un código de error:\n')
 
match error:
    case "200":
        print('Todo ok.')
    case "301":
        print('Movimiento permanente de la página.')
    case "302":
        print('Movimiento temporal de la página.')
    case "404":
        print('Página no encontrada.')
    case "500":
        print('Error interno del servidor.')
    case "503":
        print('Servicio no disponible.')
    case _:
        print('Error no disponible.')

Voy a poner en la consola el código 300. Puesto que no está contemplado, lo que se ejecuta es el código del «case _». Este case, se ejecuta siempre que todos los otros case son false.

Resultado en la consola

Introduzca un código de error:
300
Error no disponible.

Por cierto, el «case _» puede ser cualquier cosa, no importa poner «_», esto es por convención, pero si haces esto, funciona igual:

case defecto:
        print('Error no disponible.')

Si introducimos un valor que coincide con alguno de los case, se va a ejecutar ese código. El resto se descarta.

Resultado en la consola

Introduzca un código de error:
404
Página no encontrada.

Condicional switch (match) case vs if elif else

Comparemos el condicional switch con un if elif else.

El primer case sería el equivalente al if, el resto a elif, excepto el case _ que es el equivalente a un else.

Si te fijas, con el if tenemos que estar repitiendo la condición repetidamente (error ==). En cambio, con match de Python, no.

error = input('Introduzca un código de error\n')
 
if error == "200":
    print('Todo ok.')
elif error == "301":
    print('Movimiento permanente de la página.')
elif error ==  "302":
    print('Movimiento temporal de la página.')
elif error ==  "404":
    print('Página no encontrada.')
elif error ==  "500":
    print('Error interno del servidor.')
elif error == "503":
    print('Servicio no disponible.')
else:
    print('Error no disponible.')

Lo más recomendable, es utilizar if para condiciones complejas y switch para condiciones sencillas que puedan ser repetitivas como esta.

No te pierdas todo el contenido de este curso y más cosas sobre Python.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

curso de Python Entrada anterior La entrada de datos por consola con input en Python
calendario consola linux Entrada siguiente ¿Cómo ver la fecha y calendario en la consola de Linux?