PyQuiz 34 - Short-circuit con or en Python | Quiz interactivo

PyQuiz 34 – Short-circuit con or en Python

El reto

x = 0
resultado = x or 'vacío'
print(resultado)

¿Cuál es el resultado?

  • a) 'vacío'
  • b) 0
  • c) True

Piensa tu respuesta antes de seguir leyendo…


Concepto: Short-circuit con or

En Python, el operador or no devuelve simplemente True o False: devuelve el primer valor que sea «truthy», o el último valor si todos son «falsy». A esto se le llama evaluación en cortocircuito (short-circuit evaluation).

Los valores falsy en Python son: 0, 0.0, '' (string vacío), [], {}, None, y False. Todo lo demás es truthy. Cuando Python evalúa x or y, si x es truthy lo devuelve directamente sin evaluar y. Si x es falsy, devuelve y (sea cual sea su valor).

print(0 or 'vacío')      # 'vacío'  — 0 es falsy
print('' or 'default')  # 'default' — string vacío es falsy
print(5 or 99)           # 5        — 5 es truthy, devuelve el primero
print(None or [] or 42)  # 42       — los dos primeros son falsy

Paso a paso

  1. x = 0 — Se asigna el valor 0 a x. El entero 0 es un valor falsy en Python.
  2. resultado = x or 'vacío' — Python evalúa x primero. Como x es 0 (falsy), el operador or no puede «cortocircuitar» aquí, así que evalúa el lado derecho.
  3. El lado derecho es 'vacío', un string no vacío, por lo tanto truthy. El operador or devuelve este valor: 'vacío'.
  4. print(resultado) — Se imprime 'vacío'.

📥 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: A) 'vacío'

'or' retorna el primer valor truthy. Como 0 es falsy, retorna 'vacío'.

Sabías que…

El operador and funciona de forma complementaria: devuelve el primer valor falsy, o el último si todos son truthy. Juntos permiten patrones muy expresivos:

# Patrón clásico: valor por defecto
nombre = entrada_usuario or 'Anónimo'

# and devuelve el primer falsy o el último truthy
print(5 and 10)    # 10  — ambos truthy, devuelve el último
print(0 and 10)    # 0   — 0 es falsy, cortocircuita
print(5 and 0)     # 0   — llega al segundo que es falsy

# Equivalente moderno con walrus operator (Python 3.8+):
if valor := datos.get('clave'):
    procesar(valor)

Prueba tú mismo

¿Qué devuelve [] or {} or 'hola' or 42? Razona paso a paso qué evalúa Python en cada or.


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Operadores y expresiones

¿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