Tracks
/
Python
Python
/
Temario
/
Booleanos
Bo

Booleanos en Python

70 ejercicios

Acerca de Booleanos

Python representa los valores verdadero y falso con el tipo bool, que es una subclase de int. Solo hay dos valores Boolean en este tipo: 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 a la derecha del operador solo se evalúa si es necesario.

Cada uno de los operadores tiene una precedencia distinta: 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 tienen una precedencia menor que la de los comparison operators de Python, como ==, >, <, is y is not.

Coerción de tipos y truthiness

La función bool (bool()) convierte cualquier objeto en un valor Boolean. Por defecto, 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 booleano, se evalúa de forma transparente como truthy o falsey mediante 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 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 ve 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 {}) en el lado izquierdo de is provocará una advertencia.

Se considera un antipatrón de Python usar el operador de igualdad para comparar una variable booleana con True o False. En su lugar, debería usarse 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 nueva ventana o pestaña

Aprende Booleanos

La práctica está bloqueada

Desbloquea 2 ejercicios más para practicar Booleanos