Bo

Boolean en Python

70 ejercicios

Acerca de Boolean

Python representa los valores verdadero y falso con el tipo bool, que es una subclase de int. En este tipo solo hay dos valores Boolean: True y False. Estos valores se pueden asignar a una variable y combinar con los operadores Boolean (and, or, not):

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

Los operadores Boolean usan la evaluación de cortocircuito, lo que significa que la expresión del lado derecho del operador solo se evalúa si es necesario.

Cada uno de los operadores tiene una precedencia diferente: not se evalúa antes que and y or. Se pueden usar paréntesis para evaluar una parte de la expresión antes que las demás:

>>> not True and True
False

>>> not (True and False)
True

Todos los boolean operators se consideran de menor precedencia que los comparison operators de Python, como ==, >, <, is e is not.

Coerción de tipos y veracidad

La función bool (bool()) convierte cualquier objeto en un valor Boolean. De forma predeterminada, todos los objetos devuelven True a menos que estén definidos para devolver False.

Algunos built-ins siempre se consideran False por definición:

  • las constantes None y False
  • el cero de cualquier tipo numérico (int, float, complex, decimal o fraction)
  • las secuencias y colecciones vacías (str, list, set, tuple, dict, range(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

Cuando un objeto se usa en un contexto Boolean, se evalúa de forma transparente como truthy o falsey usando bool():

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

Las clases pueden definir cómo se evalúan en situaciones truthy si sobrescriben e implementan un método __bool__() y/o un método __len__().

Cómo funcionan los valores Boolean por dentro

El tipo bool está implementado como un subtipo de int. Eso significa que True es numéricamente igual a 1 y que False es numéricamente igual a 0. Esto se puede observar al compararlos con un operador de igualdad:

>>> 1 == True
True

>>> 0 == False
True

Sin embargo, los bools siguen siendo diferentes de los ints, como se nota al compararlos con el operador de identidad, is:

>>> 1 is True
False

>>> 0 is False
False

Nota: en Python >= 3.8, usar un literal (como 1, '', [] o {}) al lado izquierdo de is lanzará una advertencia.

Se considera un antipatrón de Python usar el operador de igualdad para comparar una variable Boolean con True o False. En su lugar, se debe usar el operador de identidad is:


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Boolean

La práctica está bloqueada

Desbloquea 2 ejercicios más para practicar Boolean