QuieroProgramar por Rodri Gonzalez
Python · Lección 06 de 27

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.

80–100 min Prerrequisitos: 05 Operaciones (comparación y lógicos)
01

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()
Regla fundamental: la condición después de 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).

Error común: IndentationError. Si mezclás tabs y espacios, o si ponés 3 espacios en vez de 4, Python te da un error. Configurá VS Code para que Tab siempre inserte 4 espacios (la extensión de Python ya lo hace por defecto).

if / elif / else: la estructura completa

La estructura completa tiene tres partes:

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.

Analogía: el cajero automático. Cuando querés extraer dinero, el cajero evalúa: ¿La tarjeta es válida? (if) → ¿El PIN es correcto? (elif) → ¿Hay saldo suficiente? (elif) → Si todo está bien, entrega el dinero. Si algo falla (else), muestra un error. Cada condición se evalúa solo si las anteriores pasaron.

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.

Tip profesional (flat is better than nested): en vez de anidar 4 niveles de if, usá 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:

En el trabajo real: los modelos de scoring crediticio son esencialmente árboles de decisiones (condicionales). Un motor de reglas de negocio en un banco evalúa decenas de condiciones: edad, ingreso, score, deuda, antigüedad laboral, tipo de empleo, zona geográfica, historial con el banco, etc. Cada if/elif que escribís acá es la versión simplificada de lo que corre en producción.
02

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.

ejemplo_01_basico.pyPython

        
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.

ejemplo_02_validacion.pyPython

        
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.

ejemplo_03_scoring.pyPython

        
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.

ejemplo_04_ternario.pyPython

        
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.

ejemplo_05_anidado_vs_plano.pyPython

        
Hacé clic en ▶ Ejecutar
03

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
04

Ejercicios

Nivel 1 · Básico

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.

ejercicio_01.pyDebe incluir "Menor de edad"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 2: Positivo, negativo o cero

Dado numero = -42, imprimí si es Positivo, Negativo o Cero.

ejercicio_02.pyDebe incluir "Negativo"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 3: Clasificador de temperatura

Dada temp = 22, clasificá: >35 "Extremo", >25 "Caluroso", >15 "Templado", >5 "Frío", else "Helado".

ejercicio_03.pyDebe incluir "Templado"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

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.

ejercicio_04.pyDebe incluir "Senior"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

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.

ejercicio_05.pyDebe incluir "Aprobado"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

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.

ejercicio_06.pyDebe incluir "Descubierto"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

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.

ejercicio_07.pyDebe incluir "16575"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

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).

ejercicio_08.pyDebe incluir "RECHAZADO"

              
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

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.

ejercicio_09.pyDebe incluir "375000"

          
Hacé clic en ▶ Ejecutar
Nivel 4 · Desafío

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.

ejercicio_10_desafio.pyDebe incluir "Gold + Fidelidad"

          
Hacé clic en ▶ Ejecutar
05

Resumen y conexión

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