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.
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.
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.
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}")
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.
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.
# 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.
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 (:)
# ❌ Error: falta el dos puntos
if edad >= 18
print("Mayor de edad")
# ✅ Correcto
if edad >= 18:
print("Mayor de edad")
Indentación incorrecta
# ❌ 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 ==
# ❌ Error: = asigna, no compara
if edad = 18:
print("Tienes 18 años")
# ✅ Correcto: == compara
if edad == 18:
print("Tienes 18 años")
Condiciones redundantes
# ❌ 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
| Estructura | Sintaxis | ¿Cuándo usarla? |
|---|---|---|
if simple | if condicion: | Una sola condición |
if-else | if condicion: else: | Dos caminos posibles |
if-elif-else | if cond1: elif cond2: else: | Múltiples condiciones en cadena |
| Condicional ternario | valor if cond else otro_valor | Asignación simple en una línea |
match-case | match valor: case patron: | Múltiples valores fijos (Python 3.10+) |
| Anidado | if 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ón | Calificación |
|---|---|
| 90 - 100 | A (Excelente) |
| 80 - 89 | B (Bueno) |
| 70 - 79 | C (Satisfactorio) |
| 60 - 69 | D (Suficiente) |
| 0 - 59 | F (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!"
# 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.
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.
-
Documentación oficial sobre flujo de control: docs.python.org/3/tutorial/controlflow.html
-
Tutorial interactivo de condicionales en W3Schools: w3schools.com/python/python_conditions.asp
-
Más sobre
match-caseen Python: PEP 636 – Structural Pattern Matching
¿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.