Saltar al contenido principal

Operadores lógicos

Los operadores lógicos (o booleanos) son símbolos que se usan en programación y bases de datos para combinar expresiones lógicas (que resultan en verdadero o falso) y obtener un nuevo valor booleano, o para verificar condiciones complejas.

Existen tres operadores lógicos:

Operador lógicoDescripción
andAmbos valores.
orUno de los valores.
notNegación.

Operador and

La tabla de verdad del operador and es la siguiente:

Operando 1Operando 2Resultado
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

Es decir, cuando los dos operandos son verdaderos el resultado es verdadero, en otro caso es falso. Ejemplo:

x = -1
x > 0 and x < 10 # False

x = 10
x > 0 and x < 10 # False

x = 5
x > 0 and x < 10 # True

En caso de utilizar más de dos operandos unidos por operadores lógicos and, el resultado es verdadero en caso de que todos los operandos sean verdaderos, y falso en caso contrario. Ejemplo:

x = 12
n%2 == 0 and n%3 == 0 and n%4 == 0 # True

x = 6
n%2 == 0 and n%3 == 0 and n%4 == 0 # False

Operador or

La tabla de verdad del operador or es la siguiente:

Operando 1Operando 2Resultado
FalseFalseFalse
FalseTrueTrue
TrueFalseTrue
TrueTrueTrue

Es decir, cuando uno de los operandos es verdadero el resultado es verdadero, en otro caso es falso. Ejemplo:

n = 5
n%2 == 0 or n%3 == 0 # False

n = 4
n%2 == 0 or n%3 == 0 # True

n = 9
n%2 == 0 or n%3 == 0 # True

n = 6
n%2 == 0 or n%3 == 0 # True

En caso de utilizar más de dos operandos unidos por operadores lógicos or, el resultado es verdadero en caso de que uno de los operandos sea verdadero, y falso en caso contrario. Ejemplo:

n = 2
n%2 == 0 or n%3 == 0 or n%4 == 0 # True

n = 5
n%2 == 0 or n%3 == 0 or n%4 == 0 # False

Operador not

El operador not niega una expresión booleana, por lo que tiene un único operando. Su tabla de verdad es la siguiente:

OperandoResultado
FalseTrue
TrueFalse

Ejemplo:

n = 4
not (n%2 == 0) # Falso

n = 5
not (n%2 == 0) # Verdadero

Mezclar operandos

Si se desea mezclar operandos lógicos diferentes (and, or y not) en una misma expresión lógica, se recomienda utilizar paréntesis. De este modo controlas el orden en el que se evalúan los operadores. Ejemplo:

x = 15
(n%5 == 0 or n%2 == 0) and n%4 == 0 # True
# En este caso el paréntesis es True, por lo que obtenemos True and n%4 == 0
# El resultado sería True and False, y por tanto sería False
n%5 == 0 or (n%2 == 0 and n%4 == 0) # False
# En este caso el paréntesis es False, por lo que obtenemos n%5 == 0 or False
# El resultado sería True or False, y por tanto sería True

Otras consideraciones

Estríctamente, los operandos de los operadores lógicos deberían ser expresiones booleanas, pero Python no es muy estricto. Cualquier número distinto de cero se interpreta como verdadero.

17 and True # True

Esta flexibilidad puede ser útil, pero existen ciertas sutilezas en este tipo de uso que pueden resultar confusas. Es posible que prefieras evitar usarlo de este modo hasta que estés seguro de lo que estás haciendo.