Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Atualizando quantidade produto

estoque = { 
    "Caderno universitário": 50, 
    "Caneta azul": 120, 
    "Borracha branca": 30 
} 

print("Lista de produtos e preços: ",estoque)

produto = input("Informe o nome produto a ser atualizado:")
estoque_novo = input("Informa a nova quantidade do produto:")

if produto in estoque:
   estoque[produto] = estoque_novo
   print(estoque)
else:
   print(f"Produto {produto} não encontrado na lista !")   

1 resposta
solução!

Bom dia!

Muito bem, a lógica está muito bem construída e o padrão de código excelente!

Contudo, há um pequeno erro no código.

estoque_novo = input("Informa a nova quantidade do produto:")

if produto in estoque:
   estoque[produto] = estoque_novo  # essa linha aqui
   print(estoque)

A variável estoque_novo está vindo como uma string. Portanto, o produto está sendo atualizado para uma string com o número da nova quantidade, e não o número em si.

Esse é a maior preocupação que devemos ter ao lidarmos com linguagens de tipagem dinâmica, como Python. Se não tomarmos cuidado, podemos acabar passando uma string para algo que deveria ser um int, e depois tentar fazer operações inválidas com esse dado, como:

estoque_minimo = estoque[produto] / 30  # Se estoque[produto] for uma string, vai estourar uma exceção aqui
preco_estoque = estoque[produto] * 2  # Se estoque[produto] for '50' ao invés de 50, teremos '5050' ao invés de 100  

Mas a lógica e o padrão de código estão sensacionais! Parabéns! Apenas lembre-se de prestar atenção para os tipos dos dados.