Condicionales (if / elif / else)
Las estructuras condicionales hacen que tu programa tome decisiones. Sin ellas, un programa solo puede ejecutar instrucciones fijas de arriba a abajo. Con ellas, puede reaccionar a los datos y comportarse de forma inteligente.
Concepto teórico
¿Qué es un condicional?
Un condicional es una estructura que le dice a Python: "si esta condición es verdadera, ejecutá este bloque de código; si no, ejecutá otro". Es la forma en que un programa toma decisiones. Hasta ahora, tu código ejecutaba todas las líneas de arriba a abajo, siempre. Con condicionales, algunas líneas se ejecutan solo cuando se cumple una condición.
La estructura más simple es:
if condición:
# este bloque se ejecuta solo si la condición es True
hacer_algo()
if debe ser algo que
evalúe a True o False. Usás los operadores de comparación (==,
>, <, !=) y lógicos (and, or, not)
que aprendiste en la lección 05.
La indentación: obligatoria, no opcional
En Python, los dos puntos (:) al final del if y la
indentación (4 espacios) en las líneas siguientes son la sintaxis que define el bloque. No hay
llaves {} como en Java o JavaScript. Todo lo que esté indentado debajo del if
pertenece a ese bloque; la primera línea sin indentar sale del bloque.
Esto significa que la indentación en Python no es cosmética — es parte de la estructura del programa. Si indentás mal, tu programa hace otra cosa (o directamente da error).
if / elif / else: la estructura completa
La estructura completa tiene tres partes:
if— evalúa la primera condición. Si esTrue, ejecuta su bloque y salta todo lo demás.elif(else if) — se evalúa solo si elifanterior fueFalse. Podés tener tantoselifcomo necesites.else— se ejecuta si NINGUNA condición anterior fueTrue. No tiene condición propia. Es el "catch-all".
El flujo es como un embudo: Python evalúa las condiciones de arriba a abajo y ejecuta el primer bloque cuya condición sea True. Después salta al final de toda la estructura. Esto significa que el orden importa — si ponés una condición más permisiva primero, las de abajo nunca se alcanzan.
Condicionales anidados
Podés poner un if dentro de otro if. Esto se llama anidación y es
útil cuando tenés decisiones que dependen de otras decisiones. Cada nivel agrega 4 espacios más de indentación.
Sin embargo, más de 3 niveles de anidación hace el código difícil de leer. Si te encontrás anidando mucho,
probablemente sea mejor usar funciones o reestructurar la lógica con and/or.
and para combinar condiciones en un solo nivel, o usá "early return" (en funciones, devolver
temprano si la condición no se cumple). El Zen de Python dice: "Flat is better than nested" — plano es mejor que
anidado.El operador ternario (if en una línea)
Para decisiones simples, Python tiene una forma compacta de escribir un if/else en una sola línea:
resultado = valor_si_true if condición else valor_si_false
Se llama "operador ternario" o "expresión condicional". Es perfecto para asignaciones simples. Por ejemplo:
estado = "Mayor" if edad >= 18 else "Menor". Pero NO lo uses para lógica compleja — pierde
legibilidad rápidamente.
Patrones comunes con condicionales
En análisis de datos, vas a usar condicionales todo el tiempo para:
- Clasificar por rangos: score >= 800 → "Excelente", >= 700 → "Bueno", >= 600 → "Regular", else → "Malo"
- Validar datos: si el valor es None o está fuera de rango, rechazarlo o asignar un default
- Tomar decisiones de negocio: si ratio_cuota_ingreso > 0.30 → rechazar crédito
- Formatear output: si el número es negativo → mostrarlo en rojo
if/elif que escribís acá es la versión simplificada de lo que corre en producción.Ejemplos explicados paso a paso
Ejemplo 1: if/elif/else básico
Clasificación simple por rangos. Cambiá el valor de nota y volvé a ejecutar para ver cómo cambia
el resultado.
Hacé clic en ▶ Ejecutar
Ejemplo 2: Validación de datos con condicionales
Antes de operar con datos, siempre conviene validarlos. Este patrón es fundamental en cualquier pipeline de datos.
Hacé clic en ▶ Ejecutar
Ejemplo 3: Motor de scoring crediticio
Un ejemplo real simplificado de cómo funciona la evaluación crediticia en un banco. Cada regla de negocio es un condicional.
Hacé clic en ▶ Ejecutar
Ejemplo 4: Operador ternario y condicionales en f-strings
Para decisiones simples, el operador ternario es más limpio que un if/else de 4 líneas. Funciona incluso dentro de f-strings.
Hacé clic en ▶ Ejecutar
Ejemplo 5: Condicionales anidados vs planos
Dos formas de resolver el mismo problema. La versión anidada funciona pero es difícil de leer. La versión plana
con and es más clara.
Hacé clic en ▶ Ejecutar
Referencia rápida
| Estructura | Sintaxis | Cuándo usar |
|---|---|---|
if |
if condición: |
Evaluar una condición |
if/else |
if cond: ... else: ... |
Dos caminos posibles |
if/elif/else |
if: ... elif: ... else: |
Múltiples caminos (clasificación) |
| Ternario | x if cond else y |
Asignación condicional simple |
| Anidado | if: if: ... |
Decisiones dependientes (evitar si posible) |
| Patrón | Ejemplo | Uso típico |
|---|---|---|
| Clasificación por rangos | if x>=90: elif x>=70: else: |
Scoring, notas, categorías |
| Validación | if x is None: elif x<0: |
Limpieza de datos, input sanitization |
| Guard clause | if not valid: return |
Salir temprano si algo no cumple |
| Flag booleano | aprobado = cond1 and cond2 |
Combinar múltiples validaciones |
| Ternario en f-string | f"{'Sí' if x else 'No'}" |
Output condicional inline |
Ejercicios
Ejercicio 1: Mayor o menor de edad
Dada edad = 16, imprimí Menor de edad si es menor a 18, o
Mayor de edad si no.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Positivo, negativo o cero
Dado numero = -42, imprimí si es Positivo, Negativo o
Cero.
Hacé clic en ▶ Ejecutar
Ejercicio 3: Clasificador de temperatura
Dada temp = 22, clasificá: >35 "Extremo", >25 "Caluroso", >15 "Templado", >5 "Frío", else
"Helado".
Hacé clic en ▶ Ejecutar
Ejercicio 4: Categoría de sueldo
Dado sueldo = 450000, clasificá: >800K "Ejecutivo", >400K "Senior", >200K "Semi-senior", >100K
"Junior", else "Trainee". Imprimí la categoría.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Aprobación con múltiples condiciones
Un cliente tiene score=680 e ingreso=250000. Está aprobado si score >= 650 Y
ingreso >= 100000. Imprimí Aprobado o Rechazado y el motivo.
Hacé clic en ▶ Ejecutar
Ejercicio 6: Operador ternario
Dado saldo = -8500, asigná a la variable estado el valor "Descubierto"
si es negativo o "Positivo" si no, usando operador ternario. Imprimí el resultado como
Estado: Descubierto.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Calculadora de IVA condicional
Dado monto = 15000 y tipo = "servicio": si tipo es "producto" aplicá IVA 21%, si es
"servicio" aplicá 10.5%, si es "exportación" aplicá 0%. Imprimí monto final. Debe incluir 16575.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Scoring con 4 reglas
Evaluá: edad=35, ingreso=180000, score=590, deuda=False.
Reglas: edad 18-65, ingreso >= 100K, score >= 650, sin deuda. Imprimí cada regla con ✓ o ✗ y la decisión
final. Debe incluir RECHAZADO (score es 590 < 650).
Hacé clic en ▶ Ejecutar
Ejercicio 9: Calculadora de impuesto a las ganancias
El impuesto a las ganancias tiene escalas progresivas simplificadas: hasta $500K: 0%, de $500K a $1M: 15%, de
$1M a $2M: 25%, más de $2M: 35%. Dado ingreso_anual = 1500000, calculá el impuesto e imprimilo.
Debe incluir 375000.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Sistema de categorización bancaria completo
Clasificá a un cliente en: Black (saldo > 5M O ingreso > 1M), Gold (saldo > 1M O
ingreso > 500K), Silver (saldo > 200K), Standard (resto). Datos:
saldo=3500000, ingreso=450000. Además, si el cliente tiene
antiguedad=12 años (>= 10), agregá "+ Fidelidad" al nombre de la categoría. Imprimí
la categoría final. Debe incluir Gold + Fidelidad.
Hacé clic en ▶ Ejecutar
Resumen y conexión
ifevalúa una condición. Si esTrue, ejecuta el bloque indentado.elifse evalúa solo si las condiciones anteriores fueronFalse. Podés tener múltipleselif.elsees el "catch-all": se ejecuta cuando nada anterior fueTrue.- La indentación (4 espacios) es obligatoria — define la estructura del programa.
- El operador ternario (
x if cond else y) es útil para asignaciones simples. - Preferí condicionales planos (con
and/or) sobre anidados — "flat is better than nested". - En el mundo real, los condicionales son la base de los motores de reglas de negocio y scoring crediticio.
En la siguiente lección (07 · Comentarios e indentación) vas a profundizar en cómo escribir código legible y profesional: cuándo comentar, cómo documentar funciones con docstrings, y las convenciones de estilo PEP 8 que todo equipo profesional sigue.
Recursos: Python docs — Control Flow · PEP 8 — Style Guide