PyQuiz 22 – Comparación encadenada en Python
El reto
x = 5
print(1 < x < 10)
¿Cuál es el resultado?
- a) True
- b) False
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: Comparación encadenada
Python permite escribir comparaciones encadenadas como 1 < x < 10, que es equivalente a 1 < x and x < 10 pero más legible y conciso. Este es un rasgo propio de Python; en la mayoría de los lenguajes, encadenar comparaciones de este modo no funciona como se espera.
La evaluación se hace de izquierda a derecha: Python comprueba 1 < x primero, y si es True, evalúa x < 10. Si ambas son verdaderas, el resultado es True. Si alguna falla, el resultado es False y Python puede aplicar cortocircuito.
Esto es especialmente útil para comprobar si un valor está dentro de un rango, como validar edades, notas, temperaturas, etc., de forma muy natural y matemáticamente intuitiva.
Paso a paso
x = 5— se asigna el valor entero5.1 < x— se evalúa: ¿es 1 menor que 5? Sí. Resultado:True.x < 10— se evalúa: ¿es 5 menor que 10? Sí. Resultado:True.True and True— internamente Python combina ambas condiciones. Resultado:True.print(1 < x < 10)— se imprimeTrue.
Solución
Respuesta correcta: A) True
Python permite comparaciones encadenadas. 1 < 5 < 10 equivale a (1 < 5) and (5 < 10) = True.
Sabías que...
Las comparaciones encadenadas funcionan con cualquier operador de comparación y puedes encadenar más de dos:
x = 5
# Equivalencia exacta
print(1 < x < 10) # True
print(1 < x and x < 10) # True (idéntico)
# Encadenamiento triple
nota = 7.5
print(0 <= nota <= 10) # True: nota válida
# Encadenamiento con distintos operadores
print(1 < 3 <= 3 < 5) # True
# En Python: 1 < 5 > 3 -> True (1<5 AND 5>3)
print(1 < 5 > 3) # True
# Uso práctico: validar rango
def es_nota_valida(nota):
return 0 <= nota <= 10
Prueba tú mismo
¿Qué devuelve 3 < 3 <= 5? ¿Y 3 <= 3 <= 5? Intenta predecir la diferencia antes de ejecutarlo.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Operadores y expresiones
