1.2 – Estructuras condicionales en Python

Un programa sin decisiones es como un robot que solo sabe caminar recto hasta chocar contra una pared. Las estructuras condicionales permiten que el programa observe, compare, evalúe… y elija. Son el mecanismo que controla el flujo de ejecución, es decir, el orden en que el programa ejecuta instrucciones.

En términos simples:

Si ocurre A → haz X
Si no ocurre A → haz Y

Ese pequeño esquema es el corazón de casi todo software: validaciones, menús, videojuegos, seguridad, IA, redes, sistemas operativos… todo decide constantemente.


¿Qué es una condición?

Una condición es una expresión que solo puede ser:

  • True (verdadero)
  • False (falso)

Ejemplos:

5 > 3        # True
10 == 2 # False
"hola" == "hola" # True

Python evalúa la condición, y dependiendo del resultado, ejecuta o no un bloque de código.


1. Condicional simple (if)

Ejecuta código solo si la condición es verdadera.

if condición:
bloque_de_codigo

Ejemplo:

edad = 18
if edad >= 18:
    print("Eres mayor de edad.")

Si la condición es falsa, no ocurre nada. El programa sigue.


2. Condicional con alternativa (if – else)

Aquí el programa tiene dos caminos posibles.

if condición:
bloque_si_verdadero
else:
bloque_si_falso

Ejemplo:

edad = 16
if edad >= 18:
    print("Eres mayor de edad.")
else:
    print("Eres menor de edad.")

Solo uno de los bloques se ejecuta. Nunca ambos.


3. Condicional múltiple (if – elif – else)

Cuando el universo tiene más de dos posibilidades.

if condición1:
bloque1
elif condición2:
bloque2
elif condición3:
bloque3
else:
bloque_final

Python evalúa en orden. En cuanto encuentra una condición verdadera, ejecuta su bloque y sale.

Ejemplo:

temperatura = 30
if temperatura > 30:
    print("Hace mucho calor.")
elif temperatura > 20:
    print("El clima es agradable.")
else:
    print("Hace frío.")

Aquí, aunque 30 > 20 también es cierto, no se evalúa porque ya se encontró una condición válida antes.


4. Condicionales anidadas

Una decisión dentro de otra decisión. Como una caja dentro de otra caja.

edad = 20
tiene_identificacion = True
if edad >= 18:
    if tiene_identificacion:
        print("Puedes ingresar.")
    else:
        print("Necesitas identificación.")
else:
    print("Eres menor de edad.")

Cuidado: demasiada anidación convierte el código en un laberinto. Cuando un if parece una pirámide… algo se puede simplificar.


Cómo piensa Python: valores «Truth» y «Falsey»

No todo en Python es literalmente True o False. Algunos valores se consideran falsos automáticamente:

Falsos:

  • False
  • 0
  • None
  • "" (cadena vacía)
  • [] (lista vacía)
  • {} (diccionario vacío)

Ejemplo:

nombre = ""
if nombre:
    print("Hay nombre")
else:
    print("Está vacío")

Resultado → "Está vacío"

Python interpreta vacío = falso. Esto es muy poderoso y muy peligroso si no se entiende.


Operadores en condiciones

Operadores de comparación

Comparan valores.

  • == igual
  • != distinto
  • < menor
  • > mayor
  • <= menor o igual
  • >= mayor o igual
if 10 >= 5:
print("Sí")

Operadores lógicos

Permiten combinar condiciones.

  • and → ambas deben ser verdaderas
  • or → al menos una verdadera
  • not → invierte el resultado
edad = 20
tiene_id = True
if edad >= 18 and tiene_id:
    print("Acceso permitido")

Operadores de pertenencia

Comprueban si algo está dentro de algo.

  • in
  • not in
if "a" in "python":
print("Contiene la letra a")

¿Por qué Python no tenía switch?

Históricamente Python prefería simplicidad. if-elif-else cubría el caso. Pero… desde Python 3.10 existe:

match-case (el “switch” moderno)

opcion = 2match opcion:
case 1:
print("Opción 1")
case 2:
print("Opción 2")
case 3:
print("Opción 3")
case _:
print("Opción no válida")

Más limpio cuando hay muchas opciones. Especialmente útil en menús, parsers, interpretes, juegos…


Buenas prácticas

  1. Evita condiciones innecesarias
# MAL
if activo == True:# BIEN
if activo:
  1. Evita anidar demasiado
  2. Usa nombres claros en variables
  3. Ordena condiciones de más específica a más general
  4. Piensa en todos los casos posibles (incluido el inesperado)

Ejercicios

Bloque 1 — Fundamentos del if

Ejercicio 1
Pide un número. Si es mayor que 10, muestra mensaje.

Ejercicio 2
Pide edad. Mayor o igual 18 → mayor de edad, si no → menor.

Ejercicio 3
Número positivo / negativo / cero.


Bloque 2 — Comparaciones

Ejercicio 4
Comparar dos números.

Ejercicio 5
Número dentro de rango 1–100.


Bloque 3 — Lógica y condiciones

Ejercicio 6
Detectar vocal.

Ejercicio 7
Número → día de la semana.


Bloque 4 — Aplicación práctica

Ejercicio 8
Validar contraseña "secreto123".

Ejercicio 9
Clasificar temperatura:

  • ≥ 30 → calor
  • 10–29 → templado
  • < 10 → frío

Ejercicio 10
Precio > 1000 → aplicar 10% descuento.


Bloque 5 — Nivel mental superior (nuevos)

Ejercicio 11 — Login limitado
Pide usuario y contraseña.
Si usuario = "admin" y contraseña correcta → acceso.
Si falla 3 veces → bloqueado.

Ejercicio 12 — Número par, impar o múltiplo de 5

Ejercicio 13 — Año bisiesto

Regla:

  • divisible por 4
  • no divisible por 100
  • salvo que sea divisible por 400

Ejercicio 14 — Simulador de menú

Mostrar:

  1. Ver perfil
  2. Cambiar contraseña
  3. Salir

Usar match o if.

Ejercicio 15 — Detector de fuerza de contraseña

  • < 6 → débil
  • 6–10 → media
  • 10 + número → fuerte