condicionales en Python if elif else guía

Condicionales en Python — if, elif y else sin complicaciones

Los condicionales en Python if elif else son la primera herramienta que le da inteligencia a tu código. Hasta ahora tus programas ejecutaban todas las líneas en orden, de arriba a abajo, sin tomar ninguna decisión. Con los condicionales puedes hacer que Python ejecute unas instrucciones u otras dependiendo de si se cumple una condición. Es el salto de «programa que calcula» a «programa que decide».

¿Qué es un condicional?

Un condicional es una estructura que le dice a Python: «si se cumple esta condición, haz esto, si no, haz otra cosa». En la vida real tomamos decisiones condicionales constantemente: si llueve, cojo el paraguas; si no llueve, no lo cojo.

En Python esa misma lógica se escribe así:

llueve = True

if llueve:
    print("Cojo el paraguas")
else:
    print("No necesito paraguas")

La estructura if

La forma más simple de un condicional es solo el if. Si la condición es True ejecuta el bloque, si es False no hace nada:

nota = 7.5

if nota >= 5:
    print("Aprobado")

Dos cosas importantes que debes recordar siempre:

  • Los dos puntos : son obligatorios: al final de la línea del if. Es el error de sintaxis más común en primero, olvidar los dos puntos.
  • La indentación es obligatoria: el código que pertenece al if debe ir con 4 espacios de sangría. En Python la indentación no es opcional ni decorativa, es parte de la sintaxis. Si no indentas, Python da error.
# MAL — falta indentación
if nota >= 5:
print("Aprobado")    # IndentationError

# BIEN
if nota >= 5:
    print("Aprobado")

La estructura if/else

Cuando quieres hacer algo diferente si la condición no se cumple, añades else:

nota = 4.0

if nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

El else no lleva condición, simplemente se ejecuta cuando el if no se cumple. Solo puede haber un else por cada if, y siempre va al final.

La estructura if/elif/else

Cuando necesitas comprobar más de dos posibilidades usas elif, abreviación de «else if»:

nota = 7.5

if nota >= 9:
    print("Sobresaliente")
elif nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Python comprueba las condiciones en orden de arriba a abajo y ejecuta el primer bloque cuya condición sea True. Una vez encuentra uno, ignora el resto. Puedes tener tantos elif como necesites, pero solo un if al principio y un else al final.

Condicionales anidados

Puedes poner un if dentro de otro if. Se llaman condicionales anidados y son útiles cuando necesitas comprobar varias condiciones relacionadas:

edad = 20
tiene_carnet = True

if edad >= 18:
    if tiene_carnet:
        print("Puede conducir")
    else:
        print("Mayor de edad pero sin carnet")
else:
    print("Menor de edad, no puede conducir")

Aunque funcionan bien, los condicionales anidados pueden volverse difíciles de leer si hay muchos niveles. En esos casos es mejor combinar condiciones con and y or:

# Más limpio usando and
if edad >= 18 and tiene_carnet:
    print("Puede conducir")
elif edad >= 18:
    print("Mayor de edad pero sin carnet")
else:
    print("Menor de edad, no puede conducir")

El operador ternario — condicional en una línea

Python permite escribir un if/else simple en una sola línea. Se llama operador ternario o expresión condicional:

nota = 6.0
resultado = "Aprobado" if nota >= 5 else "Suspenso"
print(resultado)    # → Aprobado

Es útil para casos simples donde el if/else completo ocuparía cuatro líneas innecesariamente. No abuses de él, si la condición es compleja, mejor escribir el if/else completo para que sea más legible.

Errores comunes con condicionales en Python if elif else

Error 1 — Olvidar los dos puntos:

# MAL
if nota >= 5
    print("Aprobado")

# BIEN
if nota >= 5:
    print("Aprobado")

Error 2 — Usar = en vez de ==:

# MAL — esto es una asignación, no una comparación
if nota = 5:
    print("Cinco")

# BIEN
if nota == 5:
    print("Cinco")

Usa == para comparar, nunca =

Error 3 — Indentación incorrecta:

# MAL — el else no está alineado con el if
if nota >= 5:
    print("Aprobado")
        else:            # IndentationError
    print("Suspenso")

# BIEN
if nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Error 4 — El orden de los elif importa:

# MAL — el primer elif atrapa todos los aprobados
if nota >= 5:
    print("Aprobado")
elif nota >= 7:
    print("Notable")    # nunca llega aquí
elif nota >= 9:
    print("Sobresaliente")    # nunca llega aquí

# BIEN — de mayor a menor
if nota >= 9:
    print("Sobresaliente")
elif nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Este último error es especialmente traicionero porque el programa no da ningún error, simplemente siempre muestra «Aprobado» aunque la nota sea un 9. Es un error silencioso clásico.

Visualízalo con Python Tutor

Copia este código en pythontutor.com para ver exactamente qué bloque ejecuta Python según el valor de la nota:

nota = 8.5

if nota >= 9:
    resultado = "Sobresaliente"
elif nota >= 7:
    resultado = "Notable"
elif nota >= 5:
    resultado = "Aprobado"
else:
    resultado = "Suspenso"

print(resultado)

Prueba a cambiar el valor de nota y observa cómo Python salta directamente al bloque correcto ignorando el resto.

Resumen rápido

Los condicionales en Python if elif else son la base de cualquier programa que tome decisiones.

  • if comprueba una condición — si es True ejecuta el bloque
  • else se ejecuta cuando el if no se cumple
  • elif añade condiciones adicionales entre if y else
  • Los : al final son obligatorios — sin ellos SyntaxError
  • La indentación es obligatoria — sin ella IndentationError
  • El orden de los elif importa — pon siempre las condiciones de mayor a menor
  • Usa == para comparar, nunca =

En el próximo artículo practicamos los condicionales en Python con programas reales, un validador de datos y el clásico juego de adivinar el número.

Publicaciones Similares

4 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *