PyQuiz 42 - Ternario con falsy en Python | Quiz interactivo

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

  1. x = 0 — Se asigna el entero 0 a x.
  2. 'algo' if x else 'nada' — Python evalúa la condición x, que es 0.
  3. 0 es un valor falsy en Python (equivale a False en contexto booleano). La condición es falsa.
  4. Como la condición es falsa, se devuelve el valor tras else: el string 'nada'.
  5. resultado = 'nada' — Se asigna 'nada' a resultado.
  6. 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.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir