Módulo 7 - Condições com if, elif e else
Usando o elif: várias faixas de decisão
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Encadear if, elif e else numa escada de decisão.
- Entender que o Python para no primeiro True e ignora o resto.
- Ordenar as condições da mais restritiva para a mais aberta.
- Usar o else final como o caso que sobra.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Usando o elif: várias faixas de decisão.
Os objetivos desta aula. Encadear if, elif e else numa escada de decisão. Entender que o Python para no primeiro True e ignora o resto. Ordenar as condições da mais restritiva para a mais aberta. Usar o else final como o caso que sobra.
Veja o essencial, parte por parte.
Quando sim ou não não basta. O elif testa uma nova condição quando as anteriores deram False: é o senão, se do Python.
A ordem das condições decide o resultado. Faixas de maior ou igual (>=): comece do valor mais ALTO e desça (9, depois 7, depois 5).
O else final é o resto. O último degrau merece atenção.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Quando sim ou não não basta
O if/else resolve perguntas de dois caminhos, mas o mundo adora perguntas de vários. A nota de uma prova pode render conceito A, B, C ou recuperação. Uma entrega pode estar adiantada, no prazo ou atrasada. Dava para resolver empilhando if/else um dentro do outro, mas o código viraria uma escadaria ilegível. O Python oferece a forma limpa: o elif, contração de else if, que encadeia quantas condições você precisar numa estrutura única.
nota = 8.5
if nota >= 9:
print("Conceito A")
elif nota >= 7:
print("Conceito B")
elif nota >= 5:
print("Conceito C")
else:
print("Recuperação")
# Saída:
# Conceito BA escada de notas. Com 8.5, o primeiro degrau dá False, o segundo dá True e a descida para ali.
Acompanhe a execução com a nota 8.5. O Python testa nota >= 9: False, desce um degrau. Testa nota >= 7: True. Executa o bloco do Conceito B e encerra a escada inteira, sem nem olhar as condições de baixo. Essa é a regra número um do elif: o primeiro True vence, e tudo depois dele é ignorado. Exatamente um bloco executa (ou nenhum, se não houver else e todas as condições falharem).
A ordem das condições decide o resultado
Como o primeiro True vence, trocar a ordem dos degraus muda o resultado, mesmo com as condições idênticas. É o bug mais traiçoeiro deste módulo, porque o programa roda sem erro nenhum e ainda assim responde errado. Veja a mesma escada de notas com os degraus invertidos, começando pela faixa mais baixa.
nota = 9.5
if nota >= 5: # 9.5 >= 5 é True: a descida para AQUI
print("Conceito C")
elif nota >= 7: # nunca é testado
print("Conceito B")
elif nota >= 9: # nunca é testado
print("Conceito A")
# Saída:
# Conceito C <- errado! Uma nota 9.5 merecia Conceito A.Bug de ordem: a condição mais aberta veio primeiro e engoliu todas as notas. O programa roda, mas responde errado.
A nota 9.5 satisfaz as três condições, mas só a primeira é testada: nota >= 5 dá True, o Conceito C aparece e a escada encerra. Nenhuma mensagem de erro, nenhum aviso, só um aluno excelente classificado na pior faixa. A regra prática para evitar isso: em faixas numéricas, ordene as condições da mais exigente para a menos exigente. Quem testa >= 9 antes de >= 7 garante que cada nota pare no degrau certo.
O else final é o resto
O último degrau merece atenção. O else final não testa nada: ele captura todo valor que escapou das condições de cima. Na escada de notas, ele pega as notas abaixo de 5 sem precisar escrever nota < 5. Isso é conveniente e perigoso na mesma medida: conveniente porque cobre até casos que você não previu; perigoso pelo mesmo motivo. Uma nota digitada errada, como 55, cairia no Conceito A da nossa escada, porque 55 >= 9 é True. Validar a entrada antes da escada resolve, e é exatamente o que a prática do módulo vai fazer.
| Estrutura | Quando usar | Quantos blocos rodam |
|---|---|---|
| if sozinho | Ação opcional: faz ou não faz | Zero ou um |
| if + else | Dois caminhos que se excluem | Exatamente um |
| if + elif + ... | Várias faixas, sem caso garantido | Zero ou um |
| if + elif + else | Várias faixas com o resto coberto | Exatamente um |
As quatro combinações de decisão do Python e a garantia de execução de cada uma.
Com essa tabela, você tem o mapa completo das decisões do Python. Não existe outra peça escondida: todo sistema de decisão que você encontrar em código profissional, por maior que seja, é combinação dessas quatro formas. O que muda com a experiência é a escolha da forma certa para cada situação e a ordem cuidadosa das condições. As duas próximas aulas cuidam dos detalhes finos que fazem essas estruturas funcionarem com dados de verdade.
Teste rápido
Numa escada if/elif/else com nota = 9.5, por que começar por if nota >= 5 dá resultado errado?
Perguntas frequentes
- Quantos elif uma escada pode ter?
- Quantos a lógica pedir; o Python não impõe limite. Na prática, escadas com muitos degraus (mais de seis ou sete) ficam difíceis de ler e costumam indicar que um dicionário ou uma função resolveria melhor, ferramentas que você conhece nos módulos 11 e 13.
- Qual a diferença entre vários if seguidos e uma escada com elif?
- Vários if são decisões independentes: todos são testados e vários blocos podem rodar. Na escada com elif, os degraus se excluem: o primeiro True executa e o resto é ignorado. Use if seguidos quando as situações podem acontecer juntas; use elif quando só uma resposta faz sentido por vez.
- O else é obrigatório no fim da escada?
- Não. Sem else, uma escada em que todas as condições falham simplesmente não executa bloco nenhum, e o programa segue. Inclua o else quando todo valor precisa de resposta, como na classificação de notas, em que nota baixa também merece retorno.
- Posso escrever elseif ou else if em Python?
- Não. A palavra é elif, escrita junta e em minúsculas. Outras linguagens usam else if (JavaScript, C) ou elseif (PHP), e quem chega delas tropeça aqui. No Python, elseif e else if na mesma linha geram SyntaxError.
- E se duas condições da escada forem verdadeiras ao mesmo tempo?
- Só a primeira delas executa, porque a escada para no primeiro True. Isso é um recurso, não um defeito: permite escrever faixas simples como nota >= 7 sem precisar de nota >= 7 and nota < 9, já que o degrau de cima capturou as notas maiores antes.
- Como testo se a minha escada está certa?
- Escolha um valor dentro de cada faixa e um valor exatamente na borda de cada condição (7.0 numa faixa nota >= 7, por exemplo), preveja a saída no papel e rode. Bordas são onde escadas erram: um > no lugar de >= muda o destino de quem tirou a nota exata.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.