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:

  1. As duas peças são True (Verdadeiro).
  2. A primeira é True e a segunda é False (Falso).
  3. A primeira é False e a segunda é True.
  4. 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 and precisa de todas as condições corretas (True) para retornar verdadeiro.
  • O operador or precisa de pelo menos uma condição correta para retornar verdadeiro.
  • O operador not inverte o valor lógico atual.
  • Em Python, usamos as palavras em inglês and, or e not escritas em minúsculo.