Oii, Patricia.
Trabalhar com o laço while exige atenção redobrada à indentação, pois ela define exatamente o que faz parte da repetição e o que deve acontecer apenas no final. Notei que o comportamento do seu terminal mostra a mensagem "Estoque Esgotado" repetidas vezes, o que indica que ela entrou no ciclo de repetição.
Uma análise detalhada sobre como ajustar esse comportamento e como o Python interpreta essas linhas:
No Python, o espaço no início da linha determina o bloco de código. No seu script atual, a linha 6 está alinhada com as linhas 4 e 5. Isso faz com que o computador entenda que "imprimir estoque esgotado" é uma tarefa que deve ser feita em cada venda.
Pra que o aviso de esgotado apareça apenas quando o estoque chegar a zero (após o laço terminar), basta remover os espaços iniciais da linha 6.
estoque = 5
while estoque > 0:
estoque -= 1
print(f"Venda Realizada! Estoque Restante: {estoque}")
# Esta linha deve ficar fora do while (sem espaços extras)
print("Estoque Esgotado")
Você utilizou o operador estoque -= 1. Ele ajuda a reduzir o valor da variável de forma direta. Sem essa linha, o programa entraria em um loop infinito, pois o valor do estoque nunca mudaria e a condição estoque > 0 seria sempre verdadeira.
Ao observar o terminal, sempre que notar um comportamento repetitivo que deveria ser único, verifique se a linha de código não está "dentro" de um laço for ou while.
Conseguiu perceber como a posição da margem esquerda mudou completamente a lógica do que o usuário vê no final?