PyQuiz 42 – Ternario con falsy en Python

El reto
x = 0
resultado = 'algo' if x else 'nada'
print(resultado)¿Cuál es el resultado?
- a) 'algo'
- b) 'nada'
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: Ternario con falsy
El operador ternario de Python tiene la sintaxis valor_si_verdadero if condicion else valor_si_falso. La condición se evalúa como booleana: si es truthy, se devuelve el primer valor; si es falsy, se devuelve el valor tras else.
El valor 0 (entero cero) es uno de los valores falsy de Python. Por tanto, 'algo' if 0 else 'nada' evalúa la condición 0 como falsa y devuelve 'nada'. Esto es un caso común de confusión: la condición no necesita ser explícitamente False, basta con que sea falsy.
# Valores falsy: 0, '', [], {}, None, False, 0.0
print('sí' if 0 else 'no') # 'no'
print('sí' if '' else 'no') # 'no'
print('sí' if [] else 'no') # 'no'
print('sí' if 1 else 'no') # 'sí'
print('sí' if 'hola' else 'no')# 'sí'Paso a paso
x = 0— Se asigna el entero0ax.'algo' if x else 'nada'— Python evalúa la condiciónx, que es0.0es un valor falsy en Python (equivale aFalseen contexto booleano). La condición es falsa.- Como la condición es falsa, se devuelve el valor tras
else: el string'nada'. resultado = 'nada'— Se asigna'nada'aresultado.print(resultado)— Se imprime'nada'.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: B) 'nada'
0 es un valor falsy en Python. Como x es 0 (falso), se ejecuta la rama else: 'nada'.
Sabías que…
El operador ternario se puede anidar, aunque con más de un nivel se vuelve difícil de leer. En esos casos es preferible un if/elif/else normal:
# Ternario anidado (difícil de leer)
clasificacion = 'alto' if x > 80 else ('medio' if x > 50 else 'bajo')
# Mejor con if/elif/else:
if x > 80:
clasificacion = 'alto'
elif x > 50:
clasificacion = 'medio'
else:
clasificacion = 'bajo'
# Uso práctico: mensaje condicional
stock = 0
mensaje = f'Hay {stock} unidades' if stock else 'Sin stock'
print(mensaje) # 'Sin stock'Prueba tú mismo
¿Qué imprimiría print('positivo' if -1 else 'no positivo')? Ten cuidado: -1 no es 0.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: if, else, elif, match y switch
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
