Operadores lógicos
Combine condições usando and, or e not, como decisões com mais de uma regra.
No dia a dia, raramente tomamos decisões baseadas em apenas uma regra simples. A vida real é um pouco mais cheia de condições.
Por exemplo:
- Para eu fazer uma viagem internacional, preciso ter passaporte E passagem comprada.
- Para eu ganhar desconto no cinema, preciso ser estudante OU ter menos de 12 anos.
- Se o alarme do carro NÃO estiver ativado, o carro está vulnerável.
Na programação, nós combinamos várias perguntas usando os operadores lógicos. No Python, eles são escritos de forma muito legível, usando palavras em inglês: and (e), or (ou) e not (não).
Os Três Operadores Lógicos
1. O operador and (E)
O operador and exige que todas as condições sejam verdadeiras ao mesmo tempo para que o resultado final seja True. Se apenas uma delas for falsa, tudo vira False.
Imagine que o fiscal de voo pergunta: "Você tem passaporte? E tem a passagem?". Se você tiver apenas um deles, você não embarca!
tem_passaporte = True
tem_passagem = False
pode_viajar = tem_passaporte and tem_passagem
print(pode_viajar) # Mostra: False (porque falta a passagem!)
tem_passaporte = True
tem_passagem = True
pode_viajar = tem_passaporte and tem_passagem
print(pode_viajar) # Mostra: True
2. O operador or (OU)
O operador or é mais generoso. Ele exige que pelo menos uma das condições seja verdadeira para que o resultado seja True. Ele só retorna False se todas as condições forem falsas.
Imagine que você vai a uma lanchonete e o atendente diz: "Aceitamos Pix ou Cartão". Se você tiver Pix, compra. Se tiver Cartão, compra. Se tiver ambos, também compra. Você só passa fome se não tiver nenhum dos dois.
tem_pix = True
tem_cartao = False
consegue_pagar = tem_pix or tem_cartao
print(consegue_pagar) # Mostra: True (porque pelo menos uma das opções é verdadeira!)
tem_pix = False
tem_cartao = False
consegue_pagar = tem_pix or tem_cartao
print(consegue_pagar) # Mostra: False
3. O operador not (NÃO)
O operador not funciona como um inversor. Ele simplesmente inverte o valor lógico: se algo é verdadeiro, ele transforma em falso; se é falso, transforma em verdadeiro.
Por exemplo, se o interruptor está desligado (False), o not faz a luz acender (True).
ligado = False
print(not ligado) # Mostra: True, o interruptor está ligado!
ligado = True
print(not ligado) # Mostra: False, o interruptor está desligado!
Tabela verdade
Imagine que você comprou um jogo de tabuleiro novo e ele vem com um manual de instruções rápido na última página. Esse manual tem uma tabelinha simples que mostra todas as jogadas possíveis e qual é o resultado de cada uma delas.
A Tabela Verdade é exatamente isso: ela é um manual de regras lógicas.
Como na lógica nós só temos duas "peças" para jogar (o True e o False), se tivermos duas condições na mesa, só existem 4 combinações possíveis de jogadas no universo inteiro:
- As duas peças são True (Verdadeiro).
- A primeira é True e a segunda é False (Falso).
- A primeira é False e a segunda é True.
- As duas são False.
A tabela verdade é uma representação visual que mostra o resultado dessas 4 jogadas para cada operador lógico:
Se a regra do jogo for o and (E):
| Valor 1 | Valor 2 | Resultado | Por quê? |
|---|---|---|---|
| True | True | True | Ambos são verdadeiros, então a combinação é verdadeira |
| True | False | False | Ao menos um é falso, então a combinação é falsa |
| False | True | False | Ao menos um é falso, então a combinação é falsa |
| False | False | False | Ambos são falsos, então a combinação é falsa |
Se a regra do jogo for o or (OU):
| Valor 1 | Valor 2 | Resultado | Por quê? |
|---|---|---|---|
| True | True | True | Ambos são verdadeiros, então a combinação é verdadeira |
| True | False | True | Ao menos um é verdadeiro, então a combinação é verdadeira |
| False | True | True | Ao menos um é verdadeiro, então a combinação é verdadeira |
| False | False | False | Ambos são falsos, então a combinação é falsa |
Vamos praticar um pouco:
# --- and ---
print(10 > 5 and 5 > 3)
# 10 > 5 = True
# 5 > 3 = True
# True and True = True
print(10 > 5 and 5 > 7)
# 10 > 5 = True
# 5 > 7 = False
# True and False = False
print(10 > 12 and 5 > 2)
# 10 > 12 = False
# 5 > 2 = True
# False and True = False
print(10 > 12 and 5 > 10)
# 10 > 12 = False
# 5 > 10 = False
# False and False = False
print(10 > 2 and 5 > 1 and 3 == 3)
# 10 > 2 = True
# 5 > 1 = True
# 3 == 3 = True
# True and True and True = True
print(10 > 12 and 5 > 1 and 3 == 3)
# 10 > 2 = False
# 5 > 1 = True
# 3 == 3 = True
# False and True and True = False
# Basta um False para o resultado ser False!
# --- or ---
print(10 > 5 or 5 > 3)
# 10 > 5 = True
# 5 > 3 = True
# True or True = True
print(10 > 5 or 5 > 7)
# 10 > 5 = True
# 5 > 7 = False
# True or False = True
print(10 > 12 or 5 > 2)
# 10 > 12 = False
# 5 > 2 = True
# False or True = False
print(10 > 12 or 5 > 10)
# 10 > 12 = False
# 5 > 10 = False
# False or False = False
print(10 > 2 or 5 > 1 or 3 == 3)
# 10 > 2 = True
# 5 > 1 = True
# 3 == 3 = True
# True or True or True = True
print(10 > 12 or 5 > 7 or 3 == 3)
# 10 > 12 = False
# 5 > 7 = False
# 3 == 3 = True
# False or False or True = True
# Basta um True para o resultado ser True!
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- Operadores lógicos servem para combinar várias comparações em uma única decisão.
- O operador
andprecisa de todas as condições corretas (True) para retornar verdadeiro. - O operador
orprecisa de pelo menos uma condição correta para retornar verdadeiro. - O operador
notinverte o valor lógico atual. - Em Python, usamos as palavras em inglês
and,orenotescritas em minúsculo.