Estructuras de control

Operadores lógicos


Los operadores lógicos permiten construir expresiones booleanas más complejas combinando múltiples condiciones. Estas expresiones se evalúan como True o False, y son fundamentales al momento de tomar decisiones en programas que requieren estructuras condicionales como if, while o for.

En Python, existen tres operadores lógicos principales:

Operador Significado
and Devuelve True si ambas condiciones son True.
or Devuelve True si al menos una condición es True.
not Invierte el valor lógico: True se convierte en False y viceversa.

Operador and:

El operador and evalúa si las dos condiciones son verdaderas. Solo si ambas lo son, el resultado será True. Si alguna de ellas es False, el resultado total será False.

Sintaxis general:
condición1 and condición2
Ejemplo:
hace_sol = True
es_fin_de_semana = True

# Solo iré a la playa si hace sol y es fin de semana
ir_a_la_playa = hace_sol and es_fin_de_semana
print(ir_a_la_playa)  # True

Si una de las condiciones fuera False, no se cumpliría el plan de ir a la playa.

Operador or:

Devuelve True si al menos una de las condiciones es verdadera. Solo devuelve False cuando todas las condiciones son False.

Sintaxis general:
condición1 or condición2
Ejemplo:
tengo_dinero = False
me_invitan = True

# Iré al cine si tengo dinero o me invitan
ir_al_cine = tengo_dinero or me_invitan
print(ir_al_cine)  # True
Operador not:

El operador not invierte el valor lógico de una expresión. Si la expresión es True, se convierte en False, y viceversa.

Sintaxis general:
condición1 not condición2
Ejemplo:
llueve = True

# No saldré si llueve
salir = not llueve
print(salir)  # False

También se pueden usar múltiples not seguidos. El número de veces que se aplique determina si el valor se mantiene o se invierte:

  • Si se aplica un número par de veces, el valor original se conserva.
  • Si se aplica un número impar de veces, el valor se invierte.
valor = True
print(not not valor)       # True
print(not not not valor)   # False

Precedencia de los operadores lógicos:

Python evalúa los operadores lógicos en el siguiente orden de precedencia (de mayor a menor):

  • not
  • and
  • or

Esto significa que en una expresión sin paréntesis, not se evalúa primero, luego and, y finalmente or.

Ejemplo sin paréntesis:
resultado = True or False and False
# Primero: False and False → False
# Luego: True or False → True
print(resultado)  # True

Usar paréntesis: puede cambiar el orden de evaluación y mejorar la legibilidad:

resultado = (True or False) and False  # True and False → False
print(resultado)  # False

Valores equivalentes a booleanos:

En Python, no solo se utilizan True y False para representar valores lógicos. Algunos otros valores también son tratados como booleanos:

  • Se consideran Falsos: 0, 0.0, '' (cadena vacía), [], {}, None
  • Todo lo demás es considerado Verdadero.
Ejemplo:
if 0:
    print("Esto no se imprime")

if "Hola":
    print("Esto sí se imprime")