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.

El condicional SWITCH (MATCH) - Python en 1 minuto CP45
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

SWITCH (MATCH) vs IF - Python en 1 minuto CP46

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.

FacebookTwitterEmailPinterestWhatsAppRedditCopy LinkTelegramGmailGoogle ClassroomLinkedInYahoo MailOutlook.comShare

Un comentario en «El condicional switch (match) de Python»

  1. //tu esto funciona igual, no hay necesidad de usar el operador de coparacion ==.

    Estas error = input(‘Introduzca un código de error\n’)

    if error == «200»:
    print(‘Todo ok.’)
    elif «301»:
    print(‘Movimiento permanente de la página.’)
    elif «302»:
    print(‘Movimiento temporal de la página.’)
    elif «404»:
    print(‘Página no encontrada.’)
    elif «500»:
    print(‘Error interno del servidor.’)
    elif «503»:
    print(‘Servicio no disponible.’)
    else:
    print(‘Error no disponible.’)

Deja una respuesta

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

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?
Salir de la versión móvil