Olá, Deivide. Como vai?
Sua resolução está absolutamente correta e muito bem estruturada! O uso do laço while é a escolha perfeita para esse cenário, pois o controle de estoque depende de uma condição dinâmica (o estoque ser maior que zero) e não de uma quantidade fixa e predefinida de repetições.
Você aplicou muito bem o operador de decremento estoque -= 1 e posicionou corretamente a mensagem de "Estoque esgotado" fora do laço, garantindo que ela seja exibida apenas uma vez, exatamente quando o fluxo de repetição for encerrado.
Para agregar ainda mais valor ao seu aprendizado e conectar o exercício com a sua atuação como Analista de Inteligência de Vendas, separei duas melhorias práticas que aproximam esse código de um sistema de estoque da vida real:
1. Evitando o estoque negativo (Validação de Venda)
No modelo atual, o código assume que cada venda consome exatamente 1 unidade. Mas e se um cliente tentar comprar 3 unidades de uma vez só?
Em sistemas de vendas reais, nós solicitamos a quantidade desejada pelo cliente e usamos uma estrutura condicional if dentro do while para verificar se o estoque dá conta do pedido antes de finalizar a operação. Veja essa evolução:
estoque = 5
while estoque > 0:
# Simula o cliente pedindo uma quantidade de livros
quantidade_pedido = 2
if quantidade_pedido <= estoque:
estoque -= quantidade_pedido
print(f"Venda de {quantidade_pedido} unidades realizada! Estoque restante: {estoque}")
else:
print(f"Não foi possível realizar a venda. Estoque insuficiente! Estoque atual: {estoque}")
# Força a saída ou trata o fluxo para não entrar em loop infinito
break
print("Estoque esgotado ou insuficiente para novas vendas.")
2. Ponto de Pedido (Alerta de Estoque Baixo)
Uma métrica fundamental na Inteligência de Vendas é o Ponto de Pedido (Reorder Point), que consiste em disparar um alerta para o time de compras quando o produto atinge um nível crítico, evitando que o estoque zere completamente e a empresa perca vendas.
Você pode implementar essa lógica inserindo uma checagem rápida dentro do seu laço original:
estoque = 5
while estoque > 0:
estoque -= 1
print(f"Venda realizada! Estoque restante: {estoque}")
# Se o estoque chegar a 2 unidades, dispara um aviso preventivo
if estoque == 2:
print("--- ALERTA COMERCIAL: Estoque atingiu o nível crítico! Emitir pedido de compra. ---")
print("Estoque esgotado.")
Com essa modificação, além de automatizar a baixa, o seu algoritmo passa a gerar inteligência de negócio em tempo real para a tomada de decisões.
Parabéns pela dedicação em resolver todos os desafios de laços de repetição com tanta qualidade e clareza!
Espero que possa ter lhe ajudado!