Condicionales: if, elif y else

Lectura
25 min~7 min lectura
CONCEPTO CLAVE: Las estructuras condicionales permiten que un programa tome decisiones basadas en el cumplimiento o no de ciertas condiciones. Sin ellas, el código se ejecutaría siempre de la misma manera, sin posibilidad de adaptarse a diferentes situaciones.

¿Qué son los Condicionales?

Imagina que estás escribiendo un programa que determina si un estudiante aprueba o no un examen. Un estudiante aprueba si su calificación es mayor o igual a 60, pero si es menor, no aprueba. Esta es exactamente la clase de decisión que los condicionales nos permiten manejar en programación.

En Python, tenemos tres palabras clave principales para crear estructuras condicionales: if (si), elif (sino si) y else (sino). Estas nos permiten ejecutar diferentes bloques de código dependiendo de si una condición es verdadera o falsa.

📌 Nota importante: En Python, la indentación (espacios al inicio de cada línea) NO es opcional. Es parte de la sintaxis del lenguaje y define qué líneas pertenecen a cada bloque de código. Usualmente se usan 4 espacios o 1 tabulación.

La Estructura if Básica

La estructura más simple es if. Su sintaxis es:

if condición:
    # Código que se ejecuta si la condición es verdadera

Veamos un ejemplo práctico:

edad = 18

if edad >= 18:
    print("Eres mayor de edad")

print("Este mensaje siempre se muestra")

En este ejemplo, como edad es 18, que es mayor o igual a 18, el programa imprimirá «Eres mayor de edad» y luego «Este mensaje siempre se muestra».

💡 Tip: Observa los dos puntos (:) después de la condición. Son obligatorios en Python y marcan el inicio del bloque de código que depende del condicional.

Agregando else: La Alternativa

¿Qué pasa si queremos ejecutar un código diferente cuando la condición es falsa? Para eso existe else:

edad = 15

if edad >= 18:
    print("Eres mayor de edad")
else:
    print("Eres menor de edad")

Ahora, si edad es menor a 18, se ejecutará el bloque del else en lugar del bloque del if. El bloque else siempre se ejecuta cuando la condición del if es falsa.

⚠️ Error común: Los principiantes a menudo olvidan los dos puntos después de else, lo cual causa un error de sintaxis. Recuerda: siempre se escribe else: con los dos puntos al final.

Múltiples Condiciones con elif

¿Y si necesitamos verificar más de una condición? Supongamos que queremos clasificar una calificación en letras: A (90-100), B (80-89), C (70-79), D (60-69) y F (menor a 60). Aquí es donde elif se vuelve invaluable:

calificacion = 85

if calificacion >= 90:
    print("Tu calificación es A")
elif calificacion >= 80:
    print("Tu calificación es B")
elif calificacion >= 70:
    print("Tu calificación es C")
elif calificacion >= 60:
    print("Tu calificación es D")
else:
    print("Tu calificación es F")

¿Por qué funciona este código? Porque Python evalúa las condiciones en orden. Cuando encuentra la primera que es verdadera, ejecuta ese bloque y luego salta todos los demás, incluyendo el else final. Por eso no necesitamos verificar explícitamente que la calificación sea menor a 90 en el segundo elif: si llegamos hasta ahí, ya sabemos que no era mayor o igual a 90.

📌 Orden importa: Las condiciones se evalúan de arriba hacia abajo. La primera condición verdadera detiene la evaluación. Por eso, en el ejemplo anterior, verificamos primero las calificaciones más altas y luego las más bajas.

Operadores de Comparación

Para crear condiciones, necesitamos operadores de comparación. Aquí está la tabla completa:

OperadorSignificadoEjemploResultado
==Igual a5 == 5Verdadero
!=Diferente de5 != 3Verdadero
>Mayor que5 > 3Verdadero
<Menor que3 < 5Verdadero
>=Mayor o igual que5 >= 5Verdadero
<=Menor o igual que3 <= 5Verdadero
⚠️ Error muy común: No confundas = (asignación) con == (comparación). x = 5 asigna el valor 5 a la variable x, mientras que x == 5 pregunta si x es igual a 5.

Combinando Condiciones: and, or, not

A veces necesitamos verificar múltiples condiciones al mismo tiempo. Python nos ofrece tres operadores lógicos para esto:

  • and: ambas condiciones deben ser verdaderas
  • or: al menos una condición debe ser verdadera
  • not: invierte el valor de verdad
edad = 25
ingresos = 50000

if edad >= 18 and ingresos > 30000:
    print("Puedes solicitar la tarjeta de crédito")
else:
    print("No cumples los requisitos")

# Ejemplo con or
tiene_carnet = True
tiene_coche = False

if tiene_carnet or tiene_coche:
    print("Puedes conducir")
else:
    print("No puedes conducir")
💡 Tip: Puedes combinar tantos operadores como necesites usando paréntesis para especificar el orden de evaluación: if (edad >= 18 and ingresos > 30000) or tiene_trabajo:

Condicionales Anidados

Puedes colocar un condicional dentro de otro. Esto se llama anidamiento:

edad = 20
tiene_dinero = True

if edad >= 18:
    print("Eres mayor de edad")
    if tiene_dinero:
        print("Puedes comprar alcohol")
    else:
        print("No tienes dinero para comprar")
else:
    print("Eres menor de edad")
    print("No puedes comprar alcohol")
📌 Best practice: Aunque el anidamiento funciona, intenta no anidar más de 2-3 niveles. El código puede volverse difícil de leer rápidamente. Si necesitas muchos niveles, considera reorganizar tu lógica o usar funciones.

Ejemplo Práctico: Calculadora de Descuentos

Vamos a crear un programa completo que aplique descuentos según el tipo de cliente:

  1. Solicitamos el precio original y el tipo de cliente
  2. Si es «vip», aplicamos 20% de descuento
  3. Si es «estudiante», aplicamos 15% de descuento
  4. Si es «jubilado», aplicamos 25% de descuento
  5. Para cualquier otro caso, no hay descuento
  6. Mostramos el precio final
precio_original = 100
tipo_cliente = "vip"

if tipo_cliente == "vip":
    descuento = 20
    print(f"Eres cliente VIP. Descuento del {descuento}%")
elif tipo_cliente == "estudiante":
    descuento = 15
    print(f"Eres estudiante. Descuento del {descuento}%")
elif tipo_cliente == "jubilado":
    descuento = 25
    print(f"Eres jubilado. Descuento del {descuento}%")
else:
    descuento = 0
    print("No tienes descuento disponible")

precio_final = precio_original - (precio_original * descuento / 100)
print(f"Precio original: ${precio_original}")
print(f"Precio final: ${precio_final}")
Ver más: Versión con validación de entrada
# Versión más robusta con validación
precio_str = input("Ingresa el precio del producto: ")

if precio_str.isdigit():
    precio_original = float(precio_str)
    tipo_cliente = input("Ingresa tu tipo de cliente (vip/estudiante/jubilado/ninguno): ").lower()
    
    if tipo_cliente == "vip":
        descuento = 20
    elif tipo_cliente == "estudiante":
        descuento = 15
    elif tipo_cliente == "jubilado":
        descuento = 25
    else:
        descuento = 0
    
    precio_final = precio_original - (precio_original * descuento / 100)
    print(f"Precio final: ${precio_final:.2f}")
else:
    print("Error: Debes ingresar un precio válido")

El Operador Ternario: Condicionales en Una Línea

Para asignaciones simples, Python ofrece una sintaxis más compacta llamada «operador ternario»:

edad = 20

# Forma tradicional
if edad >= 18:
    categoria = "adulto"
else:
    categoria = "menor"

# Usando operador ternario
categoria = "adulto" if edad >= 18 else "menor"

print(categoria)
«El operador ternario es útil para asignaciones simples, pero no abuses de él. Si la lógica es compleja, la forma tradicional con if/else es más legible.»

Resumen de la Sintaxis

if condición1:
    # Se ejecuta si condición1 es verdadera
elif condición2:
    # Se ejecuta si condición1 es falsa y condición2 es verdadera
elif condición3:
    # Se ejecuta si condición1 y condición2 son falsas y condición3 es verdadera
else:
    # Se ejecuta si todas las condiciones anteriores son falsas

Recuerda: puedes tener cualquier cantidad de elif, pero solo un if y un else por bloque. El else es opcional.

💡 Tip final: Antes de escribir código, piensa en todos los posibles casos que necesitas manejar. Dibuja un diagrama de flujo en papel si es necesario. Planificar antes de programar te ahorrará tiempo y errores.
🧠 Quiz: Condicionales en Python

¿Qué se imprimirá en pantalla al ejecutar este código?

x = 10
if x > 10:
    print("A")
elif x == 10:
    print("B")
else:
    print("C")
  • A) A
  • B) B
  • C) C
  • D) Se imprimirán A, B y C
Respuesta: B. La condición x > 10 es falsa (x es igual a 10, no mayor). Luego se evalúa x == 10, que es verdadera, por lo que se ejecuta el bloque del elif y se imprime «B». El bloque else nunca se ejecuta porque ya se encontró una condición verdadera.
🧠 Quiz: Operadores

¿Cuál es la diferencia entre = y == en Python?

  • A) No hay diferencia, ambos comparan valores
  • B) = asigna un valor a una variable, == compara si dos valores son iguales
  • C) == asigna un valor a una variable, = compara si dos valores son iguales
Respuesta: B. El operador = se usa para ASIGNAR un valor a una variable, mientras que == se usa para COMPARAR si dos valores son iguales y devuelve True o False.

Conclusión

Los condicionales son fundamentales en programación. Te permiten crear programas que responden dinámicamente a diferentes situaciones. Domina el uso de if, elif y else, junto con los operadores de comparación y lógicos, y tendrás una base sólida para resolver problemas cada vez más complejos.

CONCEPTO CLAVE: La programación no es solo escribir instrucciones secuenciales; es poder tomar decisiones inteligentes basadas en los datos y las circunstancias. Los condicionales son tu herramienta para lograr exactamente eso.