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.