From 6ad194ad496882738a3e0b0d649323c8b959c559 Mon Sep 17 00:00:00 2001 From: maricarvi Date: Fri, 24 Nov 2023 19:56:54 -0300 Subject: [PATCH] Entrega do primeiro projeto guiado --- exercicios/para-casa/README.md | 2 +- exercicios/para-casa/projeto-guiado-I.py | 90 +++++++++++++++++++ .../para-casa/projeto-guiado-exercicios | 77 ++++++++++++++++ exercicios/para-sala/README.md | 6 +- exercicios/para-sala/loja.py | 67 ++++++++++++++ 5 files changed, 238 insertions(+), 4 deletions(-) create mode 100644 exercicios/para-casa/projeto-guiado-I.py create mode 100644 exercicios/para-casa/projeto-guiado-exercicios create mode 100644 exercicios/para-sala/loja.py diff --git a/exercicios/para-casa/README.md b/exercicios/para-casa/README.md index a4b9f67..b0945fa 100644 --- a/exercicios/para-casa/README.md +++ b/exercicios/para-casa/README.md @@ -7,7 +7,7 @@ os produtos de sua lojinha graças o menu que você criou. Por isso, a May decid dessa vez, esse sistema vai ter um menu para clientes e os clientes poderão: - Escolher um produto e adicionar ele a um carrinho -- O cliente vai poder escolher um produto pelo seu IDENTIFICADOR, esses produtos são os produtos da LOJA e também escolher a quantidade do produto desejado +- O cliente vai poder escolher um produto pelo seu id, esses produtos são os produtos da LOJA e também escolher a quantidade do produto desejado - Se o cliente mudar de ideia, ele poderá excluir um produto do carrinho - O cliente poderá , a qualquer momento , ver o TOTAL dos itens do seu carrinho - O cliente poderá finalizar a compra. Nesse momento , deve ser gerado um número do pedido e o total da compra. Para assim ele finalizar seu carrinho. diff --git a/exercicios/para-casa/projeto-guiado-I.py b/exercicios/para-casa/projeto-guiado-I.py new file mode 100644 index 0000000..d222d93 --- /dev/null +++ b/exercicios/para-casa/projeto-guiado-I.py @@ -0,0 +1,90 @@ +class Produto: + def __init__(self, id, nome, preco): + self.id = id + self.nome = nome + self.preco = preco + +class Carrinho: + def __init__(self): + self.items = {} + + def adicionar_item(self, produto, quantidade): + if produto.id in self.items: + self.items[produto.id] += quantidade + else: + self.items[produto.id] = quantidade + + def remover_item(self, id): + if id in self.items: + del self.items[id] + + def calcular_total(self, catalogo_produtos): + total = 0 + for id, quantidade in self.items.items(): + produto = catalogo_produtos[id] + total += produto.preco * quantidade + return total + +def exibir_catalogo(catalogo_produtos): + print("Catálogo de Produtos:") + for produto in catalogo_produtos.values(): + print(f"{produto.id}: {produto.nome} - R${produto.preco:.2f}") + +def main(): + + catalogo_produtos = { + 1: Produto(1, "Base", 10.99), + 2: Produto(2, "Batom", 5.49), + 3: Produto(3, "Rímel", 7.99), + } + + carrinho = Carrinho() + + while True: + print("\nMenu:") + print("1. Adicionar produto ao carrinho") + print("2. Remover produto do carrinho") + print("3. Ver total do carrinho") + print("4. Finalizar compra") + print("5. Sair") + + opcao = input("Escolha uma opção (1-5): ") + + if opcao == "1": + exibir_catalogo(catalogo_produtos) + id = int(input("Digite o id do produto: ")) + quantidade = int(input("Digite a quantidade desejada: ")) + produto = catalogo_produtos.get(id) + if produto: + carrinho.adicionar_item(produto, quantidade) + print(f"{quantidade} {produto.nome}(s) adicionado(s) ao carrinho.") + else: + print("Produto não encontrado.") + + elif opcao == "2": + id = int(input("Digite o id do produto a ser removido: ")) + carrinho.remover_item(id) + print("Produto removido do carrinho.") + + elif opcao == "3": + total = carrinho.calcular_total(catalogo_produtos) + print(f"Total do carrinho: R${total:.2f}") + + elif opcao == "4": + total = carrinho.calcular_total(catalogo_produtos) + if total > 0: + print(f"Compra finalizada! Número do pedido: {hash(carrinho)}") + print(f"Total da compra: R${total:.2f}") + break + else: + print("Carrinho vazio. Adicione produtos antes de finalizar a compra.") + + elif opcao == "5": + print("Saindo do programa. Obrigado!") + break + + else: + print("Opção inválida. Tente novamente.") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/exercicios/para-casa/projeto-guiado-exercicios b/exercicios/para-casa/projeto-guiado-exercicios new file mode 100644 index 0000000..90f6981 --- /dev/null +++ b/exercicios/para-casa/projeto-guiado-exercicios @@ -0,0 +1,77 @@ +# Deve conseguir adicionar doces novos ao menu +# Deve ser possível mostrar detalhes de um produto pelo seu index +# Deve listar todos os itens do menu +# Deve ser possível alterar o preço de um certo produto +# Deve apagar um produto do menu + +# 1. Criar o menu + +doces_cadastrados = [] + +def menu (): + # adicionar doce + # detalhar doce + # listar todos os itens + # alterar preço + # apagar produto + while True: + + print("\n ** MENU LOJA MAY ** ") + print("1 - Adicionar produto") + print("2 - Exibir detalhes de um produto") + print("3 - Atualizar informações de um produto") + print("4 - Remover produto") + print("5 - Listar todos os produtos") + print("0 - Sair") + + opcao = input("Digite a opção desejada:\n") + + + if opcao == "1": + adicionar_produto() + + elif opcao == "2": + print("Opção exibir detalhes de um produto.") + + elif opcao == "3": + print("Opção atualizar informações de um produto.") + + elif opcao == "4": + print("Opção remover produto.") + + elif opcao == "5": + print("Opção listar todos os produtos.") + + elif opcao == "0": + print("Sair") + break + + else: + print ("Opcão inválida. Por favor, digite uma das opções informadas.") + + +def adicionar_produto(): + nome_produto = input("Informe o nome do produto que deseja adicionar:\n") + preco_produto = input("Informe o preço do produto que deseja adicionar:\n") + + produto = { + "id": gerar_id_produto(), + "nome": nome_produto, + "preço": float(preco_produto), + } + + doces_cadastrados.append(produto) + print(doces_cadastrados) + + +def gerar_id_produto(): + novo_id = 1 + if len(doces_cadastrados) == 0: + return 1 + + doces_cadastrados.sort(key=id, reverse=True) + novo_id = doces_cadastrados[0].get("id") + 1 + return novo_id + + +menu() \ No newline at end of file diff --git a/exercicios/para-sala/README.md b/exercicios/para-sala/README.md index 4c29af0..c107cb9 100644 --- a/exercicios/para-sala/README.md +++ b/exercicios/para-sala/README.md @@ -6,13 +6,13 @@ ela decide te chamar para fazer isso pra ela. Um sistema simples vai servir, as - Deve ser escrito em python - Deve conseguir adicionar doces novos ao menu -- Deve ser possível mostrar detalhes de um produto pelo seu IDENTIFICADOR +- Deve ser possível mostrar detalhes de um produto pelo seu id - Deve listar todos os itens do menu - Deve ser possível ALTERAR O PREÇO de um certo protudo - Deve apagar um produto do menu -**Lembre-se que a Mayhhara é sua primeira cliente. Precisamos causar uma boa impressão e mostrar o n -osso trabalho** +**Lembre-se que a Mayhhara é sua primeira cliente. Precisamos causar uma boa impressão e mostrar +o nosso trabalho** --- Terminou o exercício? Dá uma olhada nessa checklist e confere se tá tudo certinho, combinado?! diff --git a/exercicios/para-sala/loja.py b/exercicios/para-sala/loja.py new file mode 100644 index 0000000..1d80482 --- /dev/null +++ b/exercicios/para-sala/loja.py @@ -0,0 +1,67 @@ + +# Quero opção de: +# Adicionar doce +# Exibir detalhe de um doce +# Atualizar doce +# Apagar doces +# Exibir lista de doces + +lista_produtos = [] + + +def menu(): + while True: + print("\n ** MENU LOJA REPROGRAMA **") + print("1 - Adicionar") + print("2 - Exibir detalhes") + print("3 - Atualizar") + print("4 - Apagar") + print("5 - Exibir todos") + print("0 - Sair") + + opcao = input("Escolha a opção desejada \n") + + if opcao == "1": + adicionar_produto() + elif opcao == "2": + print ("Opção exibir detalhes") + elif opcao == "3": + atualizar_produto() + elif opcao == "4": + print ("Opção apagar") + elif opcao == "5": + print ("Opção exibir todos") + elif opcao == "0": + print ("Opção sair") + break + else: + print ("Opção inválida. Por favor, escolha uma opção do menu.") + +def adicionar_produto(): + nome_produto = input("Digite o nome do produto:\n") + preco_produto = input("Digite o preço do produto:\n") + + produto = {"id":gerar_id_produto(),"nome":nome_produto,"preço": float(preco_produto)} + + lista_produtos.append(produto) + print(lista_produtos) + +def gerar_id_produto(): + if len(lista_produtos) == 0: + return 1 + lista_produtos.sort(key=id, reverse=True) + novo_id = lista_produtos[0].get("id")+1 + return novo_id + +def atualizar_produto(): + id_produto = input("Digite o ID do produto para atualizar:\n") + + for index in range(len(lista_produtos)): + if lista_produtos[index].get("") == int(id_produto): + print("Produto encontrado") + +def listar_todos(): + for index in range(len(lista_produtos)): + print(f"{lista_produtos[index]}\n") + +menu() \ No newline at end of file