Saltar al contenido principal

Estructuras condicionales en Python con if, elif y else

Hasta ahora, todo nuestro código se ha ejecutado de principio a fin sin desviaciones. Pero en la vida real, los programas necesitan tomar decisiones. ¿Qué pasa si el usuario ingresa una contraseña incorrecta? ¿Y si la temperatura supera los 30 grados? Aquí es donde entran las estructuras condicionales.

Las condicionales son el corazón de la lógica en programación. Te permiten ejecutar diferentes bloques de código según se cumplan o no ciertas condiciones. En Python, esto se logra con las palabras clave if, elif y else.

La sentencia if: la decisión más simple

La estructura más básica es if. Evalúa una condición y, si es verdadera (True), ejecuta el bloque de código indentado debajo de ella.

Python
edad = 18

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

Dato clave: En Python, la indentación (sangría) no es opcional. Define qué bloque de código pertenece a cada condición. Por convención, usamos 4 espacios (no tabs) para indentar.

El camino alternativo: else

¿Qué ocurre si la condición no se cumple? Ahí entra else. No tiene condición propia; se ejecuta cuando if es falsa.

Python
edad = 15

if edad >= 18:
print("Puedes ingresar al sitio")
else:
print("Lo siento, debes ser mayor de 18 años")

Múltiples caminos: elif

Cuando necesitas evaluar más de dos posibilidades, usas elif (contracción de "else if"). Python evalúa las condiciones en orden y ejecuta el bloque de la primera condición verdadera que encuentre.

Python
nota = 85

if nota >= 90:
calificacion = "Excelente"
elif nota >= 70:
calificacion = "Bueno"
elif nota >= 50:
calificacion = "Suficiente"
else:
calificacion = "Insuficiente"

print(f"Tu calificación es: {calificacion}")
Logo DivZone de ad link
Plataforma IAConvierte el código en clientes.Pruébalo gratis

Condiciones anidadas

Puedes colocar un if dentro de otro if. Esto se llama anidamiento y es útil cuando necesitas verificar múltiples niveles de condiciones.

Python
usuario_autenticado = True
es_admin = False

if usuario_autenticado:
print("Bienvenido al sistema")

if es_admin:
print("Tienes acceso completo")
else:
print("Tienes acceso limitado")
else:
print("Por favor, inicia sesión")

Advertencia: No anides más de 2 o 3 niveles. Si lo necesitas, tu código se vuelve difícil de leer. En esos casos, considera usar funciones o reestructurar la lógica.

El condicional ternario (operador ternario)

Python ofrece una forma compacta de escribir un if-else simple en una sola línea. Es ideal para asignaciones rápidas.

Python
# Forma tradicional
if temperatura > 30:
mensaje = "Hace calor"
else:
mensaje = "Hace fresco"

# Forma ternaria (una línea)
mensaje = "Hace calor" if temperatura > 30 else "Hace fresco"

La sintaxis es: valor_si_verdadero if condicion else valor_si_falso.

La función match (Python 3.10+)

A partir de Python 3.10, puedes usar match y case para crear estructuras condicionales más elegantes cuando trabajas con múltiples valores fijos. Es similar al switch de otros lenguajes.

Python
comando = "salir"

match comando:
case "iniciar":
print("Iniciando el sistema...")
case "detener":
print("Deteniendo el sistema...")
case "pausar":
print("Pausando el sistema...")
case "salir":
print("Saliendo del sistema...")
case _:
print("Comando no reconocido")

El guión bajo _ funciona como caso por defecto (default), atrapando cualquier valor que no coincida con los casos anteriores.

Errores comunes (y cómo evitarlos)

Olvidar los dos puntos (:)

Python
# ❌ Error: falta el dos puntos
if edad >= 18
print("Mayor de edad")

# ✅ Correcto
if edad >= 18:
print("Mayor de edad")

Indentación incorrecta

Python
# ❌ Error: indentación inconsistente
if edad >= 18:
print("Mayor de edad")
print("Este código está mal indentado")

# ✅ Correcto: 4 espacios consistentes
if edad >= 18:
print("Mayor de edad")
print("Este código también pertenece al if")

Usar = en lugar de ==

Python
# ❌ Error: = asigna, no compara
if edad = 18:
print("Tienes 18 años")

# ✅ Correcto: == compara
if edad == 18:
print("Tienes 18 años")

Condiciones redundantes

Python
# ❌ Redundante: bool ya es True o False
if es_mayor == True:
print("Es mayor")

# ✅ Correcto y más legible
if es_mayor:
print("Es mayor")

Tabla resumen de estructuras condicionales

EstructuraSintaxis¿Cuándo usarla?
if simpleif condicion:Una sola condición
if-elseif condicion: else:Dos caminos posibles
if-elif-elseif cond1: elif cond2: else:Múltiples condiciones en cadena
Condicional ternariovalor if cond else otro_valorAsignación simple en una línea
match-casematch valor: case patron:Múltiples valores fijos (Python 3.10+)
Anidadoif cond1: if cond2:Condiciones en varios niveles

Reto práctico: "Calculadora de notas"

Escribe un programa que pida al usuario su puntuación (0 a 100) y muestre su calificación según esta tabla:

PuntuaciónCalificación
90 - 100A (Excelente)
80 - 89B (Bueno)
70 - 79C (Satisfactorio)
60 - 69D (Suficiente)
0 - 59F (Insuficiente)

Requisitos adicionales:

  • Si la puntuación está fuera del rango 0-100, muestra un mensaje de error.
  • Si la puntuación es exactamente 100, agrega un mensaje especial: "¡Puntuación perfecta!"
Python
# Variables de prueba
puntuacion = 85

# Tu lógica aquí
# ...

Pista: Usa elif para evaluar los rangos en orden descendente (de mayor a menor). Así evitas tener que verificar ambos límites del rango.

tip

En Python puedes escribir condiciones como if puntuacion >= 90: sin necesidad de escribir if puntuacion >= 90 and puntuacion <= 100: cuando evalúas en orden descendente. Python ejecuta el primer if verdadero y se salta el resto, por lo que si llegas a elif puntuacion >= 80: ya sabes que puntuacion es menor que 90.

Recursos

¿Listo para continuar? Explora más temas de Python en el índice del curso de Python.

¿Quieres poner a prueba lo que aprendiste? Usa DivZone AI para generar y probar tus propios ejercicios de condicionales.