Saltar a contenido

Valores booleanos

Consideremos la siguiente sentencia:

if a > b :
    sentencias a ejecutar

Al evaluar la expresión a > b, se obtiene un resultado, como sucede con las expresiones aritméticas:

>>> 5 + 2
    7

>>> 5 > 2
    True

>>> 5 < 2
    False

Los resultados de una expresión de comparación solo pueden ser dos, verdadero o falso, que en Python se expresan mediante las palabras True y False (la letra inicial en mayúscula). Son palabras reservadas del lenguaje.

Los valores True y False se pueden asignar a una variable:

>>> valor1 = 5 + 2
>>> valor2 = 5 > 2
>>> print(valor1, valor2)
    7 True

¿Cual es el tipo de esas variables?

>>> type(valor1)
    <class 'int'>

>>> type(valor2)
    <class 'bool'>

Los valores True y False son datos del tipo bool. A estos datos se les llama booleanos.

El término "booleano" se llama así en honor a un matemático británico del siglo XIX, George Boole. Él fue quien desarrolló las reglas de lógica que sirven de base para el funcionamiento de los modernos ordenadores.

Equivalencias

Toda sentencia if debe ir acompañada de una expresión o de una variable cuyo valor sea booleano, es decir, True o False:

Booleano1.py
1
2
3
4
5
6
x = 17
positivo = (x >= 0)
if positivo:
    print("valor positivo")
else:
    print("valor negativo")

En este ejemplo, evaluamos una expresión condicional y asignamos el valor resultante a una variable. En la sentencia if, en lugar de una condición, usamos el valor de la variable. Lo que espera la sentencia if es que pongamos algo cuyo valor sea True o False.

Pero, ¿que pasaría si en la sentencia if ponemos una expresión o variable que no sea booleana? Por ejemplo:

Descuento.py
1
2
3
4
5
6
7
importe = 1000
descuento = 5      # en tanto por ciento

if descuento :
    importe = importe - (importe*5/100)

print("A pagar:", importe)

Esto muestra:

A pagar: 950.0

En teoría, deberíamos escribir:

if descuento != 0 :
    importe = importe - (importe*5/100)

pero Python considera que todo valor numérico distinto de cero equivale a True, mientras que el cero equivale a False. De igual forma, una cadena de texto con cero caracteres, equivale a False:

NombreEnBlanco.py
1
2
3
nombre = input("Introduzca su nombre: ")
if nombre:
    print("Bienvenido", nombre)

En lugar de:

if len(nombre)>0 :

escribimos:

if nombre :

Si el usuario teclea Enter directamente, obtenemos una cadena de texto sin caracteres, lo que se conoce como cadena vacía. También podemos crear cadenas vacías mediante:

texto = ""

Una cadena vacía equivale a False en el contexto de una sentencia if. Cualquier otra cadena equivale a True.