Operadores lógicos (and, or, not)

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 == 100

Python 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 AArgumento BA and B
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

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 AArgumento BA or B
FalseFalseFalse
FalseTrueTrue
TrueFalseTrue
TrueTrueTrue

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

Argumentonot Argumento
FalseTrue
TrueFalse

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):

  1. Expresiones entre paréntesis ()
  2. Operadores de comparación (==, !=, >, <, >=, <=)
  3. Operador lógico not
  4. Operador lógico and
  5. Operador lógico or