🐍 Guía de Aula Invertida
vistas

Condicionales en Python

Hasta ahora tus programas ejecutan instrucciones una tras otra, sin importar los datos que reciben. Las estructuras condicionales son el primer paso para que tu código tome decisiones: ejecutar un bloque distinto según se cumpla o no una condición. Es la base sobre la que luego vas a construir bucles, funciones y, más adelante, los métodos de una clase.

RC
Ing. Roy Carrasco
Facultad de Ingeniería de Sistemas · UAB

Bienvenido

Ya sabes crear variables, identificar sus tipos y leer datos del usuario. Ahora falta la pieza que le da lógica a un programa: decidir qué hacer según el valor de esos datos. Eso es exactamente lo que hacen las estructuras condicionales.

Objetivo del módulo

Al finalizar esta guía sabrás escribir condiciones con if, elif y else, combinar condiciones con operadores de comparación y lógicos (and, or, not), anidar condicionales y evitar los errores más comunes al programar decisiones.

💻 Código en vivo

Todos los bloques con el encabezado Python son editables: presiona ✏️ Editar para modificar el código y ▶ Ejecutar para correrlo de verdad en tu navegador (usa Pyodide, un Python real compilado a WebAssembly). La primera ejecución tarda unos segundos porque descarga el intérprete.

📖 Aprende

Cómo Python evalúa condiciones y decide qué bloque ejecutar.

💻 Practica

Ejemplos editables y ejecutables en cada sección.

🎯 Domina

Operadores lógicos, anidamiento y los errores que evitan la mayoría de los principiantes.

¿Qué es una condición?

Una condición es cualquier expresión que Python puede evaluar como True o False. Ya las viste en la guía de Tipos de Datos: cualquier comparación (5 > 3, "a" == "b") produce un valor bool. Una estructura condicional usa ese resultado para decidir qué código ejecutar.

Python
edad = 20
print(edad >= 18)
print(type(edad >= 18))
La idea central

if no es más que: "si esta expresión vale True, ejecuta el bloque de abajo; si no, sáltalo".

La instrucción if

En Python, un bloque if se abre con dos puntos : y su contenido se marca con indentación (4 espacios). A diferencia de otros lenguajes, Python no usa llaves {}: la indentación es lo que define qué instrucciones pertenecen al bloque.

Python
edad = 20

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

print("Este print siempre se ejecuta")

Salida:

Consola
Eres mayor de edad
Puedes votar
Este print siempre se ejecuta
Cuidado con la indentación

Todas las líneas de un mismo bloque deben tener exactamente la misma indentación. Mezclar espacios y tabulaciones, o desalinear una línea por error, produce un IndentationError.

Si la condición es falsa, el bloque simplemente no se ejecuta y el programa continúa después de él:

Python
edad = 15

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

print("Fin del programa")

Operadores de comparación

Estos operadores son los que normalmente escribes dentro de un if. Todos devuelven un valor bool.

OperadorSignificadoEjemplo
==Igual aedad == 18
!=Distinto deedad != 18
>Mayor queedad > 18
<Menor queedad < 18
>=Mayor o igual queedad >= 18
<=Menor o igual queedad <= 18
Python
a = 10
b = 20
print(a == b)
print(a != b)
print(a < b)
print(a >= 10)
No confundir == con =

= asigna un valor a una variable; == compara dos valores. Es el error más común al escribir un if por primera vez, y lo vas a ver de nuevo en la sección de errores comunes.

else y elif

else define el bloque que se ejecuta cuando la condición del if es falsa. elif (abreviatura de "else if") te permite encadenar varias condiciones adicionales antes de llegar al else final.

Python
edad = 15

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

Con elif puedes evaluar varias condiciones en orden. Python evalúa de arriba hacia abajo y ejecuta solo el primer bloque cuya condición sea verdadera:

Python
nota = 75

if nota >= 90:
    print("Sobresaliente")
elif nota >= 70:
    print("Aprobado")
elif nota >= 50:
    print("En riesgo")
else:
    print("Reprobado")
Orden importa

Si hubieras escrito primero elif nota >= 50 y luego elif nota >= 70, una nota de 75 caería en el primer elif que se cumple (>= 50) y nunca llegaría al segundo. Ordena las condiciones de la más específica a la más general.

Operadores lógicos: and, or, not

Cuando una decisión depende de más de una condición a la vez, combinas expresiones booleanas con and, or y not.

OperadorSe cumple cuando…
andAmbas condiciones son verdaderas.
orAl menos una condición es verdadera.
notInvierte el valor de la condición.
Python
edad = 20
tiene_carnet = True

if edad >= 18 and tiene_carnet:
    print("Puede conducir")
else:
    print("No puede conducir")
Python
dia = "sábado"

if dia == "sábado" or dia == "domingo":
    print("Es fin de semana")
else:
    print("Es día de semana")
Python
en_mantenimiento = False

if not en_mantenimiento:
    print("El sistema está disponible")
Cortocircuito

Python evalúa and/or con cortocircuito: en a and b, si a ya es False, ni siquiera evalúa b. Esto se usa mucho para evitar errores, por ejemplo: edad != "" and int(edad) >= 18.

Condicionales anidados

Un if puede contener otro if dentro de su bloque. Esto es útil cuando la segunda decisión solo tiene sentido después de confirmar la primera, pero abusar del anidamiento hace el código difícil de leer.

Python
edad = 25
tiene_entrada = True

if edad >= 18:
    if tiene_entrada:
        print("Puede ingresar al evento")
    else:
        print("Necesita comprar una entrada")
else:
    print("No cumple la edad mínima")
Prefiere and cuando puedas

El ejemplo anterior también se puede escribir sin anidar, combinando condiciones con and: if edad >= 18 and tiene_entrada:. En general, si un anidamiento se puede aplanar con and/or, el código queda más legible.

Truthy y falsy dentro de un if

En la guía de Tipos de Datos viste que Python considera "falsy" a valores como 0, "" o []. Un if puede evaluar directamente cualquier valor, no solo comparaciones explícitas, porque Python lo convierte a bool internamente.

Python
nombre = ""

if nombre:
    print("Hola,", nombre)
else:
    print("No ingresaste un nombre")
Cuándo conviene ser explícito

if nombre: es idiomático en Python, pero si necesitas distinguir 0 de None (por ejemplo, un saldo en cero no es lo mismo que "sin dato"), es más seguro comparar explícitamente: if nombre != "": o if valor is not None:.

Condicional en una línea (operador ternario)

Cuando el if/else solo decide qué valor asignar (no qué instrucciones ejecutar), Python permite escribirlo en una sola línea con la forma valor_si_true if condición else valor_si_false.

Python
edad = 16
estado = "mayor de edad" if edad >= 18 else "menor de edad"
print(estado)

Es equivalente a escribir:

Python
edad = 16
if edad >= 18:
    estado = "mayor de edad"
else:
    estado = "menor de edad"
print(estado)
Úsalo con moderación

El operador ternario es cómodo para decisiones simples de una sola línea. Si necesitas elif o varias instrucciones por rama, usa el if normal: forzar todo a una línea perjudica la legibilidad.

Errores comunes

❌ Usar = en vez de ==

if edad = 18: produce SyntaxError. Para comparar se usa ==, no =.

❌ Olvidar los dos puntos

if edad >= 18 sin : al final produce SyntaxError.

❌ Indentación inconsistente

Mezclar distintos niveles de indentación en el mismo bloque produce IndentationError.

❌ Encadenar if en vez de elif

Usar varios if seguidos (en lugar de elif) evalúa todas las condiciones aunque la primera ya se haya cumplido, lo que puede ejecutar más de un bloque por error.

Prueba el error

Ejecuta este bloque para observar en vivo el SyntaxError por usar = en lugar de ==.

Python
edad = 18
if edad = 18:
    print("Tiene 18 años")
Corrígelo

Edita el bloque anterior y reemplaza edad = 18 (dentro del if) por edad == 18 para ver la diferencia.

Ejercicios Propuestos

Pon en práctica lo aprendido resolviendo los siguientes ejercicios directamente en el bloque editable.

  1. Pide la edad de una persona con input() y usa if/else para imprimir si es mayor o menor de edad.
  2. Dada una variable nota, usa if/elif/else para imprimir "Sobresaliente" (≥90), "Aprobado" (≥70), "En riesgo" (≥50) o "Reprobado".
  3. Combina dos condiciones con and para verificar si una persona puede votar (edad >= 18 and es_ciudadano).
  4. Usa or para comprobar si un número es igual a 3 o a 7.
  5. Escribe un if anidado y luego reescríbelo usando and para comparar ambas versiones.
  6. Escribe una expresión condicional en una línea (ternario) que asigne "par" o "impar" según el resto de dividir un número entre 2.
✍️ Resuelve aquí los ejercicios

Reto Final

Escribe un programa que clasifique el Índice de Masa Corporal (IMC) a partir de estos dos valores:

  • peso = 68 (kg)
  • altura = 1.70 (metros)

El programa deberá:

  • Calcular el IMC con la fórmula peso / (altura ** 2).
  • Usar if/elif/else para clasificarlo: menor a 18.5 "Bajo peso", entre 18.5 y 24.9 "Normal", entre 25 y 29.9 "Sobrepeso", 30 o más "Obesidad".
  • Imprimir el IMC redondeado a un decimal junto con la clasificación, usando un f-String.
Salida esperada
IMC: 23.5 → Normal

Cheat Sheet

UsoEjemplo
Condición simpleif x > 0:
Alternativaif x > 0: ... else: ...
Varias condicionesif ...: elif ...: else: ...
Ambas verdaderasa and b
Al menos una verdaderaa or b
Invertirnot a
Condicional en una líneax if cond else y
Comprobar pertenenciaif x in lista:

¿Sabías que...?

🐍 Sin switch

Python no tuvo una instrucción switch tradicional hasta 2021: antes de eso (y todavía hoy) se usa if/elif encadenado para ese propósito.

🔗 Comparaciones encadenadas

Python permite escribir 0 <= nota <= 100 directamente, sin necesitar 0 <= nota and nota <= 100 como en otros lenguajes.

🎯 pass como marcador

Si necesitas dejar un bloque if vacío temporalmente, Python exige al menos una instrucción: para eso existe pass, que no hace nada.