Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Projeto Integrador — Cafeteria Escolar Gamificada

Para a conclusão do módulo, decidi não resolver os exercícios de forma isolada.

Optei por aprimorar progressivamente um único projeto — a Cafeteria Escolar Gamificada — integrando os conteúdos aprendidos ao longo do curso em um sistema mais próximo de uma situação real.

Essa escolha fez mais sentido para meu processo de aprendizagem, pois permitiu compreender como os conceitos de programação se conectam dentro de um fluxo lógico de funcionamento, aproximando o estudo da computação da modelagem de soluções educacionais e operacionais.

Ao longo do desenvolvimento do projeto, incorporei diferentes conteúdos estudados no módulo, como:

  • variáveis;
  • input();
  • conversão de tipos;
  • operadores relacionais e lógicos;
  • estruturas condicionais;
  • laços de repetição (while e for);
  • listas;
  • dicionários;
  • manipulação de strings;
  • métodos de listas;
  • métodos de dicionários;
  • funções built-in;
  • cálculos automáticos;
  • organização e leitura de dados.

O objetivo do sistema é simular o funcionamento de uma cafeteria escolar gamificada, permitindo cadastro de estudantes, autorização familiar, registro de compras, pontuação saudável, recompensas e comunicação automatizada com as famílias.

Relação entre os conteúdos estudados e o projeto:

Conteúdo estudado Aplicação no projeto

Listas → Histórico de compras e armazenamento de pedidos
Dicionários → Cadastro estruturado dos estudantes
for → Leitura dinâmica dos pedidos
while → Funcionamento contínuo do sistema
if / else → Validação de autorização e recompensas
split() → Separação dos itens digitados
join() → Geração de mensagens automáticas
append() → Adição de novas compras ao histórico
len() → Contagem de registros e compras
sum() → Cálculo automático de valores
keys(), values(), items() → Leitura dos dados cadastrados
pop() → Remoção de informações do cadastro

Trecho principal do programa em Python

clientes = {}

cardapio_saudavel = {
"agua": 4,
"fruta": 6,
"suco natural": 9,
"iogurte": 10,
"tapioca": 12,
"sanduiche natural": 15
}

cafeteria_aberta = "sim"

while cafeteria_aberta == "sim":

nome = input("Nome do estudante: ").lower()

if nome not in clientes:

    turma = input("Turma: ")
    responsavel = input("Nome do responsável: ")

    clientes[nome] = {
        "turma": turma,
        "responsavel": responsavel,
        "pontos": 0,
        "historico": []
    }

quantidade = int(
    input("Quantos itens foram comprados? ")
)

pedido = []
valores = []

for i in range(quantidade):

    item = input(
        f"Digite o item {i + 1}: "
    ).lower()

    valor = float(
        input("Digite o valor: ")
    )

    pedido.append(item)
    valores.append(valor)

total = sum(valores)

clientes[nome]["historico"].append(pedido)

print(f"Total da compra: R$ {total:.2f}")

cafeteria_aberta = input(
    "Deseja continuar? (sim/não): "
).lower()

Reflexão final

O módulo foi bem desafiador para mim, pois, foi minha primeira experiência com Python.
Considero que o principal aprendizado deste módulo não foi apenas escrever comandos em Python, mas compreender como os sistemas organizam informações, processam dados e estruturam fluxos lógicos.
Mesmo utilizando inteligência artificial como apoio durante o processo, busquei desenvolver principalmente o raciocínio computacional, a modelagem lógica do sistema e a integração dos conteúdos estudados em uma solução mais próxima de contextos reais.

Agradeço à professora e ao meu tutor pelos ensinamentos e colaboração.

2 respostas
solução!

Olá, Patricia. Como vai?

Parabéns pela conclusão do módulo e pelo brilhante encerramento do seu Projeto Integrador! A sua decisão pedagógica de não realizar os exercícios de forma isolada, mas sim construir e aprimorar um único sistema complexo ao longo do curso, é uma das estratégias de aprendizagem mais eficazes que existem. Isso é o que chamamos no mercado de Aprendizagem Baseada em Projetos (Project-Based Learning).

A forma como você mapeou a relação entre os conceitos teóricos e a aplicação prática no seu projeto ficou simplesmente perfeita. Ver em uma tabela como uma lista se transforma em um histórico de compras ou como o método join() vira uma mensagem automatizada para a família mostra que você não apenas decorou a sintaxe do Python, mas desenvolveu um sólido raciocínio computacional.

O seu código está muito bem estruturado, limpo e utiliza com propriedade as funções built-in do Python, como o sum(valores) para simplificar o cálculo do total, e o enumerate ou laços de repetição para alimentar as listas.

Para enriquecer ainda mais esse fechamento de ciclo e deixar o seu projeto preparado para os próximos passos na trilha de Data Science, gostaria de sugerir duas pequenas evoluções técnicas no seu código atual:

  • Tratamento de novos cadastros dentro do fluxo: No seu código atual, se um estudante não está cadastrado, o sistema coleta os dados (turma e responsavel) e o adiciona ao dicionário clientes. Porém, o código continua executando o fluxo de compras logo em seguida de forma direta. O ideal em sistemas reais é garantir que, caso a cafeteria atenda um aluno novo, o cadastro seja consolidado antes de abrir a digitação dos itens daquela compra.
  • Uso de Dicionários para o Pedido: Você utilizou duas listas separadas (pedido e valores). Isso funciona perfeitamente! Uma boa prática de mercado é unir essas duas informações em uma única estrutura (como um dicionário de itens ou uma lista de tuplas), garantindo que cada item fique permanentemente amarrado ao seu respectivo preço de forma íntegra.

Veja como o trecho central do seu programa poderia ser reestruturado para aplicar essas boas práticas de organização de dados:

# Exemplo de reestruturação com dicionário de itens para o pedido
if nome not in clientes:
    print(f"\n--- Cadastro de Novo Estudante: {nome.title()} ---")
    turma = input("Turma: ")
    responsavel = input("Nome do responsável: ")
    clientes[nome] = {
        "turma": turma,
        "responsavel": responsavel,
        "pontos": 0,
        "historico": []
    }

quantidade = int(input("\nQuantos itens foram comprados? "))
detalhes_pedido = {} # Usando um dicionário para unir item e valor

for i in range(quantidade):
    item = input(f"Digite o item {i + 1}: ").lower()
    valor = float(input("Digite o valor: "))
    detalhes_pedido[item] = valor # Guarda o preço associado ao nome do item

total = sum(detalhes_pedido.values()) # Soma direto os valores do dicionário
clientes[nome]["historico"].append(detalhes_pedido)

print(f"\nTotal da compra de {nome.title()}: R$ {total:.2f}")

Como esta foi a sua primeira experiência com Python, sinta-se extremamente orgulhosa do resultado. Modelar regras de negócio, persistir dados em estruturas de dicionários aninhados e controlar o fluxo de um terminal contínuo são desafios complexos que você superou com excelência.

Continue com essa mesma postura investigativa e prática nos próximos módulos. Você tem um futuro brilhante pela frente na análise e manipulação de dados!

Espero que possa ter lhe ajudado!

Muito obrigada, Evandro! Sua colaboração tem sido essencial para minha aprendizagem!