Lección 6: Estructuras condicionales
Hasta ahora tus programas han corrido de principio a fin sin detenerse a "pensar". En esta lección le vas a dar a tu código la capacidad de tomar decisiones, exactamente como lo hace cualquier proceso del mundo real: si el sueldo supera cierto umbral, aplica el impuesto; si el usuario es administrador, muestra el panel de control; si el stock está agotado, manda una alerta. Esa lógica de "si esto, entonces aquello" es el corazón de las estructuras condicionales.
¿Por qué necesitas condicionales?
Imagina que trabajas en una startup de tecnología financiera en CDMX y tienes que clasificar automáticamente a los candidatos de un proceso de selección según su salario esperado. Sin condicionales, tu programa trataría igual a alguien que pide $12,000 MXN al mes que a alguien que pide $80,000 MXN. Con condicionales, puedes tomar rutas completamente distintas según el dato que recibas.
Esa capacidad de bifurcar el flujo de ejecución es lo que separa a un script de una aplicación real.
Operadores de comparación
Antes de escribir tu primer if, necesitas conocer los operadores de comparación, que son las herramientas con las que Python evalúa condiciones. Todos devuelven un valor booleano: True o False.
| Operador | Significado | Ejemplo |
|---|---|---|
== |
igual a | 5 == 5 → True |
!= |
diferente de | 5 != 3 → True |
> |
mayor que | 10 > 7 → True |
< |
menor que | 3 < 1 → False |
>= |
mayor o igual que | 5 >= 5 → True |
<= |
menor o igual que | 4 <= 6 → True |
También puedes combinar condiciones con los operadores lógicos and, or y not. Por ejemplo: sueldo > 20000 and experiencia >= 2 solo es verdadero si ambas condiciones se cumplen al mismo tiempo.
La estructura if
La forma más básica de una condicional es el if (si). Su sintaxis en Python es:
if condicion:
# código que se ejecuta si la condición es True
Dos cosas importantes: la condición va seguida de dos puntos (:) y el bloque de código dentro del if debe ir indentado (con 4 espacios o un tabulador). Python usa esa indentación para saber qué instrucciones pertenecen a la condición. Si la omites, obtendrás un error.
Agregando else y elif
Con solo if cubres el caso en que la condición es verdadera, pero ¿qué pasa cuando es falsa? Para eso existe el else (de lo contrario). Y cuando necesitas evaluar más de dos posibilidades, entra el elif (contracción de "else if", es decir, "si no, entonces si...").
La estructura completa se ve así:
if condicion_1:
bloque A
elif condicion_2:
bloque B
elif condicion_3:
bloque C
else:
bloque D
Python evalúa las condiciones de arriba hacia abajo y ejecuta el primer bloque cuya condición sea verdadera. Si ninguna lo es, ejecuta el else. Puedes tener tantos elif como necesites, pero solo un if y un else por estructura.
Ejemplo 1: Clasificador de sueldo para reclutamiento tech
Este programa simula una herramienta básica que podría usar el área de Recursos Humanos de una empresa de software en Monterrey o Guadalajara para categorizar candidatos según el sueldo mensual que solicitan.
# Clasificador de candidatos por expectativa salarial (MXN mensual)
sueldo_esperado = float(input("¿Cuánto espera ganar el candidato al mes (MXN)? "))
if sueldo_esperado < 15000:
categoria = "Junior"
mensaje = "Perfil de entrada, ideal para programas de becarios."
elif sueldo_esperado < 35000:
categoria = "Mid-level"
mensaje = "Perfil competitivo para el mercado tech en México."
elif sueldo_esperado < 70000:
categoria = "Senior"
mensaje = "Considerar presupuesto de área antes de avanzar."
else:
categoria = "Staff / Principal"
mensaje = "Requiere aprobación de dirección."
print(f"Categoría: {categoria}")
print(f"Nota: {mensaje}")
Nota cómo cada elif solo se evalúa si las anteriores resultaron falsas. No necesitas escribir sueldo_esperado >= 15000 and sueldo_esperado < 35000 porque Python ya descartó los casos anteriores.
Condiciones anidadas
A veces una decisión depende de otra decisión. En esos casos puedes colocar una estructura condicional dentro de otra: a eso se le llama condición anidada (nested condition). La regla es simple: cada nivel de anidamiento suma un nivel de indentación.
# Verificador de acceso a plataforma de trabajo remoto
usuario = input("¿Cuál es tu rol? (admin / empleado / invitado): ")
activo = True # Simula que el usuario tiene cuenta activa
if activo:
if usuario == "admin":
print("Bienvenido. Tienes acceso total al dashboard.")
elif usuario == "empleado":
print("Bienvenido. Puedes ver tus proyectos asignados.")
else:
print("Acceso limitado. Contacta a tu coordinador.")
else:
print("Tu cuenta no está activa. Escribe a soporte@empresa.com")
En este ejemplo, la verificación del rol solo ocurre si la cuenta está activa. Si activo es False, el programa sale directo al mensaje de soporte sin siquiera preguntar el rol. Esto es muy común en aplicaciones de trabajo remoto y plataformas SaaS que operan equipos distribuidos en toda LATAM.
Construyendo un programa de toma de decisiones
Con lo que sabes hasta ahora ya puedes construir algo útil. Piensa en las decisiones que toma un sistema de aprobación de crédito personal para una fintech como Kueski, Clip o Konfío: evalúa el historial, los ingresos y la antigüedad del cliente para dar o negar el crédito.
El flujo sería algo así:
- Recibir los datos del solicitante.
- Verificar si cumple el criterio de ingreso mínimo.
- Dentro de ese bloque, verificar el historial crediticio.
- Según ambos factores, mostrar la decisión y las condiciones.
Ese tipo de lógica, aunque en producción involucra bases de datos y algoritmos más complejos, empieza exactamente igual: con if, elif, else y comparaciones bien armadas. Ya tienes los bloques fundamentales.
Buenas prácticas al escribir condicionales
Escribir condicionales funcionales es una cosa; escribirlas bien es otra. Aquí van algunos consejos que separan el código de un desarrollador principiante del de alguien con experiencia:
Mantén las condiciones simples y legibles. Si una condición tiene más de tres operadores lógicos encadenados, considera dividirla en variables con nombres descriptivos. Por ejemplo, en lugar de if ingreso > 10000 and edad >= 18 and not bloqueado, puedes escribir primero es_elegible = ingreso > 10000 and edad >= 18 and not bloqueado y luego simplemente if es_elegible:.
No abuses del anidamiento. Más de dos o tres niveles de condicionales anidadas hacen que el código sea muy difícil de leer y mantener. Si llegas a ese punto, probablemente es señal de que necesitas refactorizar usando funciones (lo cual aprenderás más adelante en el curso).
Siempre incluye un else cuando todas las rutas posibles importan. Si tu lógica asume que los datos siempre serán válidos y alguien ingresa algo inesperado, tu programa se comportará de formas impredecibles.
Lo que viene a continuación
En la Lección 7: Estructuras de repetición vas a aprender a hacer que Python ejecute un bloque de código muchas veces sin que tú lo escribas una y otra vez. Vas a conocer los ciclos for y while, que te permitirán recorrer listas de datos, procesar registros en masa y automatizar tareas repetitivas. Imagina calcular el salario neto de todos los empleados de una empresa con un solo bloque de código, o revisar automáticamente cien solicitudes de crédito sin intervención manual. Eso es exactamente lo que las estructuras de repetición hacen posible, y son el complemento perfecto de las condicionales que acabas de aprender.