Estruturas de Controle: if, elif e else
Dominando o Python em 1 Ano
Artigo 04 — Estruturas de Controle: if, elif e else
Prof. Ricardo Matos Módulo 1 · Fundamentos da Linguagem · Artigo 4 de 6
Introdução
Um programa que executa sempre as mesmas instruções na mesma ordem tem utilidade limitada. A capacidade de tomar decisões — executar um bloco de código ou outro dependendo de uma condição — é o que torna os programas verdadeiramente úteis. Em Python, isso é feito com as estruturas if, elif e else.
A Estrutura if
A forma mais simples de controle de fluxo:
temperatura = 38.5
if temperatura > 37.5:
print("Febre detectada.")
print("Consulte um médico.")
Dois detalhes importantes da sintaxe Python:
- A condição não precisa de parênteses (embora sejam permitidos)
- O bloco de código é delimitado por indentação — convencionalmente 4 espaços. Não há chaves
{}como em C, Java ou JavaScript
Se a condição for False, o bloco é ignorado e a execução continua após ele.
if e else
Para executar um bloco alternativo quando a condição é falsa:
idade = 16
if idade >= 18:
print("Acesso permitido.")
else:
print("Acesso negado. Você é menor de idade.")
if, elif e else
Quando há mais de duas possibilidades, use elif (contração de "else if"):
nota = 75
if nota >= 90:
print("Conceito A")
elif nota >= 80:
print("Conceito B")
elif nota >= 70:
print("Conceito C")
elif nota >= 60:
print("Conceito D")
else:
print("Reprovado")
Python avalia as condições de cima para baixo e executa apenas o primeiro bloco cuja condição seja verdadeira. Os demais são ignorados.
Condições Compostas
É comum combinar múltiplas condições em um único if:
salario = 5000
tempo_empresa = 3
if salario > 3000 and tempo_empresa >= 2:
print("Elegível para promoção.")
# Verificando faixas
valor = 150
if 100 <= valor <= 200:
print("Valor dentro da faixa esperada.")
A notação 100 <= valor <= 200 é um encadeamento de comparações exclusivo do Python — muito mais legível do que valor >= 100 and valor <= 200.
Valores Truthy e Falsy
Em Python, qualquer valor pode ser avaliado em um contexto booleano. Alguns valores são considerados "falsos" por natureza:
# Valores Falsy — avaliados como False
False
None
0
0.0
"" # string vazia
[] # lista vazia
{} # dicionário vazio
() # tupla vazia
Tudo o que não estiver nessa lista é considerado True (Truthy). Isso permite escrever condições mais expressivas:
nome = input("Digite seu nome: ")
if nome:
print(f"Olá, {nome}!")
else:
print("Nenhum nome foi digitado.")
lista_de_tarefas = []
if lista_de_tarefas:
print("Você tem tarefas pendentes.")
else:
print("Nenhuma tarefa pendente.")
O Operador Ternário
Python permite escrever um if/else simples em uma única linha — chamado de expressão condicional ou operador ternário:
idade = 20
status = "maior de idade" if idade >= 18 else "menor de idade"
print(status) # maior de idade
A sintaxe é: valor_se_verdadeiro if condição else valor_se_falso
Use com moderação — é elegante para casos simples, mas pode prejudicar a legibilidade em condições complexas.
if com in
Uma combinação muito comum em Python é usar in dentro de condições:
linguagens = ["Python", "JavaScript", "Go", "Rust"]
escolha = "Python"
if escolha in linguagens:
print(f"{escolha} está na lista.")
# Verificando caracteres em strings
email = "usuario@exemplo.com"
if "@" in email and "." in email:
print("Formato de e-mail válido.")
else:
print("E-mail inválido.")
Aninhamento de if
É possível colocar um if dentro de outro — chamado de if aninhado:
tem_conta = True
saldo = 1500
valor_saque = 500
if tem_conta:
if saldo >= valor_saque:
saldo -= valor_saque
print(f"Saque realizado. Saldo restante: R$ {saldo}")
else:
print("Saldo insuficiente.")
else:
print("Você não possui conta cadastrada.")
Aninhamento excessivo dificulta a leitura. Uma boa prática é usar cláusulas de guarda — retornando ou encerrando cedo quando uma condição não é atendida:
def realizar_saque(tem_conta, saldo, valor):
if not tem_conta:
print("Sem conta cadastrada.")
return
if saldo < valor:
print("Saldo insuficiente.")
return
saldo -= valor
print(f"Saque realizado. Saldo: R$ {saldo}")
Exemplo Completo: Classificador de IMC
peso = float(input("Digite seu peso (kg): "))
altura = float(input("Digite sua altura (m): "))
imc = peso / altura ** 2
print(f"\nSeu IMC é: {imc:.2f}")
if imc < 18.5:
print("Classificação: Abaixo do peso")
elif imc < 25.0:
print("Classificação: Peso normal")
elif imc < 30.0:
print("Classificação: Sobrepeso")
elif imc < 35.0:
print("Classificação: Obesidade grau I")
elif imc < 40.0:
print("Classificação: Obesidade grau II")
else:
print("Classificação: Obesidade grau III")
Resumo
ifexecuta um bloco apenas se a condição for verdadeiraelifencadeia condições alternativaselsecaptura todos os casos não cobertos pelas condições anteriores- Indentação delimita os blocos — não há chaves
- Valores falsy:
False,None,0,"",[],{},() - O operador ternário permite
if/elseem uma linha para casos simples - Evite aninhamento excessivo — prefira cláusulas de guarda
Referências e Leituras Complementares
- Estruturas de controle — documentação oficial — https://docs.python.org/3/tutorial/controlflow.html
- Expressões condicionais (PEP 308) — https://peps.python.org/pep-0308/
- Truthy e Falsy em Python — https://docs.python.org/3/library/stdtypes.html#truth-value-testing
- MATTHES, Eric. Python Crash Course. 3. ed. No Starch Press, 2023. Cap. 5.
- LUTZ, Mark. Learning Python. 5. ed. O'Reilly Media, 2013. Cap. 12.
- HUNT, John. A Beginners Guide to Python 3 Programming. Springer, 2019. Cap. 7.
Prof. Ricardo Matos — Dominando o Python em 1 Ano · Artigo 04 de 52 Próximo: Artigo 05 — Laços de Repetição: for e while
you asked
Sim