Estruturas de Seleção em Python: if, elif e else na prática | professorcomia.com.br
[SIS]ANO1C1B2S9  ·  1º Ano · Desenvolvimento de Sistemas · SEDUC-SP  ·  Aulas A1 – A4

Estruturas de Seleção em Python: if, elif e else do zero à prática real

Como ensinar decisão condicional no ensino médio técnico usando projetos com guia eleitoral, tabela periódica e jogo de adivinhação — quatro aulas em um único arco pedagógico.

>_ Python 3 { } Lógica de Programação ! 4 × 50 min ✓ AVA + Lab

Por que estruturas de seleção são o divisor de águas no aprendizado de programação?

Há um momento preciso em que o aluno deixa de ser um digitador de comandos e começa a pensar como programador: quando o programa passa a tomar decisões. Até ali, a sequência linear de instruções é suficiente — variável recebe valor, print exibe resultado. Simples, porém inerte. Sem condicionais, um programa é apenas uma receita de bolo sem nenhuma variação possível.

As estruturas de seleção — if, elif e else — são o mecanismo que transforma código em comportamento adaptativo. É a partir delas que surgem sistemas de consulta, jogos, validadores de entrada, classificadores de dados e toda a lógica de negócio que sustenta aplicações reais. Ensiná-las bem, na escola pública, com contexto significativo, é um dos investimentos pedagógicos de maior retorno no curso técnico em Desenvolvimento de Sistemas.

O custo real de não dominar condicionais no início do curso

O aluno que não consolida a lógica condicional nas primeiras semanas acumula passivo técnico ao longo de todo o curso. Estruturas de repetição, funções, manipulação de listas, tratamento de erros — todas dependem da capacidade de formular condições booleanas corretamente. O while é um if que se repete. O try/except é uma seleção baseada em tipo de erro. O polimorfismo, mais adiante, é uma forma de despacho condicional abstraído.

Na prática de laboratório, os sintomas são reconhecíveis: o aluno que escreve quatro if independentes onde deveria usar elif, gerando conflitos lógicos silenciosos; o que não aplica .lower() antes de comparar strings e não entende por que a letra “A” não é reconhecida como “a”; o que abandona o exercício do jogo de adivinhação porque não sabe importar o módulo random. Cada um desses bloqueios tem origem na mesma lacuna conceitual.

Como esta sequência de aulas opera dentro da realidade da escola pública

A série [SIS]ANO1C1B2S9 é composta por quatro aulas de 50 minutos cada, estruturadas em progressão de complexidade. As três primeiras constroem o repertório técnico — sintaxe, métodos de string, variáveis compostas — por meio de problemas contextualizados. A quarta aula recapitula e aplica tudo em dois projetos interativos de maior complexidade, introduzindo também o módulo random.

A infraestrutura necessária é mínima: computador com Python instalado ou acesso ao Replit via navegador, caderno para rascunhos e conexão à internet para referências. O modelo pedagógico é direto — exposição do conceito, demonstração de código comentado, atividade prática com entrega no AVA — o que viabiliza execução mesmo em laboratórios com recursos limitados. A resolução dos exercícios está estimada entre 15 e 30 minutos por desafio, respeitando o tempo real disponível após a instrução.

≡ definição técnica

Estrutura de seleção é um mecanismo de controle de fluxo que avalia uma expressão booleana e direciona a execução para blocos distintos de código conforme o resultado seja verdadeiro ou falso. Em Python, implementada pelos comandos if, elif e else.

if, elif e else: fundamento conceitual e diferenciação precisa

Os três comandos formam uma cadeia lógica exclusiva: apenas um bloco é executado por vez, o primeiro cuja condição se mostrar verdadeira. Compreender essa exclusividade é o ponto mais crítico — e mais frequentemente mal compreendido — do aprendizado inicial.

ComandoFunçãoCondição obrigatóriaQuantidade permitidaExecuta quando
ifInicia a cadeia condicional✓ simExatamente 1Condição for True
elifCondição alternativa encadeada✓ sim0 ou maisif anterior for False e sua condição for True
elseBloco padrão (fallback)— não0 ou 1Todas as condições anteriores forem False

A distinção entre múltiplos if independentes e uma cadeia if/elif/else é semântica e funcional. Com if independentes, todas as condições são avaliadas, gerando risco de múltiplos blocos serem executados ou de efeitos colaterais indesejados. Com elif, a avaliação cessa na primeira condição satisfeita — mais eficiente e semanticamente correto para condições mutuamente exclusivas.

Como estruturar o aprendizado: método em quatro etapas

[ ] método pedagógico — 4 etapas progressivas
1
Problema antes do código

Apresente o problema em linguagem natural antes de abrir o editor. “Como o programa sabe qual candidato exibir se o usuário digitou o número 2?” Forçar o raciocínio verbal antes da sintaxe reduz dependência cognitiva do teclado.

2
Pseudocódigo no caderno

Esboçar a estrutura decisória no papel antes de codificar. Quais condições? Qual ordem? Existe um fallback? O caderno físico rompe o ciclo de tentativa-e-erro cego no terminal.

3
Implementação incremental

Começar com um único if funcional. Depois acrescentar um elif. Testar. Depois o else. Testar novamente. Evitar o erro comum de escrever toda a cadeia de uma vez e depurar no escuro.

4
Testes com casos limite

Executar o programa com entrada válida, entrada inválida e entrada inesperada (número fora do intervalo, string onde se espera inteiro, letra maiúscula onde se espera minúscula). O else deve capturar todos os casos não mapeados.

Templates de código comentados — extraídos das aulas

Os quatro blocos a seguir correspondem aos exemplos trabalhados nas aulas A1 a A4. Cada um representa um nível de complexidade crescente: do mapeamento direto de letras, passando por variáveis estruturadas, até lógica de jogo com módulo externo.

Template A1 — Mapeamento de letras com lower()

alfabeto.py ▶ python alfabeto.py
# Recebe e normaliza a entrada do usuário
letra = input("Digite uma letra do alfabeto: ")
letra = letra.lower()   # normaliza para minúscula antes de comparar

# Cadeia de seleção: cada elif verifica uma letra
if letra == 'a':
    print("Avião")
elif letra == 'b':
    print("Bola")
elif letra == 'c':
    print("Carro")
elif letra == 'd':
    print("Dado")
elif letra == 'e':
    print("Elefante")
# ... restante do alfabeto seguindo o mesmo padrão ...
else:
    print("Não conheço uma palavra que comece com essa letra.")

Ponto técnico crítico: a chamada a .lower() deve ocorrer antes das comparações, não dentro delas. Isso garante que qualquer entrada do usuário — “A”, “a”, “A ” — seja normalizada uma única vez, centralizando a responsabilidade de padronização no início do fluxo.

Template A2 — Guia de candidatos com variáveis e input()

guia_eleitoral.py ▶ python guia_eleitoral.py
# Dados dos candidatos armazenados em variáveis
candidato1_numero  = 1
candidato1_nome    = "João"
candidato1_partido = "Partido A"
candidato1_vice    = "Maria"

candidato2_numero  = 2
candidato2_nome    = "Pedro"
candidato2_partido = "Partido B"
candidato2_vice    = "Ana"

# Leitura e conversão de tipo: string → inteiro
numero_candidato = int(input("Digite o número do candidato (1 ou 2): "))

# Seleção por número digitado
if numero_candidato == candidato1_numero:
    print("Candidato:", candidato1_nome)
    print("Partido:",   candidato1_partido)
    print("Vice:",      candidato1_vice)
elif numero_candidato == candidato2_numero:
    print("Candidato:", candidato2_nome)
    print("Partido:",   candidato2_partido)
    print("Vice:",      candidato2_vice)
else:
    print("Candidato não encontrado.")

Template A3 — Tabela periódica com if/elif/else

tabela_periodica.py ▶ python tabela_periodica.py
# Consulta de elementos químicos por sigla
sigla = input("Digite a sigla do elemento químico: ")

if sigla == "H":
    print("Número atômico: 1 | Nome: Hidrogênio | Massa: 1,008")
elif sigla == "He":
    print("Número atômico: 2 | Nome: Hélio | Massa: 4,003")
elif sigla == "Li":
    print("Número atômico: 3 | Nome: Lítio | Massa: 6,941")
elif sigla == "C":
    print("Número atômico: 6 | Nome: Carbono | Massa: 12,011")
elif sigla == "O":
    print("Número atômico: 8 | Nome: Oxigênio | Massa: 15,999")
elif sigla == "Fe":
    print("Número atômico: 26 | Nome: Ferro | Massa: 55,845")
# Desafio: completar com todos os 118 elementos
else:
    print("Elemento não encontrado na base de dados.")

Template A4 — Jogo de adivinhação com módulo random

adivinhacao.py ▶ python adivinhacao.py
import random

# Gera número secreto entre 1 e 100
numero_secreto = random.randint(1, 100)
tentativas      = 0
acertou         = False

while not acertou:
    palpite = int(input("Adivinhe o número (1–100): "))
    tentativas += 1

    if palpite < numero_secreto:
        print("O número secreto é maior.")
    elif palpite > numero_secreto:
        print("O número secreto é menor.")
    else:
        print(f"Correto! Tentativas: {tentativas}")
        acertou = True

Template A4 — Classificador de faixas etárias

classificador_idades.py ▶ python classificador_idades.py
idade = int(input("Digite sua idade: "))

if idade <= 12:
    print("Categoria: Criança")
elif idade <= 17:
    print("Categoria: Adolescente")
elif idade <= 64:
    print("Categoria: Adulto")
else:
    print("Categoria: Idoso")

Casos reais: do problema de sala ao projeto significativo

{ } caso real — escola pública · aula 2

Guia eleitoral interativo: o exercício da Aula 2 simula uma aplicação civic-tech real. O aluno não está apenas praticando sintaxe — está construindo um sistema de consulta funcional. A extensão proposta no roteiro (10 candidatos fictícios, com nome, partido, vice e cargo anterior) obriga o aluno a estruturar variáveis nomeadas de forma consistente, antecipar o crescimento da base de dados e perceber naturalmente a limitação de um sistema com variáveis isoladas — o que abre caminho para introdução de listas e dicionários nas aulas seguintes.

Conexão curricular: o tema eleitoral conecta Desenvolvimento de Sistemas com Ciências Humanas (eleições, representação política), gerando abertura para abordagem interdisciplinar dentro da proposta BNCC de competências transversais.

{ } caso real — escola pública · aula 3

Consultor de tabela periódica: o exercício da Aula 3 parte de um programa de demonstração com seis elementos e desafia o aluno a completá-lo com todos os 118. A escalabilidade explícita do desafio serve como motivação intrínseca e, ao mesmo tempo, como diagnóstico pedagógico: o aluno que completa os 118 casos com elif individual compreende a estrutura, mas também sente sua limitação — pavimentando o caminho para dicionários (dict) como estrutura de dados no próximo módulo. Há também uma ponte com o conteúdo de Química Ambiental, relevante para o contexto interdisciplinar do curso.


Métodos lower() e upper(): padronização de entrada como boa prática de engenharia

A Aula 1 introduz um conceito que vai muito além da sintaxe de string: a ideia de que a entrada do usuário deve ser normalizada antes de ser processada. Em sistemas reais, entradas inconsistentes são uma das principais fontes de bugs silenciosos. Um sistema de login que aceita “admin” mas rejeita “Admin” é um sistema mal construído.

MétodoConverte paraAfeta números/símbolosAltera a string originalUso típico
.lower()Minúsculas— não— não (nova string)Normalizar input antes de comparar
.upper()Maiúsculas— não— não (nova string)Exibir siglas, formatar saída

O padrão correto — demonstrado no código da Aula 1 — é aplicar .lower() imediatamente após o input(), armazenando o resultado na mesma variável. Isso concentra a normalização em um único ponto, tornando o restante do código mais legível e o comportamento do sistema mais previsível.

Módulo random: primeira extensão do ambiente Python

A Aula 4 marca uma transição importante no curso: o aluno sai do Python “puro” e importa pela primeira vez um módulo da biblioteca padrão. O módulo random é pedagogicamente ideal para essa estreia porque seu uso é imediato — import random seguido de random.randint(1, 100) — e o resultado é visível e lúdico.

O jogo de adivinhação combina três conceitos simultâneos: estrutura de repetição (while), estrutura de seleção (if/elif/else) e importação de módulo. A variável tentativas como contador e a flag booleana acertou introduzem padrões de design que reaparecerão em contextos mais complexos ao longo do curso.

? pause e responda — verificação de compreensão

Em Python, qual das afirmativas descreve corretamente o comportamento de uma cadeia if / elif / else?

  • A Todos os blocos são avaliados e executados em sequência, independentemente das condições.
  • B Apenas o primeiro bloco cuja condição for verdadeira é executado; os demais são ignorados.
  • C O bloco else é sempre executado, mesmo quando uma condição anterior for verdadeira. → distrator: confunde else com bloco de limpeza/finally
  • D O elif é obrigatório entre o if e o else. → distrator: elif é opcional

Expansão estratégica: além da aula — como transformar este conteúdo em ativo

→ frentes de expansão — médio e longo prazo
>_

Progressão do curso técnico

A cadeia if/elif/else é o fundamento direto para listas com iteração, dicionários como substituto de múltiplos elif e, posteriormente, programação orientada a objetos via polimorfismo. Documentar essa progressão no planejamento anual como ativo pedagógico rastreável.

Autoridade no blog

Esta série de quatro aulas gera quatro artigos individuais ou um guia consolidado ranqueável. O padrão de projeto “guia eleitoral” e “tabela periódica como banco de dados flat” são ângulos editoriais originais com potencial de referência em buscas educacionais.

{ }

Integração maker / robótica

Estruturas de seleção são o núcleo lógico de qualquer automação com Arduino ou micro:bit. O mapeamento letra-objeto da Aula 1 pode ser reimplementado como sorteador físico com LEDs ou display. Conectar o laboratório de programação ao espaço maker amplifica o significado do conteúdo.

Formação e multiplicação

O modelo pedagógico desta série — problema contextualizado, pseudocódigo no caderno, incremento progressivo, teste de casos limite — é replicável para qualquer conteúdo de lógica. Documentar como metodologia transferível para formação de outros professores do componente.

Síntese estrutural: as quatro aulas da série [SIS]ANO1C1B2S9 formam um arco completo de aprendizado condicional em Python. Da comparação de caracteres com normalização de string (A1) à consulta de dados com variáveis estruturadas (A2), do mapeamento de base científica escalável (A3) ao jogo com estado e módulo externo (A4) — cada aula amplia o repertório sem abandonar a lógica central: formular condições booleanas precisas e organizá-las em cadeias exclusivas e legíveis.

Perguntas frequentes sobre estruturas de seleção em Python

?01 Qual a diferença entre if, elif e else em Python?
O if avalia uma condição e executa o bloco se ela for verdadeira. O elif verifica uma condição alternativa quando a anterior é falsa — pode haver múltiplos elif encadeados. O else executa um bloco padrão quando nenhuma condição anterior foi satisfeita. Apenas um dos blocos é executado por vez.
?02 Para que servem os métodos lower() e upper() em Python?
lower() converte todos os caracteres alfabéticos de uma string para minúsculas; upper() converte para maiúsculas. Ambos retornam uma nova string sem alterar a original. São fundamentais para padronizar comparações — evitando que 'A' e 'a' sejam tratados como entradas diferentes.
?03 Como usar a função input() com estruturas de seleção em Python?
input() lê a entrada do usuário como string. Para comparações numéricas, converta com int() ou float(). Em seguida, use if/elif/else para avaliar o valor recebido e direcionar o fluxo do programa. Exemplo: numero = int(input('Digite: ')) seguido de if numero == 1: ...
?04 Como importar e usar o módulo random em Python?
Use import random no início do programa. Para gerar um inteiro aleatório em um intervalo, chame random.randint(1, 100). O número gerado pode ser armazenado em uma variável e comparado com a entrada do usuário via estruturas de seleção para implementar jogos e simulações.
?05 Por que o elif é preferível a múltiplos if independentes?
Com múltiplos if independentes, Python avalia todas as condições, mesmo que uma já tenha sido satisfeita, gerando risco de múltiplos blocos executarem ou de efeitos colaterais inesperados. Com elif, a cadeia é interrompida na primeira condição verdadeira — mais eficiente, semanticamente correto e com comportamento previsível para condições mutuamente exclusivas.

>_ Mais aulas, projetos e recursos para o ensino técnico

Acesse o blog para acompanhar a série completa de Desenvolvimento de Sistemas, projetos do laboratório de educação digital e materiais para robótica educacional e pensamento computacional na escola pública.

professorcomia.com.br →

Conclusão: o condicional como mudança de mentalidade pedagógica

Ensinar estruturas de seleção é, em última instância, ensinar o aluno a decompor decisões em condições verificáveis. Esse é um dos transferes mais valiosos que a programação oferece ao pensamento geral — a capacidade de tornar explícito aquilo que normalmente fica implícito no raciocínio cotidiano.

A progressão das quatro aulas desta série — do simples mapeamento de letras ao jogo com estado e módulo externo — demonstra que é possível construir complexidade crescente sem perder o contexto significativo. O aluno do ensino médio técnico em escola pública não precisa de exercícios artificiais para aprender lógica condicional. Precisa de problemas reais, bem dimensionados para o tempo disponível, com instruções claras de entrega e com desafios opcionais para quem vai além.

O professor que estrutura essas quatro aulas como um arco narrativo — não como quatro atividades isoladas — não apenas ensina Python. Ensina a pensar por condições. E esse aprendizado não fica na linguagem.

[ SIS ] ANO1 · C1B2S9 · A1–A4 // Estruturas de Seleção em Python · if · elif · else // professorcomia.com.br · diariodeumpoed.com.br // SEDUC-SP · Ensino Médio Técnico · Desenvolvimento de Sistemas

📘 Gostou do que viu aqui no laboratório? No Professor com IA eu mostro, passo a passo, como você também pode criar ferramentas assim — mesmo sem saber programar.