Módulo 11 - Tuplas, dicionários e conjuntos

Prática: a ficha de aluno completa

11 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Modelar o cadastro do aluno num dicionário com notas incluídas.
  • Calcular a média das provas lendo valores do dicionário.
  • Decidir a situação com if, elif e else sobre a média calculada.
  • Imprimir uma ficha formatada e legível com f-strings.

O desafio e o mapa das estruturas

Todo módulo termina com as mãos no código, e este junta um time e tanto: o dicionário guarda a ficha, a aritmética do módulo 6 calcula a média, o if, elif e else do módulo 7 decide a situação e as f-strings imprimem tudo com capricho. Antes de começar, uma consulta rápida à caixa de ferramentas completa, agora que você conhece as quatro coleções do Python.

EstruturaSímboloEspecialidadeExemplo
Lista[ ]Sequência que muda: itens entram, saem e trocamcompras = ["pão", "leite"]
Tupla( )Registro fixo que não deve mudarponto = (3, 5)
Dicionário{chave: valor}Valores com nome, buscados pela chavealuno = {"nome": "Ana"}
Conjunto{ } com itens soltosItens únicos, sem ordem e sem repetiçãoturma = {"Ana", "Bruno"}

A caixa completa de coleções. Para a ficha de hoje, a especialista é o dicionário.

Por que o dicionário vence aqui? Faça o teste da pergunta natural: você quer a NOTA do aluno, a IDADE do aluno, o CURSO do aluno. Toda pergunta busca um campo pelo nome, e valores com nome são a especialidade do dicionário. Uma lista com ["Ana Souza", 21, "Python Básico", 8.5, 6.0] guardaria os mesmos dados, mas quem lê aluno[3] não faz ideia de que aquilo é a nota da primeira prova. Com aluno["nota1"], o código se explica sozinho.

  1. Crie o dicionário aluno com nome, idade, curso, nota1 e nota2.
  2. Calcule a média das duas notas numa variável própria.
  3. Decida a situação com if, elif e else usando a regra da escola.
  4. Imprima a ficha formatada, um campo por linha, com a média em uma casa decimal.

Construindo passo a passo

Passo 1, a ficha. Cinco campos, um par por linha, tipos à vontade: texto no nome e no curso, inteiro na idade, decimais nas notas. Escreva as chaves com capricho e de forma consistente, porque cada acesso futuro vai repetir esses nomes letra por letra, e nota1 com N maiúsculo em um lugar e minúsculo em outro termina em KeyError.

aluno = {
    "nome": "Ana Souza",
    "idade": 21,
    "curso": "Python Básico",
    "nota1": 8.5,
    "nota2": 6.0,
}

Passo 1: a ficha com as duas notas dentro. Um par por linha, vírgula no fim de cada um.

Passo 2, a média. Some as duas notas e divida por 2, guardando o resultado numa variável. Os parênteses em volta da soma são obrigatórios: sem eles, a ordem das operações do módulo 6 faria o Python dividir só a nota2 por 2 antes de somar, e a média sairia errada sem nenhum erro na tela. Passo 3, a situação: a regra da escola diz que média 7 ou mais aprova, de 5 a 6,9 vai para recuperação e abaixo de 5 reprova. É um if, elif e else clássico, testando do maior corte para o menor.

media = (aluno["nota1"] + aluno["nota2"]) / 2

if media >= 7:
    situacao = "Aprovado"
elif media >= 5:
    situacao = "Recuperação"
else:
    situacao = "Reprovado"

print(media, situacao)

# Saída:
# 7.25 Aprovado

Passos 2 e 3: média com parênteses na soma e a regra da escola traduzida em if, elif e else.

Repare na ordem dos testes: primeiro o corte mais alto. Como o elif só roda se o if falhou, quem chega no media >= 5 já reprovou no teste do 7, então a faixa de 5 a 6,9 fica coberta sem precisar escrever as duas pontas. Inverter a ordem, testando o 5 primeiro, aprovaria em recuperação um aluno com média 9, porque 9 também é maior que 5. Se essa lógica ficou nebulosa, vale revisitar a aula de elif do módulo 7 antes de seguir.

O código completo e os desafios extras

Passo 4, a ficha impressa. A saída de um programa é a parte que o usuário vê, então ela merece o mesmo capricho da lógica. As f-strings do módulo anterior alinham os campos, e o {media:.1f} garante a média com uma casa decimal, em vez de um 7.25 solto. Junte tudo e o programa completo fica assim.

aluno = {
    "nome": "Ana Souza",
    "idade": 21,
    "curso": "Python Básico",
    "nota1": 8.5,
    "nota2": 6.0,
}

media = (aluno["nota1"] + aluno["nota2"]) / 2

if media >= 7:
    situacao = "Aprovado"
elif media >= 5:
    situacao = "Recuperação"
else:
    situacao = "Reprovado"

print("===== FICHA DO ALUNO =====")
print(f"Nome....: {aluno['nome']}")
print(f"Idade...: {aluno['idade']} anos")
print(f"Curso...: {aluno['curso']}")
print(f"Notas...: {aluno['nota1']} e {aluno['nota2']}")
print(f"Média...: {media:.1f}")
print(f"Situação: {situacao}")

# Saída:
# ===== FICHA DO ALUNO =====
# Nome....: Ana Souza
# Idade...: 21 anos
# Curso...: Python Básico
# Notas...: 8.5 e 6.0
# Média...: 7.2
# Situação: Aprovado

O programa completo: ficha, média, situação e a impressão formatada campo a campo.

Digite o programa no Playground, rode e confira a saída. Depois, o teste que separa quem digitou de quem entendeu: troque as notas e preveja a situação ANTES de rodar. Com 6.0 e 5.5 a média dá 5.75, recuperação. Com 4.0 e 5.0, dá 4.5, reprovado. Se as suas previsões baterem com a tela, o if, elif e else é seu de verdade.

O terceiro desafio merece atenção especial: uma lista de fichas com cálculo por aluno é, em miniatura, o desenho do gerenciador de tarefas do módulo 16. Feche este módulo com a mini-prova para garantir a medalha e siga para o 12, onde os textos ganham superpoderes: maiúsculas, buscas, substituições e as f-strings a fundo.

Teste rápido

Um aluno tirou 6.0 e 5.0. Pelo programa da prática, qual situação a ficha mostra?

Perguntas frequentes

Por que guardar as notas dentro do dicionário em vez de variáveis soltas?
Porque as notas descrevem o aluno, e a ficha é o lugar de tudo que descreve o aluno. Com nota1 e nota2 dentro do dicionário, copiar a ficha, imprimir com for e items ou guardar vários alunos numa lista funciona sem carregar variáveis soltas junto. Coesão: o que anda junto, mora junto.
O que significa o :.1f na f-string da média?
É uma instrução de formatação: exiba este número como decimal com 1 casa depois da vírgula. A média 7.25 aparece como 7.2 na ficha, sem alterar o valor guardado na variável, que continua 7.25 para qualquer cálculo. Quer duas casas? Troque por :.2f.
Por que 7.25 vira 7.2 e não 7.3?
A formatação arredonda pelo padrão do Python, que nesse caso encurta para 7.2. Para o programa da prática isso não muda nada, porque a situação é decidida com o valor cheio da variável media, antes de qualquer formatação. A exibição é maquiagem; a decisão usa o número real.
E se a escola tivesse pesos diferentes para as provas?
Só a linha da média muda. Prova 2 valendo o dobro? media = (aluno["nota1"] + aluno["nota2"] * 2) / 3. A estrutura do programa continua idêntica, e é essa a graça de separar o cálculo da decisão e da impressão: cada regra nova mexe num ponto só.
Como faço a ficha para vários alunos sem repetir o código?
Com o desenho da aula 4: uma lista de dicionários e um for por fora. A cada volta, o laço pega uma ficha, calcula a média dela e imprime. É exatamente o terceiro desafio extra, e vale a pena fazê-lo: esse padrão de repetir uma lógica para cada registro aparece em quase todo programa real.
Posso guardar a situação calculada dentro do dicionário?
Pode e é boa prática quando a ficha vai ser usada depois: aluno["situacao"] = situacao acrescenta o campo na hora, como você viu na aula 3. É o segundo desafio extra aplicado. Só lembre de calcular antes de imprimir, para a ficha sair completa.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.