Crear condiciones complejas con operadores lógicos (y, o no)

Completados

Sugerencia

Consulte la pestaña Texto e imágenes para obtener más detalles.

A veces, una sola condición no es suficiente para tomar una decisión. Es posible que quiera comprobar si dos cosas son verdaderas o si al menos una de ellas es cierta. Por ejemplo, es posible que tenga que comprobar si una cuenta está activa y financiada, o si un usuario es un administrador o moderador.

los operadores lógicos de Python permiten combinar varias condiciones en una expresión.

Los tres operadores lógicos

Operator Qué hace Example Result
and True solo si ambos lados son True True and False False
or True si al menos un lado es True True or False True
not Voltea un valor booleano not True False

Usar y (se deben cumplir todas las condiciones)

Use and cuando se cumplan todas las condiciones para ejecutar un bloque de código:

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("Entry granted.")
else:
    print("Entry denied.")

Output:

Entry granted.

Usar o (se debe cumplir al menos una condición)

Use or cuando una condición sea suficiente para ejecutar un bloque de código. En el lenguaje cotidiano, normalmente "o" significa "uno u otro, pero no ambos". Sin embargo, en Python, "o" significa "uno u otro, o ambos".

is_weekend = False
is_holiday = True

if is_weekend or is_holiday:
    print("The office is closed.")

Output:

The office is closed.

Usar no (invertir una condición)

El not operador invierte un valor booleano. Si la condición es True, se convierte en Falsey viceversa. Este operador es útil cuando se desea comprobar la ausencia de una condición.

is_logged_in = False

if not is_logged_in:
    print("Please log in to continue.")

Output:

Please log in to continue.

Operadores de combinación

Puede combinar and, ory not en una sola expresión. Use siempre paréntesis para agrupar las condiciones y facilitar la lectura del código:

score = 85
has_extra_credit = True
is_past_due = False

# Example: Pass if (Score is high OR extra credit is earned) AND the work isn't late
if (score >= 90 or has_extra_credit) and not is_past_due:
    print("Requirement met.")

Evitar errores de método abreviado

Al comparar una sola variable con varios valores, es posible que tenga la tentación de escribir algo parecido a esto:

# Incorrect: This code will not work as intended
if score == 90 or 100:
    print("You got an A!")

En este caso, Python evalúa score == 90 primero, que es True o False. A continuación, evalúa 100, que siempre Truees . Los números no cero y las cadenas no vacías siempre cuentan como True en Python. Como resultado, la condición siempre Truees , independientemente del valor de score. Compare siempre cada valor explícitamente:

# Correct: Each value is compared explicitly
if score == 90 or score == 100:
    print("You got an A!")