2
respostas

[Projeto] Desafio: Simulador de pedidos em uma cafeteria

Fiz um teste com o Claude.

INÍCIO
totalItens ← informar quantidade de itens
itens ← lista vazia
subtotal ← 0

PARA i DE 1 ATÉ totalItens FAÇA
nome ← informar nome do item i
preço ← informar preço do item i
adicionar (nome, preço) à lista itens
subtotal ← subtotal + preço
FIM PARA

cadastrado ← perguntar "Cliente é cadastrado? (S/N)"

SE cadastrado = S ENTÃO
desconto ← subtotal × 0,10
total ← subtotal − desconto
exibir "Desconto aplicado: R$ " + desconto
SENÃO
total ← subtotal
FIM SE

exibir "Total a pagar: R$ " + total
![A imagem ao lado representa uma parte de uma tela de chekout: (https://cdn1.gnarususercontent.com.br/1/7598896/9aa5fd82-b6c0-45b2-9ad4-418c4c9533a6.png)

O Claude me passou um arquivo HTML para download e organizou o código em três blocos principais:
HTML — estrutura das 4 fases (quantidade → itens → cadastro/resumo → recibo), cada uma em uma div.phase que é exibida ou ocultada conforme o fluxo avança.
CSS — estilização flat com variáveis de cor, cards com borda fina, botões, inputs e badges de status (verde para desconto, roxo para preço cheio).
JavaScript — toda a lógica da aplicação:

changeQty / startItems — controla a quantidade de itens
addItem / removeItem / renderList — gerencia o array de itens com validação
setCadastrado / renderResumo — aplica (ou não) o desconto de 10% e monta o resumo
emitirRecibo — gera o recibo em texto monoespacado formatado
novoAtendimento — reinicia todo o estado

2 respostas

quantidade = input("")
produto = input("Informe o produto: ")
preco = input("Informe o valor: ")
cadastro = input("Você tem cadastro? ")

def calcular(preco):
if quantidade <= 0 or produto == '':
break:
elif:
preco != 0 and cadastro = 'sim':
preco = float(preco)
quantidade * preco + 10%
else:
preco = float(preco)
quantidade * preco
return preco

"Olá, pessoal! Segue a minha resolução para o desafio do simulador de cafeteria. Utilizei um laço de repetição for para coletar os itens e uma estrutura condicional if/else para aplicar o desconto de 10% aos clientes cadastrados.

Simulador de Pedidos - Cafeteria

print("--- Bem-vindo ao Sistema da Cafeteria ---")

1. O atendente informa quantos itens o cliente vai pedir

total_itens = int(input("Quantos itens o cliente vai pedir? "))
valor_total = 0

2. Para cada item, o sistema solicita o nome e o preço

for i in range(total_itens):
print(f"\nItem {i+1}:")
nome_item = input("Nome do produto: ")
preco_item = float(input(f"Preço de {nome_item}: R$ "))
valor_total += preco_item

3. O sistema pergunta se o cliente é cadastrado

esta_cadastrado = input("\nO cliente possui cadastro? (S/N): ").upper()

4. Aplicação da lógica de desconto (10%)

if esta_cadastrado == "S":
desconto = valor_total * 0.10
valor_final = valor_total - desconto
print(f"\nDesconto de 10% aplicado: R$ {desconto:.2f}")
print(f"Valor total a pagar: R$ {valor_final:.2f}")
else:
# 5. Caso contrário, exibe o valor cheio
print(f"\nValor total a pagar (sem desconto): R$ {valor_total:.2f}")

print("\n--- Atendimento Finalizado ---")

O que aprendi com esse desafio:
Trabalhar com acumuladores (como a variável valor_total) dentro de um loop é fundamental para processar múltiplos dados. Além disso, a conversão de tipos (int e float) é essencial para que os cálculos matemáticos funcionem corretamente."
Por que esse código funciona bem?
Loop for: Garante que o programa rode exatamente o número de vezes que o atendente definiu no início.
Método .upper(): Evita erros caso o usuário digite "s" minúsculo em vez de "S".
Formatação :.2f: Faz com que os preços apareçam com duas casas decimais (ex: R$ 10.50), deixando o terminal com cara de sistema real.