Pular para o conteúdo

A primeira escola especializada em tecnologia do Alto Solimões, com corpo técnico formado na área.

Módulo 2: Fundamentos da Linguagem

Operadores Lógicos e Ternário

Combinando condições com and, or, not 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

OperadorO que fazExemploResultado
andAmbos TrueTrue and FalseFalse
orPelo menos um TrueTrue or FalseTrue
notInvertenot TrueFalse
ternárioif 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

Testa o que você leu

4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.

Pergunta 1 de 4
Qual é o operador lógico E em Python?