Estruturas de Seleção em Python: if, elif e else em quatro aplicações reais
Da lógica alfabética à consulta eleitoral, do universo químico aos jogos interativos — como o controle de fluxo transforma algoritmos lineares em sistemas com tomada de decisão real.
Um programa que só executa instruções em sequência linear, sem avaliar condições, não responde ao mundo real. Ele não distingue uma entrada válida de um erro, não reage ao que o usuário digita, não toma decisões. É código que executa — mas não pensa. A semana 9 resolve esse problema de raiz.
O momento em que um estudante escreve seu primeiro if e vê o programa escolher caminhos diferentes com base em uma entrada — esse é o instante em que a programação deixa de ser cópia de sintaxe e passa a ser raciocínio computacional aplicado. Estruturas de seleção são o núcleo desse salto.
Ao longo de quatro aulas de 50 minutos, a turma percorre um arco progressivo: parte da comparação de uma letra do alfabeto, avança para um sistema de consulta eleitoral com múltiplos candidatos, aplica a lógica a um banco de dados da tabela periódica e finaliza com um jogo de adivinhação que incorpora geração aleatória. Cada aula introduz um nível de complexidade nova sobre a mesma estrutura central: if, elif, else.
O que falha quando a lógica condicional não está consolidada?
No laboratório, os sintomas são reconhecíveis: o aluno testa apenas o caminho feliz e o programa quebra quando recebe uma entrada inesperada. Ele escreve if letra == 'A' sem aplicar lower() e não entende por que o bloco nunca executa quando o usuário digita em minúscula. Usa um único if onde deveria usar elif e todas as condições são avaliadas independentemente, gerando saídas múltiplas para uma única entrada.
O custo de não dominar esse conceito não é apenas técnico: o estudante perde a capacidade de modelar qualquer lógica de negócio. Sistema de cadastro, calculadora de IMC, classificador de notas, validador de formulário — todos dependem de decisão condicional bem estruturada. Sem esse fundamento, o código que o aluno produz é frágil por definição.
Como essa semana se encaixa no curso técnico?
A Semana 9 do Bloco 2 ocupa uma posição estratégica na progressão do curso: os estudantes já dominam variáveis, entrada de dados com input() e impressão com print(). A estrutura de seleção é o primeiro mecanismo de controle de fluxo — o pré-requisito obrigatório para laços de repetição, funções e estruturas de dados que virão nas semanas seguintes.
Na escola pública, o contexto impõe restrições reais: laboratório compartilhado, heterogeneidade de ritmos, e tempo de aula que precisa cobrir conceito, exemplo e prática na mesma sessão de 50 minutos. O design das quatro aulas respeita essas restrições — cada aula abre com um problema concreto e fecha com atividade prática entregável no AVA, garantindo evidência de aprendizagem mesmo em condições adversas de infraestrutura.
Estrutura de seleção é um mecanismo de controle de fluxo que avalia uma expressão booleana e direciona a execução do programa para blocos de código distintos com base no resultado — verdadeiro ou falso — dessa avaliação.
Fundamento conceitual: if, elif, else e os métodos auxiliares
Em Python, a estrutura de seleção não é uma instrução isolada — ela é uma família de três construções que trabalham em cadeia, cada uma com papel preciso:
| Construção | Papel | Ocorrência | Exemplo |
|---|---|---|---|
if condição: |
Primeira verificação — executa o bloco se a condição for verdadeira | Obrigatório · exatamente 1 | if nota >= 7: |
elif condição: |
Verificação alternativa — só avaliada quando todos os if/elif anteriores são falsos |
Opcional · 0 a N vezes | elif nota >= 5: |
else: |
Captura todos os casos restantes — executa quando nenhuma condição anterior foi satisfeita | Opcional · no máximo 1 (sempre ao final) | else: |
Métodos de string e funções auxiliares da semana
| Recurso | Função | Retorno | Por que importa |
|---|---|---|---|
lower() |
Converte todos os caracteres para minúsculo | Nova string · não altera original | Elimina problemas de comparação por capitalização |
upper() |
Converte todos os caracteres para maiúsculo | Nova string · não altera original | Padroniza entradas para comparação consistente |
input() |
Lê dado digitado pelo usuário no console | Sempre string | Torna o programa interativo e dinâmico |
int() |
Converte string para inteiro | int | Necessário para comparações numéricas com dados do usuário |
random.randint(a, b) |
Gera inteiro aleatório entre a e b (inclusive) | int | Permite jogos e simulações com imprevisibilidade controlada |
Ponto crítico de compreensão: lower() e upper() não modificam a string original — retornam uma nova string. Por isso, o padrão correto é sempre dado = dado.lower() (reatribuição à mesma variável) antes da cadeia condicional.
Progressão da semana: quatro aplicações, uma estrutura
Jogo do alfabeto
Sintaxe básica de if/elif/else. Métodos lower() e upper(). Fluxo completo: entrada → normalização → comparação → saída.
Guia eleitoral
Múltiplas variáveis por entidade. Comparação numérica com int(input()). Dados estruturados em variáveis simples — candidato, partido, vice.
Tabela periódica
Sigla como chave de acesso a dados científicos. Contexto interdisciplinar com Química. Desafio de escala: todos os elementos.
→ aprofunda: múltiplos campos por entradaJogo e classificador
Módulo random. Recapitulação de if/elif/else. Jogo de adivinhação e classificador de idades — lógica de negócio aplicada.
Como a sequência pedagógica foi estruturada?
Cada aula abre com um enunciado aplicado — não “aprenda if” mas “crie um programa que identifique um objeto pela letra inicial”. A sintaxe é apresentada como resposta a uma necessidade real, não como abstração.
Antes de qualquer comparação, o dado recebido via input() é convertido ao formato esperado — lower() para letras, int() para números. Isso protege a cadeia condicional de falhas silenciosas por capitalização ou tipo incompatível.
A cadeia condicional é construída progressivamente: primeiro o if para o caso principal, depois os elif para alternativas específicas, e o else como tratador de exceção — captura qualquer entrada não prevista e exibe mensagem de erro compreensível.
Após escrever o código, o aluno deve testar entradas válidas, entradas em caixa diferente (maiúscula/minúscula) e entradas inválidas. O comportamento do else é verificado explicitamente.
O estudante é desafiado a ampliar o programa: mais letras, mais candidatos, mais elementos químicos. Esse movimento de escala força a compreensão do padrão repetitivo do elif e abre a pergunta pedagógica natural: “existe uma forma mais eficiente de fazer isso?” — preparando o terreno para estruturas de dados na próxima unidade.
O código produzido é submetido no ambiente virtual de aprendizagem. A entrega é parte integrante da aula — não uma tarefa para casa, mas o fechamento do ciclo: problema → código → teste → entrega.
Templates de código: os quatro programas da semana
>_ Aula 1 — Alfabeto com if/elif/else + lower()
# A1 — Jogo do alfabeto · [SIS]ANO1C1B2S9A1 # Recebe uma letra e exibe o objeto correspondente letra = input("Digite uma letra do alfabeto: ") # Normaliza para minúsculo — elimina erro por capitalização letra = letra.lower() # Cadeia condicional: uma condição por 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") elif letra == 'f': print("Foca") elif letra == 'g': print("Gato") elif letra == 'h': print("Hipopótamo") # ... continuar com as demais letras até 'z' ... else: print("Não conheço uma palavra que comece com essa letra.")
>_ Aula 2 — Sistema de consulta eleitoral
# A2 — Guia eleitoral · [SIS]ANO1C1B2S9A2 # Variáveis por candidato — dados estruturados em variáveis simples 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" # Converte entrada para inteiro — input() sempre retorna string numero_candidato = int(input("Digite o número do candidato (1 ou 2): ")) # Comparação numérica — sem lower(), pois o dado já é inteiro 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.")
>_ Aula 3 — Consulta à tabela periódica
# A3 — Tabela periódica · [SIS]ANO1C1B2S9A3 # Sigla como chave de acesso a dados científicos # Desafio: expandir com todos os elementos da tabela sigla = input("Digite a sigla do elemento químico: ") # Padroniza a entrada: primeira letra maiúscula, demais minúsculas sigla = sigla.capitalize() # Cada elemento: número atômico, nome e massa atômica if sigla == "H": print("Número atômico: 1") print("Nome: Hidrogênio") print("Massa: 1,008 u") elif sigla == "He": print("Número atômico: 2") print("Nome: Hélio") print("Massa: 4,003 u") elif sigla == "Li": print("Número atômico: 3") print("Nome: Lítio") print("Massa: 6,941 u") elif sigla == "O": print("Número atômico: 8") print("Nome: Oxigênio") print("Massa: 15,999 u") elif sigla == "C": print("Número atômico: 6") print("Nome: Carbono") print("Massa: 12,011 u") # ... expandir com os 118 elementos da tabela periódica ... else: print("Elemento não encontrado. Verifique a sigla digitada.")
>_ Aula 4 — Jogo de adivinhação + classificador de idades
# A4 — Jogo de adivinhação · [SIS]ANO1C1B2S9A4 # Módulo random: geração de número secreto entre 1 e 100 import random # Gera o número secreto aleatoriamente numero_secreto = random.randint(1, 100) tentativas = 0 print("Adivinhe o número entre 1 e 100!") acertou = False while not acertou: palpite = int(input("Seu palpite: ")) tentativas += 1 if palpite < numero_secreto: print("O número secreto é MAIOR.") elif palpite > numero_secreto: print("O número secreto é MENOR.") else: print("Parabéns! Você acertou em", tentativas, "tentativas.") acertou = True
# A4 — Classificador de idades · [SIS]ANO1C1B2S9A4 # Estrutura de seleção aplicada a categorias etárias 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")
Como essas estruturas aparecem fora do laboratório?
Sistemas de consulta: de jogos a cadastros reais
O mesmo padrão do jogo Stop ou do guia eleitoral está presente em qualquer sistema de consulta por código ou identificador: caixa eletrônico que identifica tipo de conta pelo número, sistema de matrícula escolar que retorna dados do aluno pelo RA, cardápio digital que exibe ingredientes pelo código do item. O if/elif/else com dados estruturados em variáveis simples é a versão pedagogicamente acessível de algo que, em produção, usaria dicionários ou banco de dados.
A tabela periódica como banco de dados estruturado
O exercício da Aula 3 é simultaneamente um programa Python e uma revisão de Química. Ao mapear sigla → número atômico + nome + massa, o estudante internaliza que dados científicos podem ser acessados computacionalmente por chave. A integração curricular com Química é explícita e operacional — não decorativa. Para o professor de Desenvolvimento de Sistemas, esse é o argumento concreto para projetos interdisciplinares com a BNCC: competências de pensamento computacional e ciências da natureza convergindo em um mesmo artefato.
Por que programação é uma habilidade estratégica?
A Aula 3 abre com um vídeo sobre o Vale do Silício — o ecossistema que concentra as maiores empresas de tecnologia do mundo, incluindo a Apple. O exercício de identificar qual dessas empresas está sediada na região não é trivial: ele trabalha a habilidade de extrair informação específica de um conteúdo audiovisual e conecta o laboratório escolar a uma realidade econômica global. Programar não é uma disciplina técnica isolada — é acesso a um campo profissional de altíssimo impacto.
O módulo random e a lógica de jogos digitais
O jogo de adivinhação da Aula 4 introduz o import random — o primeiro uso explícito de uma biblioteca externa da linguagem. Esse movimento é pedagogicamente significativo: o aluno aprende que Python tem uma biblioteca padrão rica e que importar módulos é o mecanismo de extensão de capacidades do programa. O jogo Snake em PyGame, referenciado como expansão, é o horizonte natural dessa progressão — de um número aleatório a um jogo gráfico completo.
Atividades práticas: os quatro roteiros da semana
Exercícios práticos — Criação de programas · Jogo Stop
Compreender o conceito de lógica de programação e conhecer a sintaxe da linguagem Python para criar algoritmos simples utilizando os conceitos aprendidos em aula.
elif para cada opção de letra do alfabeto. O programa deve receber a letra digitada pelo usuário e retornar um nome de pessoa que comece com aquela letra.
elif.
Submeter o código dos três exercícios no AVA, incluindo as observações escritas sobre o exercício de depuração e a reflexão sobre eficiência de código.
Exercícios práticos — Guia eleitoral expandido
Compreender o conceito de lógica de programação e conhecer a sintaxe da linguagem Python para criar algoritmos simples utilizando os conceitos aprendidos em aula.
else.
Submeter o programa completo com os 10 candidatos fictícios e a reflexão escrita sobre as limitações do modelo de variáveis individuais.
Exercícios práticos — Tabela periódica completa
Compreender a aplicação prática das estruturas de seleção na lógica de programação e conhecer exemplos de aplicações no dia a dia, utilizando o Python.
if/elif, estime quantas linhas de código seriam necessárias por elemento. O que essa conta sugere sobre as limitações da abordagem?
Submeter o programa da tabela periódica expandida, as observações escritas de depuração e a reflexão sobre escalabilidade.
Exercícios práticos — Jogo de adivinhação e classificador de idades
Compreender a aplicação prática das estruturas de seleção na lógica de programação e conhecer exemplos de aplicações no dia a dia, utilizando o Python.
random; (2) gerar número com randint(1, 100); (3) solicitar palpites repetidamente; (4) a cada palpite, informar maior ou menor; (5) ao acertar, exibir número de tentativas.
Submeter os dois programas funcionais (jogo de adivinhação e classificador de idades) e a reflexão escrita sobre padrões e eficiência de código.
Expansão estratégica: onde este conteúdo pode ir?
→ síntese da semana
A Semana 9 construiu a capacidade mais fundamental da programação aplicada: fazer o programa decidir. Partindo do if mais simples — uma letra, um objeto — a turma chegou a sistemas com múltiplas entidades, dados científicos estruturados e lógica de jogo com imprevisibilidade controlada. O padrão if/elif/else foi exercitado em quatro contextos distintos até se tornar reflexo. A pergunta que fica — por que escrever 100 elif quando poderíamos usar um dicionário? — não é uma dúvida: é o próximo passo.
Perguntas frequentes sobre estruturas de seleção em Python
if (executa se a condição é verdadeira), elif (avalia condição alternativa quando as anteriores são falsas) e else (captura todos os casos restantes). Servem para que o programa tome decisões — respondendo de forma diferente a entradas diferentes.
if independentes avaliam todas as condições sempre — mesmo que a primeira já tenha sido verdadeira, as demais são verificadas. A cadeia if/elif interrompe a avaliação no primeiro ramo verdadeiro: se if é satisfeito, os elif subsequentes não são avaliados. Para classificações mutuamente exclusivas — como categorias de idade — o elif é semanticamente correto e computacionalmente mais eficiente.
'A' não é igual a 'a'. Sem normalização, um usuário que digita 'A' quando o programa compara com 'a' nunca atingirá o bloco correto — sem mensagem de erro, apenas comportamento incorreto silencioso. Aplicar lower() antes da cadeia condicional garante que a comparação seja insensível à capitalização do usuário.
random faz parte da biblioteca padrão do Python — não precisa ser instalado. Basta importar com import random no início do programa e usar random.randint(a, b) para obter um inteiro aleatório entre a e b inclusive. Na Aula 4, random.randint(1, 100) gera o número secreto do jogo de adivinhação. Outros módulos da biblioteca padrão seguem o mesmo padrão de importação.
elif das atividades desta semana — 26 letras, 10 candidatos, 118 elementos — é precisamente o argumento pedagógico para apresentar dicionários na próxima unidade. O desconforto com a repetição é intencional.
Mais recursos sobre Python e educação digital
Documentação completa das aulas, projetos do laboratório e materiais do curso técnico em Desenvolvimento de Sistemas.
ACESSAR PROFESSORCOMIA.COM.BRDe onde o aluno veio e para onde vai
No início da Semana 9, o estudante escrevia programas que executavam sempre da mesma forma, independentemente do que o usuário digitava. Ao final, ele produz sistemas que reagem: identificam uma letra e retornam um objeto, consultam um candidato por número, recuperam dados de um elemento químico por sigla, e conduzem um jogo com lógica de feedback em tempo real.
Esse salto não é apenas técnico. É cognitivo: o aluno passou de executor de instruções para arquiteto de decisões. Ele compreendeu que um programa pode ter múltiplos caminhos e que a escolha do caminho depende de condições que ele mesmo define. Isso é controle de fluxo — e é a base de qualquer sistema computacional não trivial.
A próxima estação natural desta jornada são as estruturas de repetição e, logo após, os dicionários — quando a pergunta que esta semana plantou (“existe uma forma mais eficiente de fazer isso?”) receberá sua resposta completa. O desconforto pedagógico com o volume de código foi calculado. A curiosidade que ele gera é o combustível da próxima aula.
