PythonAprende PythonDocumentación

Control de flujo

Toma decisiones con if/elif/else y match-case.

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:

  1. Python evalúa la condición del if. Si es True, ejecuta su bloque y ignora el resto.
  2. Si es False, pasa al elif siguiente (puedes poner cuantos quieras).
  3. Si ninguna condición fue True, ejecuta el else (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/else ejecuta solo el primer bloque cuya condición sea True
  • Los valores vacíos (0, "", None, []) son falsy
  • El ternario x if condicion else y para decisiones de una línea
  • match/case con _ como comodín, para comparar contra múltiples valores
  • Los dos puntos : y la indentación de 4 espacios son obligatorios

Quiz

  1. 1. ¿Qué imprime este código? if 5 > 3: print("A") else: print("B")

  2. 2. En una cadena if/elif/else, ¿cuántos bloques se ejecutan como máximo?

  3. 3. En un match-case, ¿qué hace el patrón `case _:`?

Ejercicios

Ejercicio 1: Calificación

Dada `nota = 85`, imprime "Sobresaliente" si es ≥ 90, "Aprobado" si es ≥ 70, o "Reprobado" en caso contrario.

Cargando editor…

Ejercicio 2: Clasificar edad

Completa la función para que devuelva "niño" si edad < 13, "adolescente" si es 13–17, y "adulto" si es ≥ 18.

Cargando editor…