CAP 03 · LEC 03·Control de flujo

Expresiones condicionales: el ternario en Python

Python no tiene el operador ternario ?: de otros lenguajes — tiene algo más legible: `valor_si_true if condicion else valor_si_false`.

● PRINCIPIANTE5 min lectura3 ejerciciospor Fernando Herrera · actualizado mayo de 2026
¿Encontraste un error o algo que mejorar?Editá esta lección en GitHub →

Sintaxis: valor if cond else otro

La expresión condicional de Python tiene una sintaxis muy legible: el resultado positivo va primero, luego la condición, luego el resultado negativo:

edad = 20 # Expresión condicional (ternario) estado = "mayor de edad" if edad >= 18 else "menor de edad" print(estado) # mayor de edad # En otros lenguajes sería: # estado = edad >= 18 ? "mayor de edad" : "menor de edad" (JavaScript) # Python lo hace más legible porque el resultado positivo aparece primero # Puede usarse directamente en print, asignaciones, return... print("par" if edad % 2 == 0 else "impar") # par # Ternario con cálculos descuento = 0.2 if edad >= 60 else 0.0 precio = 100 precio_final = precio * (1 - descuento) print(f"Precio final: {precio_final}")
Salidamayor de edad par Precio final: 100.0

Comparación con if/else clásico

El ternario es equivalente a un if/else de dos ramas, pero en una sola línea:

puntos = 750 # ✅ Con if/else clásico — más verboso, más claro para lógica compleja if puntos >= 1000: nivel = "Oro" elif puntos >= 500: nivel = "Plata" else: nivel = "Bronce" # ✅ Con ternario — solo para dos opciones simples etiqueta = "alto" if puntos > 500 else "bajo" # ❌ Ternarios anidados — difíciles de leer # categoria = "A" if p > 90 else "B" if p > 70 else "C" if p > 50 else "D" # Esto es técnicamente válido pero confuso — usa if/elif en su lugar print(f"Nivel: {nivel}, Puntuación: {etiqueta}")
SalidaNivel: Plata, Puntuación: alto
if/else clásicoExpresión condicional
Múltiples ramas (elif)Solo dos opciones
Cualquier complejidad de lógicaAsignación simple en una línea
Bloques con múltiples instruccionesUna sola expresión por rama
Más líneas de códigoConciso en contextos simples

Cuándo usarlo y cuándo no

El ternario brilla en contextos donde necesitas un valor en una expresión más grande:

usuario = {"nombre": "Ana", "admin": False} # ✅ En f-strings print(f"Rol: {'administrador' if usuario['admin'] else 'usuario'}") # ✅ En listas por comprensión numeros = [1, -2, 3, -4, 5] absolutos = [n if n >= 0 else -n for n in numeros] print(absolutos) # [1, 2, 3, 4, 5] # ✅ En argumentos de funciones resultado = max(0, -10 if False else 5) print(resultado) # 5 # ✅ En return def signo(n): return "positivo" if n > 0 else ("negativo" if n < 0 else "cero") print(signo(5)) # positivo print(signo(-3)) # negativo print(signo(0)) # cero # ❌ Cuándo NO usar el ternario (legibilidad sacrificada) # resultado = procesar_complejo(datos) if validar_datos(datos) and datos is not None and len(datos) > 0 else manejar_error(datos) # ← demasiado largo — usa if/else
SalidaRol: usuario [1, 2, 3, 4, 5] 5 positivo negativo cero
La regla de oro

El ternario debe caber en una línea de menos de 80 caracteres y ser inmediatamente comprensible. Si tienes que releerlo dos veces para entenderlo, usa if/else.

Practica

Tres ejercicios para practicar las expresiones condicionales.