El control de flujo le permite a tu programa tomar decisiones: ejecutar unas líneas u otras según una condición.
if / elif / else
La estructura básica de decisión:
edad = 20
if edad >= 18:
print("Eres mayor de edad")
elif edad >= 13:
print("Eres adolescente")
else:
print("Eres un niño")
Cómo funciona:
- Python evalúa la condición del
if. Si esTrue, ejecuta su bloque y ignora el resto. - Si es
False, pasa alelifsiguiente (puedes poner cuantos quieras). - Si ninguna condición fue
True, ejecuta elelse(opcional).
Solo se ejecuta un bloque — el primero cuya condición sea verdadera.
Las condiciones
Cualquier expresión que produzca True o False sirve:
if edad == 18: # igualdad
if edad > 18 and ciudad == "Bogotá": # combinada
if nombre in lista_nombres: # pertenencia
if lista: # ¡una lista vacía es falsy!
Cuidado con este detalle: valores "vacíos" se consideran False:
if 0: # no se ejecuta → 0 es falsy
if "": # no se ejecuta → string vacío es falsy
if None: # no se ejecuta
if "hola": # se ejecuta → cualquier texto no vacío es truthy
Operador ternario
Para decisiones en una sola línea:
estado = "mayor de edad" if edad >= 18 else "menor de edad"
Úsalo solo para casos simples — la legibilidad manda.
match-case: el switch de Python
Desde Python 3.10 existe match, ideal para comparar un valor contra varios casos:
comando = "ayuda"
match comando:
case "ayuda":
print("Comandos: ayuda, iniciar, salir")
case "iniciar":
print("Iniciando...")
case "salir":
print("¡Hasta luego!")
case _:
print("Comando no reconocido")
El guion bajo _ es el comodín: coincide con cualquier valor (el default de otros lenguajes).
Errores comunes
# Olvidar los dos puntos
if edad >= 18 # SyntaxError → falta ":"
# Usar = en vez de ==
if edad = 18: # SyntaxError → debe ser ==
# Indentación inconsistente
if edad >= 18:
print("hola") # IndentationError → falta indentar el bloque
Resumen
if/elif/elseejecuta solo el primer bloque cuya condición seaTrue- Los valores vacíos (
0,"",None,[]) son falsy - El ternario
x if condicion else ypara decisiones de una línea match/casecon_como comodín, para comparar contra múltiples valores- Los dos puntos
:y la indentación de 4 espacios son obligatorios