Saltar al contenido
src / articulos / 05-condicionales.md

Sentencias Condicionales en Python

Emilio Castro //

La orquestación de sistemas no se limita a ejecutar comandos de manera secuencial. Una automatización robusta requiere evaluar constantemente el estado de la infraestructura, tomar decisiones sobre umbrales de métricas (como CPU o RAM), y bifurcar la ejecución en consecuencia.

En Python, la evaluación lógica se implementa mediante sentencias condicionales. Estas estructuras evalúan una expresión que siempre resulta en un valor booleano (True o False), y en función del resultado, ejecutan bloques de código específicos.

Estructura Base: La Sentencia if

El bloque fundamental es el condicional if. Este bloque se ejecuta estrictamente si (y solo si) la evaluación de la condición es True.

# Validamos si la carga actual del servidor supera el umbral crítico

cpu_load_actual = 85.5
umbral_critico = 80.0

if cpu_load_actual > umbral_critico:
    print(f"ALERTA: Carga de CPU elevada ({cpu_load_actual}%). Iniciando mitigación.")

if 50.0 == 100.0:
    print("Este mensaje jamás se procesará en el flujo de ejecución (False).")

Para capturar estados alternativos en lugar de depender únicamente de una estructura positiva/negativa desconectada, utilizamos la estructura if-else y elif (Else-If).

# Script para evaluar el estado HTTP de un servicio web

http_status = int(input("Ingresa el código de estado HTTP recibido (ej. 200, 404, 503): "))

if http_status >= 500:
    print("Estado Crítico: El servidor de backend está fallando.")
elif http_status >= 400:
    print("Error del Cliente: Endpoint no encontrado o acceso denegado.")
elif http_status == 200:
    print("Servicio Operativo: OK.")
else:
    print("Estado Desconocido/Inesperado.")

La lógica de evaluación de Python opera de arriba hacia abajo. En el bloque anterior, si el estado HTTP es 503, el primer bloque captura la condición y finaliza el ciclo, ignorando todos los subsiguientes (incluso si se definieran más comprobaciones). Este control de ramificaciones condicionales no solo previene redundancias lógicas, sino que optimiza el consumo de recursos computacionales.

Operadores Lógicos (Booleanos)

A menudo las decisiones de infraestructura dependen de múltiples variables. Python provee operadores lógicos integrados que te permiten encadenar evaluaciones bajo las mismas convenciones que el álgebra booleana (priorizados en orden: not, and, or).

# Evaluando métricas múltiples para el autoescalado

memoria_disponible_mb = int(input("Por favor, registra los MB disponibles: "))
latencia_api_ms = 450

# Escalaremos si la memoria es muy baja O la latencia es demasiado alta
if memoria_disponible_mb < 512 or latencia_api_ms > 300:
    print("Se disparó la regla de Autoescalado: Agregando un nuevo nodo al clúster.")

# Comprobación estricta de ambos umbrales
if memoria_disponible_mb > 2048 and latencia_api_ms < 50:
    print("El clúster está sobre-aprovisionado. Considerar apagar un nodo.")

Evaluando Existencia y Valores Especiales

En operaciones técnicas, verificar si una variable fue instanciada o si una respuesta JSON trajo datos (o un arreglo vacío []), es un estándar de diseño de calidad para evitar el colapso del script (NoneType).

Python provee sintaxis declarativas e idiomáticas como if not variable: o comprobaciones estrictas de estado a nivel memoria con is not None.

# Evaluación de colecciones y variables nulas en un entorno de red

nodos_activos = []
configuracion_actual = False
backup_id = "None"
token_auth = None

if not nodos_activos:
    # Equivalente idiomático a: if nodos_activos == []
    print("ERROR FATAL: El clúster no tiene nodos activos. Tráfico no ruteable.")

if not configuracion_actual is True:
    print("Advertencia: Se está operando con la configuración por defecto.")

if token_auth is None:
    # `is None` comprueba el objeto de memoria, no solo que sea evaluado como falso (0, "", [])
    print("Autorización denegada: Falta el token de API.")

Dominar los condicionales te brinda la capacidad de transformar scripts lineales y manuales en sistemas autónomos y resilientes que reaccionan a entornos impredecibles.