Hasta ahora, las condiciones que hemos evaluado en nuestros bloques if y while han sido bastante simples y aisladas (por ejemplo: if c0 % 2 == 1:). Sin embargo, en la vida real tomamos decisiones basadas en múltiples factores simultáneos. Analicemos esta frase:
- Si tenemos tiempo libre y el clima es bueno, saldremos a caminar.
La palabra y condiciona la acción a que ambas premisas se cumplan al mismo tiempo. En el lenguaje de la lógica, esta unión se denomina conjunción. Ahora observa este otro escenario:
- Si tú estás en el centro comercial o yo estoy en el centro comercial, uno de los dos comprará el regalo para mamá.
La palabra o indica que la acción final se realizará si al menos una de las dos condiciones se cumple. En lógica, esto se conoce como disyunción.
Para dotar a tus scripts de este poder de expresión, Python implementa tres operadores lógicos clave: and, or y not.
El Operador and (Conjunción Lógica)
El operador and es un operador binario (requiere dos argumentos, uno a la izquierda y otro a la derecha). Tiene una prioridad de ejecución menor que los operadores de comparación (>, <, ==, !=). Esto es una gran ventaja, ya que te permite escribir condiciones compuestas complejas de forma limpia y sin necesidad de saturar el código con paréntesis protectores:
counter > 0 and value == 100Python evaluará primero si counter > 0, luego si value == 100, y finalmente unirá ambos resultados con el and.
Tabla de Verdad del and
El operador and es sumamente estricto: solo devolverá True si ambos argumentos son verdaderos. En el momento en que uno de los dos sea falso, todo el castillo de naipes se cae.
| Argumento A | Argumento B | A and B |
False | False | False |
False | True | False |
True | False | False |
True | True | True |
El Operador or (Disyunción Lógica)
El operador or también es un operador binario. Es mucho más flexible y permisivo que el and. El or tiene una prioridad de ejecución menor que el and. En la jerarquía de operadores de Python, el and actúa como la multiplicación (*) y el or actúa como la suma (+). Si los encuentras juntos en una línea sin paréntesis, Python siempre resolverá los and primero.
Tabla de Verdad del or
Al operador or le basta con una sola chispa de verdad: devolverá True si al menos uno de los argumentos es verdadero. Solo arrojará False cuando absolutamente todo sea falso.
| Argumento A | Argumento B | A or B |
False | False | False |
False | True | True |
True | False | True |
True | True | True |
El Operador not (Negación Lógica)
A diferencia de los dos anteriores, not es un operador unario (se aplica sobre un único argumento colocado a su derecha). Su función es extremadamente simple: actúa como un espejo invertido, transformando la verdad en falsedad y la falsedad en verdad.
El operador not tiene una prioridad de ejecución muy alta, equivalente a los operadores unarios aritméticos (como el signo menos en -5). Se evalúa antes que cualquier and o or.
Tabla de Verdad del not
| Argumento | not Argumento |
False | True |
True | False |
Resumen Visual de Prioridades (Crucial para el Examen)
Cuando te pongan expresiones largas en el test para resolver mentalmente, recuerda seguir este estricto orden de operaciones (de mayor a menor importancia):
- Expresiones entre paréntesis
() - Operadores de comparación (
==,!=,>,<,>=,<=) - Operador lógico
not - Operador lógico
and - Operador lógico
or