lección 3

Decisiones: enseñando a tu programa a elegir — if/else

Los programas no siempre hacen lo mismo. Con if/else tu programa puede tomar decisiones según las circunstancias.

55 min

Hasta ahora tus programas son lineales — siempre hacen exactamente lo mismo, sin importar las circunstancias. Es como un GPS que solo conoce una ruta: siempre te lleva por la autopista aunque haya un atasco de 3 horas. Un programa útil necesita poder DECIDIR. "Si hay atasco, toma la carretera secundaria. Si no, sigue por la autopista." Eso es exactamente lo que hacen las estructuras condicionales: permiten que tu programa elija un camino u otro según una condición.

### La metáfora: la bifurcación en el camino

Imagina que caminas por un sendero y llegas a una bifurcación. Hay un cartel que dice: "Si llevas paraguas, ve por la izquierda (camino bonito pero sin techo). Si no llevas paraguas, ve por la derecha (camino cubierto pero más largo)." Tu decisión depende de una CONDICIÓN (¿llevas paraguas?) y según la respuesta (sí o no), tomas un CAMINO u otro. En programación, la condición es una pregunta que solo puede responderse con True o False, y los caminos son bloques de código que se ejecutan (o no) según la respuesta.

El programa llega al diamante (condición), evalúa si es True o False, y ejecuta SOLO el camino correspondiente.

### La sintaxis: if, elif, else

En Python, una decisión se escribe con la palabra if (si), seguida de una condición que puede ser verdadera o falsa, seguida de dos puntos (:). El código que debe ejecutarse SI la condición es verdadera va INDENTADO (con 4 espacios) debajo. Opcionalmente puedes añadir else (si no) para el camino alternativo:

1# Estructura básica: if / else
2edad = int(input("¿Cuántos años tienes? "))
3
4if edad >= 18:
5 print("Eres mayor de edad.")
6 print("Puedes votar y conducir.")
7else:
8 print("Eres menor de edad.")
9 print("Tendrás que esperar un poco más.")
10
11print("¡Gracias por usar el programa!") # Esto se ejecuta SIEMPRE

La indentación (4 espacios) es OBLIGATORIA en Python. Define qué código pertenece a cada rama.

Pero a veces no hay solo dos caminos — hay tres, cuatro o más. Para eso usamos elif (abreviatura de "else if" — "si no, pero si esto otro..."). Es como un semáforo: no es solo verde/rojo, también hay ámbar.

1# Múltiples condiciones con elif
2nota = float(input("¿Qué nota sacaste (0-10)? "))
3
4if nota >= 9:
5 print("¡Sobresaliente! Increíble trabajo.")
6elif nota >= 7:
7 print("Notable. Muy bien.")
8elif nota >= 5:
9 print("Aprobado. Suficiente.")
10else:
11 print("Suspenso. Hay que estudiar más.")
12
13# Python evalúa las condiciones DE ARRIBA A ABAJO
14# y ejecuta SOLO la primera que sea True.
15# Si ninguna es True, ejecuta el else.

elif permite encadenar múltiples condiciones. Solo se ejecuta la primera que sea verdadera.

### Operadores de comparación: las preguntas que puedes hacer

Las condiciones son preguntas con respuesta sí/no (True/False). Para formularlas usas operadores de comparación. OJO: el signo == (doble igual) es "¿es igual a?" — NO confundir con = (un solo igual) que es "guarda este valor". Este es uno de los errores más clásicos de principiante.

  • == → ¿es igual a? → 5 == 5 es True
  • != → ¿es diferente de? → 5 != 3 es True
  • > → ¿es mayor que? → 7 > 3 es True
  • < → ¿es menor que? → 2 < 8 es True
  • >= → ¿es mayor o igual que? → 5 >= 5 es True
  • <= → ¿es menor o igual que? → 3 <= 7 es True

### Combinar condiciones: and, or, not

A veces una sola condición no basta. "Si tiene más de 18 años Y tiene carnet, puede conducir." "Si es fin de semana O es festivo, no hay que trabajar." Para combinar condiciones usas and (ambas deben ser True), or (al menos una debe ser True) y not (invierte el resultado).

1# Combinar condiciones
2edad = 20
3tiene_carnet = True
4
5# AND: ambas deben cumplirse
6if edad >= 18 and tiene_carnet:
7 print("Puedes conducir")
8else:
9 print("No puedes conducir")
10
11# OR: al menos una debe cumplirse
12dia = "sábado"
13if dia == "sábado" or dia == "domingo":
14 print("¡Es fin de semana!")
15else:
16 print("A trabajar...")
17
18# NOT: invierte la condición
19lloviendo = False
20if not lloviendo:
21 print("Sal sin paraguas")

and = Y (ambas True). or = O (al menos una True). not = NO (invierte).

Consejo de senior: cuando tengas muchas condiciones encadenadas, pregúntate si hay una forma más simple de expresarlo. He visto código con 15 elif seguidos que se resolvía con un diccionario o una fórmula. Si tu if/elif/else ocupa más de una pantalla, probablemente hay una solución más elegante.

### Condiciones anidadas: decisiones dentro de decisiones

A veces necesitas tomar una decisión DENTRO de otra decisión. Es como esos libros de "elige tu propia aventura" donde cada página te lleva a otra bifurcación. En Python, simplemente pones un if dentro de otro if (con más indentación):

1# ¿Puedes entrar al concierto?
2edad = int(input("Edad: "))
3tiene_entrada = input("¿Tienes entrada? (si/no): ")
4
5if tiene_entrada == "si":
6 if edad >= 18:
7 print("Bienvenido al concierto. Barra libre disponible.")
8 else:
9 print("Bienvenido. Zona sin alcohol.")
10else:
11 print("Necesitas comprar una entrada primero.")
12 print("Taquilla abierta hasta las 22:00.")

Cada nivel de if añade 4 espacios más de indentación. Python usa la indentación para saber qué código pertenece a cada bloque.

La indentación en Python NO es decorativa — es parte de la sintaxis. Si te equivocas con los espacios, el programa no funciona. Usa SIEMPRE 4 espacios (no tabuladores). El editor de los ejercicios te ayuda con esto automáticamente (y en la Skill 3, VS Code hará lo mismo). Si ves un error "IndentationError", revisa que todos los bloques estén alineados correctamente.

### Un ejemplo real: ¿llegas tarde al trabajo?

Vamos a construir un programa práctico que combina todo lo que has aprendido: variables, input, operaciones y decisiones. El programa calcula si llegas tarde al trabajo según la hora actual y tu medio de transporte:

1# ¿Llegas tarde al trabajo?
2hora_actual = int(input("¿Qué hora es? (solo hora, ej: 8): "))
3minutos = int(input("¿Y minutos? (ej: 30): "))
4transporte = input("¿Cómo vas? (andando/bus/coche): ")
5
6# Tiempo estimado según transporte
7if transporte == "andando":
8 tiempo_viaje = 25
9elif transporte == "bus":
10 tiempo_viaje = 15
11elif transporte == "coche":
12 tiempo_viaje = 10
13else:
14 tiempo_viaje = 20 # valor por defecto
15
16# Calcular hora de llegada (simplificado)
17llegada_minutos = minutos + tiempo_viaje
18llegada_hora = hora_actual
19if llegada_minutos >= 60:
20 llegada_hora = llegada_hora + 1
21 llegada_minutos = llegada_minutos - 60
22
23hora_entrada = 9 # La oficina abre a las 9:00
24
25print(f"Llegarías a las {llegada_hora}:{llegada_minutos:02d}")
26
27if llegada_hora < hora_entrada:
28 print("¡Llegas con tiempo de sobra!")
29elif llegada_hora == hora_entrada and llegada_minutos == 0:
30 print("Llegas justo. ¡Corre!")
31else:
32 retraso = (llegada_hora - hora_entrada) * 60 + llegada_minutos
33 print(f"Llegas {retraso} minutos tarde. Avisa a tu jefe.")

Un programa completo que combina variables, input, cálculos y múltiples decisiones.

### Resumen

  • if ejecuta un bloque SOLO si la condición es True.
  • else es el camino alternativo (cuando la condición es False).
  • elif permite múltiples condiciones encadenadas.
  • Los operadores de comparación (==, !=, >, <, >=, <=) crean condiciones.
  • and, or, not combinan condiciones.
  • La indentación (4 espacios) define qué código pertenece a cada bloque.
  • Puedes anidar if dentro de if para decisiones complejas.

## ejercicios

[01]

Clasificador de edades para un cine

El cine necesita un programa que clasifique a los espectadores: niño (0-12), adolescente (13-17), adulto (18-64), senior (65+). Además, los menores de 13 no pueden ver películas de terror. Pide la edad y el género de película.

Cargando editor...
[02]

Calculadora de descuentos de una tienda

La tienda "MegaOfertas" aplica descuentos según el importe: más de 200€ → 20%, entre 100-200€ → 10%, menos de 100€ → 5%. Si además el cliente tiene tarjeta VIP, se añade un 5% extra. Calcula el precio final.

Cargando editor...
[03]

Piedra, papel o tijeras (vs la máquina)

Programa el juego piedra-papel-tijeras. El usuario elige su jugada, la máquina siempre elige "piedra" (por ahora — en la lección de funciones lo haremos aleatorio). Determina quién gana.

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...