Condicionales match case y comparaciones en Python: de if a patrones

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Condicionales en Python: guía completa

Los condicionales son un elemento fundamental en la programación. Permiten tomar decisiones en el código y ejecutar acciones específicas solo cuando se cumplen ciertas condiciones. Python ofrece a los desarrolladores un potente conjunto de herramientas para trabajar con la lógica condicional.

Tipos principales de condicionales

En el lenguaje de programación Python, están disponibles los siguientes tipos de condicionales:

  • Estructuras clásicas if, elif y else
  • Operadores lógicos and, or, not
  • Operadores de comparación ==, !=, <, >, is, in
  • Coincidencia estructural match case (a partir de la versión 3.10)

Cada una de estas herramientas tiene sus propias características de uso y es adecuada para resolver diferentes problemas de programación.

Estructuras condicionales básicas

Estructura if, elif, else

La base de la lógica condicional en Python es la estructura if-elif-else:

x = 10
if x > 0:
    print("Positivo")
elif x == 0:
    print("Cero")
else:
    print("Negativo")

Python utiliza sangrías para definir bloques de código en lugar de llaves. El uso correcto de las sangrías es fundamental, ya que forman parte de la sintaxis del lenguaje.

Particularidades de la sintaxis

Las sangrías en Python deben ser consistentes en todo el código. Se recomienda usar 4 espacios para cada nivel de anidamiento. Mezclar espacios y tabulaciones puede provocar errores de ejecución.

Operadores de comparación en Python

Python admite una amplia gama de operadores de comparación que permiten crear condiciones complejas:

Comparaciones aritméticas

  • == verifica la igualdad de valores
  • != verifica la desigualdad
  • < y > comparan si es menor o mayor, respectivamente
  • <= y >= incluyen la igualdad en la comparación

Operadores especiales

El operador is verifica la identidad de los objetos en memoria, no la igualdad de valores. El operador in verifica si un elemento pertenece a una colección.

s1 = "hola"
s2 = "hola"
print(s1 == s2)  # True - igualdad de valores
print(s1 is s2)  # True para cadenas internadas

Comparación de cadenas y particularidades

Python internaliza automáticamente las cadenas cortas, lo que significa que cadenas iguales pueden hacer referencia al mismo objeto en memoria. Esto afecta el resultado de la comparación con is.

Operadores lógicos: and, or, not

Los operadores lógicos permiten combinar varias condiciones en una sola expresión:

a = 5
b = 10
if a > 0 and b > 0:
    print("Ambos son positivos")

Principios de funcionamiento de los operadores lógicos

  • and devuelve True solo cuando ambas condiciones son verdaderas
  • or devuelve True si al menos una condición es verdadera
  • not invierte el valor lógico

Cortocircuito

Python utiliza el principio de cortocircuito al evaluar expresiones lógicas. Esto significa que si el resultado ya está determinado por el primer operando, el segundo no se evalúa.

Estructuras condicionales anidadas

Los condicionales se pueden anidar unos dentro de otros para crear lógica más compleja:

x = 15
if x > 0:
    if x < 10:
        print("Menor que 10")
    else:
        print("De 10 en adelante")

Recomendaciones de uso

El anidamiento excesivo puede perjudicar la legibilidad del código. Se recomienda limitarse a 3 o 4 niveles de anidamiento y, si es necesario, extraer la lógica compleja en funciones separadas.

match case en Python 3.10+

Introducción a la coincidencia estructural

Python 3.10 introdujo la declaración match case, que permite realizar coincidencias de patrones de manera más expresiva y legible que una cadena de if-elif. Es especialmente útil para trabajar con estructuras de datos complejas.

def procesar_dato(dato):
    match dato:
        case 0:
            print("Cero")
        case [x, y]:
            print(f"Lista de dos elementos: {x}, {y}")
        case {"nombre": n, "edad": e}:
            print(f"Persona: {n}, {e} años")
        case _:
            print("Dato desconocido")

El patrón _ (guion bajo) actúa como comodín y captura cualquier valor no coincidente, funcionando de manera similar a un else.

Blogs

Book Recommendations