Café y Código

4. Condicionales: Tomando Decisiones 🚦

Las condiciones son el corazón de la lógica: el programa elige qué hacer según si algo es verdadero (True) o falso (False). En Python la indentación (espacios) marca qué código “pertenece” a cada if.

1) Solo if — cinco mini ejemplos

Si la condición es cierta, se ejecuta el bloque indentado. Si no, Python sigue después del if sin imprimir nada de ese bloque (no hay else).

cinco_solo_if.py
PYTHON
1 # --- 1) Comparación numérica ---
2 temp = 32
3 if temp > 30:
4 print("Hace mucho calor")
5
6 # --- 2) Igualdad ---
7 codigo = "OK"
8 if codigo == "OK":
9 print("Operación aceptada")
10
11 # --- 3) Cadena vacía (falsy) ---
12 mensaje = ""
13 if mensaje:
14 print("Hay texto")
15 # No imprime: "" se evalúa como False en un if
16
17 # --- 4) Lista con elementos ---
18 carrito = ["pan", "leche"]
19 if len(carrito) > 0:
20 print("Hay productos en el carrito")
21
22 # --- 5) Porcentaje aprobado ---
23 nota = 85
24 if nota >= 70:
25 print("Aprobado")

2) ifelse — cinco ejemplos

Dos caminos: si la condición es verdadera, un bloque; si no, el otro.

cinco_if_else.py
PYTHON
1 # --- 1) Mayoría de edad ---
2 edad = 16
3 if edad >= 18:
4 print("Mayor de edad")
5 else:
6 print("Menor de edad")
7
8 # --- 2) Par o impar ---
9 n = 7
10 if n % 2 == 0:
11 print("Es par")
12 else:
13 print("Es impar")
14
15 # --- 3) Acceso por contraseña ---
16 clave = "python123"
17 if clave == "python123":
18 print("Acceso permitido")
19 else:
20 print("Contraseña incorrecta")
21
22 # --- 4) Stock mínimo ---
23 stock = 3
24 if stock >= 5:
25 print("Hay suficiente stock")
26 else:
27 print("Reponer pronto")
28
29 # --- 5) Descuento simple ---
30 precio = 100
31 if precio > 50:
32 print("Aplica envío gratis")
33 else:
34 print("Paga envío")

3) ifelifelse — cinco ejemplos

Varias condiciones en cascada: Python evalúa de arriba abajo y ejecuta el primer bloque cuya condición sea True. Si ninguna coincide, va al else (si existe).

cinco_if_elif_else.py
PYTHON
1 # --- 1) Saludo por hora ---
2 hora = 15
3 if hora < 12:
4 print("Buenos días")
5 elif hora < 20:
6 print("Buenas tardes")
7 else:
8 print("Buenas noches")
9
10 # --- 2) Calificación por nota ---
11 nota = 82
12 if nota >= 90:
13 print("A")
14 elif nota >= 80:
15 print("B")
16 elif nota >= 70:
17 print("C")
18 else:
19 print("Necesitas repasar")
20
21 # --- 3) Tamaño de pizza ---
22 tam = "M"
23 if tam == "S":
24 print("Pequeña")
25 elif tam == "M":
26 print("Mediana")
27 elif tam == "L":
28 print("Grande")
29 else:
30 print("Tamaño no válido")
31
32 # --- 4) Día laborable ---
33 dia = "sábado"
34 if dia in ("lunes", "martes", "miércoles", "jueves", "viernes"):
35 print("Día laboral")
36 elif dia in ("sábado", "domingo"):
37 print("Fin de semana")
38 else:
39 print("Día desconocido")
40
41 # --- 5) IMC simplificado (solo categoría) ---
42 peso_kg = 70
43 altura_m = 1.75
44 imc = peso_kg / (altura_m ** 2)
45 if imc < 18.5:
46 print("Bajo peso")
47 elif imc < 25:
48 print("Normal")
49 elif imc < 30:
50 print("Sobrepeso")
51 else:
52 print("Obesidad")

4) Cinco ejemplos con and (Y)

and: todas las condiciones unidas deben ser verdaderas a la vez.

cinco_and.py
PYTHON
1 # --- 1) Edad y permiso ---
2 edad = 17
3 con_permiso = True
4 if edad >= 18 and con_permiso:
5 print("Conduce solo")
6 else:
7 print("No cumple ambas condiciones")
8
9 # --- 2) Usuario y contraseña ---
10 user = "ana"
11 pwd = "secreto"
12 if user == "ana" and pwd == "secreto":
13 print("Login OK")
14
15 # --- 3) Rango numérico (entre dos valores) ---
16 x = 15
17 if x >= 10 and x <= 20:
18 print("x está entre 10 y 20")
19
20 # --- 4) Lista no vacía y primer elemento ---
21 nums = [3, 1, 4]
22 if len(nums) > 0 and nums[0] > 0:
23 print("Hay números y el primero es positivo")
24
25 # --- 5) String no vacío y longitud mínima ---
26 nick = "pythonista"
27 if nick and len(nick) >= 5:
28 print("Nick válido (no vacío y 5+ caracteres)")

5) Cinco ejemplos con or (O)

or: si al menos una condición es verdadera, el resultado es verdadero.

cinco_or.py
PYTHON
1 # --- 1) Fin de semana ---
2 dia = "sábado"
3 if dia == "sábado" or dia == "domingo":
4 print("Es fin de semana")
5
6 # --- 2) Descuento: estudiante o jubilado ---
7 es_estudiante = True
8 es_jubilado = False
9 if es_estudiante or es_jubilado:
10 print("Aplica descuento")
11
12 # --- 3) Transporte: bici o caminar ---
13 tiene_bici = False
14 puede_caminar = True
15 if tiene_bici or puede_caminar:
16 print("Puede ir al parque")
17
18 # --- 4) Código de error aceptable ---
19 codigo = 404
20 if codigo == 200 or codigo == 201:
21 print("Petición exitosa")
22 else:
23 print("Revisar respuesta del servidor")
24
25 # --- 5) Idioma soportado ---
26 lang = "es"
27 if lang == "es" or lang == "en" or lang == "pt":
28 print("Idioma disponible en la app")

6) Combinados: and, or y paréntesis

Python evalúa and antes que or en expresiones largas. Si no estás seguro, usá paréntesis para que el lector (y vos) entienda el orden.

combinados.py
PYTHON
1 pago_ok = True
2 stock = 4
3 es_vip = False
4
5 # VIP puede comprar aunque stock sea bajo, o si hay stock y pagó:
6 if es_vip or (stock >= 1 and pago_ok):
7 print("Venta autorizada")
8
9 # Rango: número entre 1 y 10, pero no el 7
10 n = 5
11 if (n >= 1 and n <= 10) and n != 7:
12 print("Válido y distinto de 7")
13
14 # Login: usuario correcto Y (email verificado O es cuenta antigua)
15 usuario_ok = True
16 email_verificado = False
17 cuenta_antigua = True
18 if usuario_ok and (email_verificado or cuenta_antigua):
19 print("Acceso concedido")

7) None y not — varios ejemplos

None significa “sin valor”. Para comparar con None usá is None o is not None (es el estilo recomendado en Python). not invierte: not TrueFalse.

none_y_not.py
PYTHON
1 # --- None (1): variable aún sin asignar resultado ---
2 respuesta = None
3 if respuesta is None:
4 print("Aún no hay respuesta del servidor")
5
6 # --- None (2): clave opcional en diccionario ---
7 config = {"tema": "oscuro"}
8 if config.get("idioma") is None:
9 print("Idioma por defecto: español")
10
11 # --- None (3): función sin return explícito devuelve None ---
12 def buscar_usuario(id):
13 if id < 0:
14 return None
15 return {"id": id, "nombre": "Ana"}
16
17 u = buscar_usuario(-1)
18 if u is None:
19 print("Usuario no encontrado")
20
21 # --- not (1): booleano en False ---
22 logueado = False
23 if not logueado:
24 print("Iniciá sesión para continuar")
25
26 # --- not (2): lista vacía (falsy) ---
27 carrito = []
28 if not carrito:
29 print("El carrito está vacío")
30
31 # --- not (3): negar una comparación ---
32 edad = 15
33 if not (edad >= 18):
34 print("Menor de edad (equivalente a edad < 18)")
35
36 # --- not (4): evitar doble negación confusa; a veces es más claro invertir la lógica ---
37 bloqueado = True
38 if not bloqueado:
39 print("Puedes escribir en el muro")
40 else:
41 print("Cuenta bloqueada")
42
43 # --- Combinación: None + not ---
44 opcional = None
45 if opcional is not None:
46 print("Hay valor:", opcional)
47 else:
48 print("Sin valor (None)")

8) Pertenencia: in

Comprueba si un valor está dentro de una lista, tupla, string, etc.

pertenencia.py
PYTHON
1 fruta = "manzana"
2 carrito = ["peras", "manzanas", "uvas"]
3
4 if fruta in carrito:
5 print("Ya lo tenemos")
6 else:
7 print("Falta comprarlo")

9) Expresión condicional (if en una línea)

Para asignar un valor u otro según una condición simple.

ternario.py
PYTHON
1 edad = 18
2 estado = "Adulto" if edad >= 18 else "Menor"
3 print(estado)

10) Menú de opciones en consola

Un patrón muy común es mostrar opciones con print(), leer la elección con input() y usar una cadena de if / elif / else. Así el usuario “navega” por tu programa sin interfaz gráfica.

menu_opciones.py
PYTHON
1 print("=== CAFETERÍA ===")
2 print("1) Café")
3 print("2) Té")
4 print("3) Jugo")
5 print("4) Salir")
6
7 opcion = input("Elegí un número (1-4): ").strip()
8
9 if opcion == "1":
10 print("Preparando café ☕")
11 elif opcion == "2":
12 print("Preparando té 🍵")
13 elif opcion == "3":
14 print("Sirviendo jugo 🧃")
15 elif opcion == "4":
16 print("¡Hasta luego!")
17 else:
18 print("Opción no válida. Probá de nuevo con 1, 2, 3 o 4.")

Tip: input() siempre devuelve texto (str). Por eso comparamos con "1" y no con 1. Si querés número, usá int(input("...")) dentro de un try/except (lo verás más adelante con errores).

11) Ejemplo: máquina dispensadora

Igual idea que el menú, pero con precios, stock y comprobaciones: ¿alcanza el dinero?, ¿hay producto?, ¿código válido? Todo encadenado con condicionales.

dispensadora.py
PYTHON
1 # Precios en monedas (ejemplo simple)
2 PRECIO_AGUA = 100
3 PRECIO_SNACK = 250
4 PRECIO_GASEOSA = 300
5
6 stock_agua = 3
7 stock_snack = 1
8 stock_gaseosa = 0 # agotado
9
10 print("=== DISPENSADORA ===")
11 print("A) Agua — $", PRECIO_AGUA, " (stock:", stock_agua, ")")
12 print("B) Snack — $", PRECIO_SNACK, " (stock:", stock_snack, ")")
13 print("C) Gaseosa — $", PRECIO_GASEOSA, "(stock:", stock_gaseosa, ")")
14
15 eleccion = input("Elegí A, B o C: ").strip().upper()
16 dinero = int(input("¿Cuánto dinero insertás? "))
17
18 if eleccion == "A":
19 if stock_agua <= 0:
20 print("No hay agua. Elegí otra opción.")
21 elif dinero < PRECIO_AGUA:
22 print("Falta dinero. Necesitás al menos $", PRECIO_AGUA, sep="")
23 else:
24 print("¡Toma tu agua! 💧")
25 vuelto = dinero - PRECIO_AGUA
26 if vuelto > 0:
27 print("Tu vuelto: $", vuelto, sep="")
28 elif eleccion == "B":
29 if stock_snack <= 0:
30 print("No hay snacks.")
31 elif dinero < PRECIO_SNACK:
32 print("Falta dinero. Necesitás al menos $", PRECIO_SNACK, sep="")
33 else:
34 print("¡Snack entregado! 🍫")
35 elif eleccion == "C":
36 if stock_gaseosa <= 0:
37 print("Gaseosa agotada.")
38 elif dinero < PRECIO_GASEOSA:
39 print("Falta dinero. Necesitás al menos $", PRECIO_GASEOSA, sep="")
40 else:
41 print("¡Gaseosa fría! 🥤")
42 else:
43 print("Letra inválida. Usá A, B o C.")

Fijate cómo el if exterior elige el producto y el interior responde a tres preguntas: ¿hay stock?, ¿alcanza el dinero?, si todo ok → entregar (y opcionalmente calcular vuelto). Podés extenderlo con un bucle while para que la máquina no termine tras una sola compra (lo harás en la lección de bucles).

Siguiente paso: match / case

Para ramificar como un switch de otros lenguajes (Python 3.10+), tenés la lección dedicada: 5. match / case →

🐍 Desafío: El portero de la disco PRO

Crea una variable tengo_entrada (True/False) y otra variable edad. Escribe un if que diga "Pasa" solo si eres mayor de 18 y además tienes entrada (usa and).

👁️ Ver solución sugerida
portero.py
PYTHON
1 edad = 20
2 tengo_entrada = True
3
4 if edad >= 18 and tengo_entrada:
5 print("Adelante, ¡pasa!")
6 else:
7 print("No puedes entrar.")

Pon a prueba lo aprendido

Responde el quiz cuando te sientas cómodo con if, else, elif, and y or.

Dato curioso: Primera versión pública en 1991; Guido van Rossum. Wikipedia

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.