Criar condições complexas com operadores lógicos (e ou não)
Tip
Consulte a guia Texto e imagens para obter mais detalhes!
Às vezes, uma única condição não é suficiente para tomar uma decisão. Talvez você queira verificar se duas coisas são verdadeiras ou se pelo menos uma delas é verdadeira. Por exemplo, talvez seja necessário verificar se uma conta está ativa e financiada ou se um usuário é administrador ou moderador.
os operadores lógicos do Python permitem combinar várias condições em uma expressão.
Os três operadores lógicos
| Operador | O que faz | Example | Result |
|---|---|---|---|
and |
True
somente se ambos os lados estiverem True |
True and False |
False |
or |
True se pelo menos um lado for True |
True or False |
True |
not |
Inverte um valor booliano | not True |
False |
Uso e (todas as condições devem ser atendidas)
Use and quando todas as condições precisarem ser atendidas para executar um bloco 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 ou (pelo menos uma condição deve ser atendida)
Use or quando qualquer condição for suficiente para executar um bloco de código. No idioma cotidiano, geralmente "ou" significa "um ou outro, mas não ambos". No entanto, em Python, "ou" significa "um ou outro, ou ambos".
is_weekend = False
is_holiday = True
if is_weekend or is_holiday:
print("The office is closed.")
Output:
The office is closed.
Não usando (inverter uma condição)
O not operador inverte um valor booliano. Se a condição for True, ela se tornará Falsee vice-versa. Esse operador é útil quando você deseja verificar a ausência de uma condição.
is_logged_in = False
if not is_logged_in:
print("Please log in to continue.")
Output:
Please log in to continue.
Combinar operadores
Você pode combinar and, ore not em uma única expressão. Sempre use parênteses para agrupar condições e facilitar a leitura do 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 erros de atalho
Ao comparar uma única variável com vários valores, você pode ser tentado a escrever algo assim:
# Incorrect: This code will not work as intended
if score == 90 or 100:
print("You got an A!")
Nesse caso, Python avalia score == 90 primeiro, que é ou TrueFalse. Em seguida, ele é avaliado 100, o que é sempre True. Números diferentes de zero e cadeias de caracteres sem zero sempre contam como True em Python. Como resultado, a condição é sempre True, independentemente do valor de score. Sempre compare cada valor explicitamente:
# Correct: Each value is compared explicitly
if score == 90 or score == 100:
print("You got an A!")