DEV Community

dansouza24
dansouza24

Posted on

loja estoque

# produto do estoque 14
estoque = {"notebook": [1000, 5.300],
           "teclado": [500, 500],
           "mause": [200, 300],
           "monitor": [100, 800]
           }
total = 0
print("Vendas:\n")
while True:
    produto = input("Nome do produto (fim para sair):")
    if produto == "fim":
        break
    if produto in estoque:
        quantidade = int(input("Quantidade:"))
        if quantidade <= estoque[produto][0]:
            preço = estoque[produto][1]
            custo = preço * quantidade
            print(f"{produto:12s}: {quantidade:3d} x {preço:6.2f} = {custo:6.2f}")
            estoque[produto][0] -= quantidade
            total += custo
        else:
            print("Quantidade solicitada não disponível")
    else:
        print("Nome de produto inválido")
print(f" Custo total: {total:21.2f}\n")
print("Estoque:\n")
for chave, dados in estoque.items():
    print("Descrição: ", chave)
    print("Quantidade: ", dados[0])
    print(f"Preço: {dados[1]:6.2f}\n")
Enter fullscreen mode Exit fullscreen mode

Top comments (2)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

E como um código foi postado, quero aproveitar para fazer um code review.

Primeiramente, o código está bem escrito e organizado. Eu só acrescentaria umas linhas em branco para delimitar o fim de uma parte, e que na sequência inicia outra sequência de código com outra finalidade. No caso começou com definições de valores (variáveis) que serão os dados do programa, foi para uma interação com o usuário, e no final apresentou um resumo ou finalização. Isso pode ajudar a ir mais rápido para a parte desejada do código. Mas é apenas uma opção pessoal.

Uma coisa que dificultou a leitura do código foi a utilização de listas para guardar os valores da quantidade e o preço logo na primeira variável, não é intuitivo que são dois dados diferentes, e a utilização fica um pouco confusa (qual a diferença entre estoque[produto][0] e estoque[produto][1] sem olhar o restante do código?), além de que da a ideia de que poderia ter mais do que dois valores nessa lista. Uma solução mais simples poderia ser a utilização de tuplas, ai temos uma quantidade fixa de itens e uma tupla já traz uma ideia de que podem ser valores diferentes, tanto que em algumas linguagens todos os valores de uma lista precisam ser do mesmo tipo, enquanto de uma tupla pode haver tipos diferentes. Mas ainda ficam sendo chamado de 0 e 1, para isso Python tem as namedtuple, onde é possível dar um nome para cada item da tupla, porém como tuplas em Python são imutáveis, toda hora que alterar a quantidade em estoque teria que recriar toda a tupla, para melhorar isso existem as dataclass assim daria para alterar a quantidade diretamente. Porém isso são recursos mais avançados do Python, outra forma mais simples seria usando um dicionário mesmo, algo como:

estoque = {
    "notebook": {"quantidade": 1000, "preço": 5.300},
    "teclado": {"quantidade": 500, "preço": 500},
    "mause": {"quantidade": 200, "preço": 300},
    "monitor": {"quantidade": 100, "preço": 800},
}
Enter fullscreen mode Exit fullscreen mode

Isso pode parecer um pouco repetitivo, mas não tem problema e deixa a escrita do código muito mais fácil de interpretar, exemplo:

# novo código
if quantidade <= estoque[produto]['quantidade']:
# em vez de
if quantidade <= estoque[produto][0]:
Enter fullscreen mode Exit fullscreen mode
Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

Bem-vindo ao dev.to. Postar um código aqui, principalmente que você ache que teria algum valor para outras pessoas, ou até para você mesmo no futuro, é uma forma de conteúdo interessante. Assim, gostaria de aproveitar para dar algumas dicas simples para deixá-lo ainda melhor:

  • Se você escrever uma pequena apresentação do problema que o código resolve, ou descrevendo o que ele faz, ajuda a ter algum contexto para começar a lê-lo. Eu precisei ler o código uma vez para tentar entender qual era o propósito do código, e outra para analisar o código. Alguma coisa entre uma e quatro frases, pode dar muita informação. Isso também pode te ajudar a lembrar o que é esse código no futuro.
  • Outra coisa simples que pode ser feito é utilizar o sintax highlighting do markdown, no caso é só dizer na linha que abre o bloco de código que a baixo terá um código Python escrevendo simplesmente python.