Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Desafio: Simulador de pedidos em uma cafeteria

Resolvi ir guardando o preço de cada item numa lista, e só depois de coletar tudo é que somei de uma vez usando a função sum(). Achei mais organizado separar as duas responsabilidades uma parte só coleta os dados, a outra só faz a conta.

Pro desconto, também usei uma forma mais direta, em vez de calcular o valor do desconto separado e depois subtrair do total, calculei o valor final numa linha só, aplicando 90% do total quando o cliente é cadastrado (10% de desconto) ou 100% quando não é.

**Algoritmo em linguagem natural **

Perguntar ao atendente quantos itens o cliente vai pedir.

Para cada item, repetir:

Perguntar o nome do item.

Perguntar o preço desse item.

Guardar esse preço numa lista de preços.

Depois de coletar todos os itens, somar todos os preços da lista para obter o total do pedido.

Perguntar se o cliente é cadastrado.

Se for cadastrado, calcular o valor final aplicando 10% de desconto sobre o total.

Se não for cadastrado, o valor final é o próprio total, sem alteração.

Exibir o valor final na tela.

Código

quantidade_itens = int(input("Quantos itens o cliente vai pedir? "))

precos_itens = []

for numero_item in range(quantidade_itens):
nome_item = input(f"Nome do item {numero_item + 1}: ")
preco_item = float(input(f"Preco de {nome_item}: "))
precos_itens.append(preco_item)

total_pedido = sum(precos_itens)

cliente_cadastrado = input("Cliente e cadastrado? (sim/nao): ") == "sim"

valor_final = total_pedido * 0.9 if cliente_cadastrado else total_pedido

if cliente_cadastrado:
print(f"Valor com desconto de fidelidade: R$ {valor_final:.2f}")
else:
print(f"Valor total do pedido: R$ {valor_final:.2f}")

Guardar os preços numa lista também deixa mais fácil, no futuro, mostrar um "recibo" detalhado item por item, caso a cafeteria queira evoluir o sistema depois.

1 resposta

Fala, Gusttavo! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou o uso da lista de preços para organizar os dados, destacou a aplicação da função sum() para somar de forma prática e ainda mostrou a importância da condicional para aplicar o desconto direto no cálculo. Esse raciocínio é muito valioso porque deixa o código mais limpo, facilita futuras evoluções e mostra como separar responsabilidades de coleta e processamento.

E algumas boas práticas que você pode adotar são:

  • Validação: garantir que os preços digitados sejam positivos e numéricos.
  • Clareza: exibir um recibo detalhado com cada item e subtotal antes do valor final.
  • Escalabilidade: permitir que diferentes percentuais de desconto ou promoções sejam configuráveis.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere evoluir esse algoritmo para gerar um recibo completo com todos os itens ou mantê-lo simples apenas para treinar lógica de repetição e condicionais?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!