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ógico | Descripción |
|---|---|
and | Ambos valores. |
or | Uno de los valores. |
not | Negación. |
Operador and
La tabla de verdad del operador and es la siguiente:
| Operando 1 | Operando 2 | Resultado |
|---|---|---|
False | False | False |
False | True | False |
True | False | False |
True | True | True |
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 1 | Operando 2 | Resultado |
|---|---|---|
False | False | False |
False | True | True |
True | False | True |
True | True | True |
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:
| Operando | Resultado |
|---|---|
False | True |
True | False |
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.