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!

3
respostas

Desafio: Simulador de pedidos em uma cafeteria

`total = 0

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

for i in range(quantidade):
    nome = input("Nome do item: ")
    preco = float(input("Preço do item: R$ "))
    total += preco

cadastrado = input("O cliente é cadastrado? (s/n): ")

if cadastrado.lower() == "s":
    total = total * 0.9  
    print(f"Valor com desconto: R$ {total:.2f}")
else:
    print(f"Valor total: R$ {total:.2f}")
3 respostas

Oi, Ana. Tudo bem com você?

Obrigado por compartilhar sua solução para o desafio do simulador de pedidos em uma cafeteria. Analisei o código e ele atende aos requisitos propostos na atividade. A lógica utilizada está adequada para representar o fluxo do atendimento, contemplando o registro da quantidade de itens, a leitura do nome e do preço de cada produto, o cálculo do valor total e a aplicação do desconto de 10% para clientes cadastrados.

Como exemplo, se um cliente pedir um café por R$ 8,00 e um pão de queijo por R$ 7,00, o total será R$ 15,00. Caso ele seja cadastrado, o cálculo total * 0.9 resultará em R$ 13,50, representando corretamente o desconto previsto no enunciado. O uso de cadastrado.lower() também é uma boa prática, pois permite que a resposta seja reconhecida tanto em letra maiúscula quanto minúscula.

Como um exercício complementar, você poderia pensar em como adaptar esse algoritmo para exibir, ao final, a lista de produtos que foram pedidos juntamente com o valor total da compra.

Parabéns pela resolução da atividade. Continue compartilhando suas soluções. O fórum está à disposição sempre que precisar.

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

Proposta de solução do exercício complementar, reaproveitando o código da Ana Júlia Grzyb:

# Bibliotecas
import pandas as pd
from IPython.display import display

# Variáveis
total = 0
quantidade = int(input("Quantos itens o cliente vai pedir? "))

# Listas
nome = []; preco = []

# Iteração
for i in range(quantidade):
    nome.append(input("Nome do item: "))
    preco.append(float(input("Preço do item: R$ ")))
    total += preco[i]

# Lista de produtos que foram pedidos
db_lista_prod = pd.DataFrame({'Nome': nome, 'Preço': preco})

# Verificação de cadastro
cadastrado = input("O cliente é cadastrado? (s/n): ")

# Retorno das informações

display(db_lista_prod)

if cadastrado.lower() == "s":
    total = total * 0.9
    print("Cliente cadastrado. Aplicando desconto de 10%.") 
    print(f"Valor com desconto: R$ {total:.2f}")
else:
    print("Cliente não cadastrado. Sem desconto aplicado.")
    print(f"Valor total: R$ {total:.2f}")

Oi, Rodrigo.

O código está correto e cumpre a proposta de exibir a lista de produtos juntamente com o valor final da compra. O uso de listas para armazenar os itens e a criação de um DataFrame com o pandas deixaram a visualização dos dados mais organizada. Apenas como observação, para esse exercício o uso do pandas é opcional, já que a listagem também poderia ser feita apenas com estruturas nativas do Python, o que torna a solução mais portátil em ambientes onde a biblioteca não está disponível. Ainda assim, sua adaptação ficou muito interessante.

Obrigado por compartilhar sua implementação.