Olá, Alex. Como vai?
O seu código ficou excelente! A implementação do laço while estoque > 0: está perfeita para o cenário de controle de estoque. O uso do operador de atribuição subtrativa estoque -= 1 foi aplicado corretamente para decrementar o valor a cada venda simulada, e o console do PyCharm mostra que o fluxo rodou exatamente como esperado, finalizando com a mensagem fora do loop assim que o estoque zerou.
Para agregar ainda mais valor ao seu aprendizado sobre o laço while, vale a pena entender uma característica importante dele: o risco do loop infinito.
Como o while depende de uma condição ser verdadeira para continuar rodando, se por algum motivo esquecermos de alterar a variável de controle dentro do bloco (no seu caso, a linha estoque -= 1), a condição estoque > 0 seria verdadeira para sempre. Isso faria o programa travar, consumindo processamento continuamente. Por isso, garantir que a variável mude a cada repetição é uma excelente prática.
Complementando o seu exercício, imagine que em um sistema real as vendas acontecem de forma dinâmica e o usuário pode escolher quantos itens quer comprar de uma vez. Podemos evoluir o seu código adicionando uma entrada de dados (input) e uma verificação para garantir que o sistema não venda mais do que o disponível.
Veja esta sugestão de evolução para o seu código:
# Inicializa o estoque com 5 exemplares
estoque = 5
print(f"Bem-vindo ao sistema! Estoque atual: {estoque} unidades.\n")
# O loop continua executando enquanto houver livros no estoque
while estoque > 0:
try:
# Permite ao usuário escolher a quantidade desejada
quantidade = int(input("Quantas unidades deseja comprar? "))
# Verifica se há estoque suficiente para a venda
if quantidade <= 0:
print("Por favor, digite uma quantidade maior que zero.\n")
elif quantidade <= estoque:
estoque -= quantidade
print(f"Venda realizada! Estoque restante: {estoque}\n")
else:
print(f"Não temos essa quantidade disponível. Estoque atual: {estoque}\n")
except ValueError:
print("Por favor, digite um número inteiro válido.\n")
# Mensagem final exibida fora do loop, após o estoque zerar
print("Estoque esgotado! Sistema encerrado.")
Com essa modificação, seu programa deixa de ser apenas uma simulação estática e passa a se comportar como um sistema interativo de verdade, tratando possíveis erros de digitação do usuário e respeitando o limite do estoque.
Parabéns pela dedicação e pela sequência de exercícios práticos que você vem desenvolvendo no PyCharm!
Espero que possa ter lhe ajudado!