Operadores Lógicos e Ternário
O que são operadores lógicos?
Operadores lógicos combinam condições. Em vez de símbolos como && e ||, Python usa palavras: and, or e not. Mais fácil de ler, mais fácil de entender.
and -- os dois precisam ser True
and só retorna True se ambas as condições forem verdadeiras:
print(True and True) # → True
print(True and False) # → False
print(False and True) # → False
print(False and False) # → False
Na prática:
idade = 25
tem_carteira = True
pode_alugar = idade >= 21 and tem_carteira
print(f"Pode alugar: {pode_alugar}") # → Pode alugar: True
or -- pelo menos um precisa ser True
or retorna True se qualquer uma das condições for verdadeira:
print(True or False) # → True
print(False or True) # → True
print(False or False) # → False
Na prática:
idade = 25
tem_desconto = idade < 18 or idade >= 65
print(f"Desconto: {tem_desconto}") # → Desconto: False
not -- inverte o valor
not simplesmente inverte: True vira False e vice-versa.
print(not True) # → False
print(not False) # → True
saldo = 1500.0
no_verde = not (saldo < 0)
print(f"No verde: {no_verde}") # → No verde: True
Curto-circuito
Python é esperto: se já sabe o resultado, ele para de avaliar o resto da expressao. Isso se chama curto-circuito.
# and para no primeiro False
divisor = 0
if divisor != 0 and 10 / divisor > 2:
print("OK")
# divisor != 0 já é False, então 10/divisor NÃO é avaliado (evita erro!)
# or para no primeiro True
nome = "" or "Anonimo"
print(nome) # → Anonimo
nome = "Carlos" or "Anonimo"
print(nome) # → Carlos
Detalhe importante: and e or retornam o valor real, não só True/False:
print(1 and 2 and 3) # → 3
print(1 and 0 and 3) # → 0
print(0 or "" or "Olá") # → Olá
Operador ternário
O ternário é um atalho para escrever um if/else em uma linha só. A sintaxe e: valor_se_true if condição else valor_se_false.
idade = 20
status = "maior" if idade >= 18 else "menor"
print(status) # → maior
nota = 7.5
resultado = "Aprovado" if nota >= 7 else "Reprovado"
print(resultado) # → Aprovado
Funciona dentro de f-strings também:
saldo = -50
print(f"Status: {'positivo' if saldo >= 0 else 'negativo'}")
# → Status: negativo
# Singular/plural
qtd = 1
print(f"{qtd} item" if qtd == 1 else f"{qtd} itens")
# → 1 item
Tabela resumo
| Operador | O que faz | Exemplo | Resultado |
|---|---|---|---|
and | Ambos True | True and False | False |
or | Pelo menos um True | True or False | True |
not | Inverte | not True | False |
| ternário | if inline | "sim" if True else "não" | "sim" |
Exemplo prático: validação de formulário
nome = input("Nome: ")
idade_str = input("Idade: ")
email = input("Email: ")
nome_valido = len(nome) >= 2
idade_valida = idade_str.isdigit() and int(idade_str) >= 18
email_valido = "@" in email and "." in email
tudo_ok = nome_valido and idade_valida and email_valido
status = "Cadastro aprovado!" if tudo_ok else "Dados inválidos."
print(status)
Cada validação é uma condição simples. O and combina todas no final. O ternário decide a mensagem.
Referências
- Boolean Operations -- documentação oficial
- Conditional Expressions -- operador ternário na doc oficial
- Curso Python #10 - Condicoes -- Curso em Video, PT-BR
Testa o que você leu
4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.