PyQuiz 17 – Comparadores y booleanos en Python
El reto
x = 5
resultado = not (x > 3 and x < 4)
print(resultado)
¿Cuál es el resultado?
- a) True
- b) False
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: Comparadores y booleanos
Los operadores lógicos en Python (and, or, not) siguen un orden de precedencia estricto: primero se evalúa not, luego and, y finalmente or. Los paréntesis permiten alterar ese orden.
La evaluación es en cortocircuito: en una expresión con and, si el primer operando es False, Python no evalúa el segundo. Con or, si el primero es True, no evalúa el segundo. Esto puede importar cuando los operandos tienen efectos secundarios.
El operador not invierte el booleano: not True da False y not False da True. En el quiz, la expresión not (x > 3 and x < 4) primero evalúa el paréntesis interior y luego niega el resultado.
Paso a paso
x = 5— se asigna el entero5a la variablex.x > 3— se evalúa: ¿es 5 mayor que 3? Sí. Resultado:True.x < 4— se evalúa: ¿es 5 menor que 4? No. Resultado:False.True and False— el operadoranddevuelveTruesolo si ambos sonTrue. Como uno esFalse, el resultado esFalse.not False— el operadornotinvierte el booleano.not FalseesTrue.print(resultado)— se imprimeTrue.
Solución
Respuesta correcta: A) True
x > 3 es True, pero x < 4 es False. True and False = False. not False = True.
Sabías que...
El cortocircuito en and y or es muy útil para evitar errores. Por ejemplo, comprobar si una lista no está vacía antes de acceder a su primer elemento:
# Cortocircuito con and
lista = []
if lista and lista[0] > 0: # lista es falsy, no evalúa lista[0]
print('Positivo')
else:
print('Lista vacía o primer elemento no positivo') # esto se imprime
# not con expresiones complejas
x = 7
resultado = not (x > 5 or x < 2)
print(resultado) # False: (True or False) = True, not True = False
# Tabla de verdad rápida
print(True and False) # False
print(True or False) # True
print(not True) # False
Prueba tú mismo
Con x = 5, ¿qué devuelve not (x > 3 or x < 4)? Evalúalo paso a paso antes de comprobarlo.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Tipos numéricos y booleanos
