Estruturas Condicionais
O que são condicionais?
Condicionais permitem que o programa tome decisões. O if funciona como uma portaria: só deixa o código passar se a condição for verdadeira. Com elif você testa alternativas e com else cobre o caso em que nada deu certo.
Em Python, o que define um bloco de código e a indentação (4 espaços). Nada de chaves como em outras linguagens.
if simples
A forma mais básica: se a condição for verdadeira, executa o bloco. Senao, pula:
idade = 18
if idade >= 18:
print("Maior de idade") # → Maior de idade
print("Pode tirar carteira")
print("Fim") # sempre executa (está fora do if)
Tudo que está indentado (4 espaços para dentro) pertence ao if. A linha print("Fim") está fora -- roda sempre.
if / else
Quando você quer tratar os dois caminhos -- verdadeiro e falso:
idade = 15
if idade >= 18:
print("Maior de idade")
else:
print("Menor de idade") # → Menor de idade
if / elif / else
Quando existem várias possibilidades, use elif (abreviação de "else if"):
nota = 8.5
if nota >= 9:
conceito = "A"
elif nota >= 7:
conceito = "B"
elif nota >= 5:
conceito = "C"
elif nota >= 3:
conceito = "D"
else:
conceito = "E"
print(f"Nota: {nota} - Conceito: {conceito}")
# → Nota: 8.5 - Conceito: B
Python avalia de cima para baixo e para no primeiro verdadeiro. 8.5 >= 9? Não. 8.5 >= 7? Sim -- entra ali e ignora o resto.
A ordem importa!
Se você colocar a condição mais genérica primeiro, ela "engole" as mais específicas:
nota = 9.5
# Errado -- ordem genérica primeiro
if nota >= 5:
print("C") # 9.5 >= 5 é True, para aqui!
elif nota >= 9:
print("A") # nunca chega aqui
# Correto -- do mais específico ao mais generico
if nota >= 9:
print("A") # → A
elif nota >= 7:
print("B")
elif nota >= 5:
print("C")
Indentacao
Em Python, indentação não é estetica -- e obrigatória. Ela define o que pertence a cada bloco:
if True:
print("Dentro do if") # 4 espaços = pertence ao if
print("Ainda dentro") # 4 espaços = pertence ao if
print("Fora do if") # 0 espaços = fora
Condicionais aninhados vs and
Você pode aninhar if dentro de if, mas na maioria dos casos and fica mais limpo:
idade = 20
tem_carteira = True
# Aninhado (funciona, mas fica fundo)
if idade >= 18:
if tem_carteira:
print("Pode dirigir")
# Simplificado com and
if idade >= 18 and tem_carteira:
print("Pode dirigir") # → Pode dirigir
Erros comuns
# Esquecer os dois-pontos
# if idade >= 18 # SyntaxError!
# Usar = em vez de ==
# if idade = 18: # SyntaxError! (= e atribuição, == e comparação)
# Bloco vazio? Use pass
if idade >= 18:
pass # TODO: implementar depois
Exemplo prático: classificador de faixa etaria
nome = input("Nome: ")
idade = int(input("Idade: "))
if idade < 0:
faixa = "Idade inválida"
elif idade <= 12:
faixa = "Crianca"
elif idade <= 17:
faixa = "Adolescente"
elif idade <= 59:
faixa = "Adulto"
else:
faixa = "Idoso"
print(f"{nome}, {idade} anos - {faixa}")
# Nome: Ana
# Idade: 22
# → Ana, 22 anos - Adulto
Cada faixa e exclusiva -- só uma delas executa. O else no final pega todos acima de 59.
Referências
- if Statements -- documentação oficial
- Conditional Statements in Python -- guia no Real Python
- Curso Python #11 - Condicoes (if/elif/else) -- 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.