1
resposta

Controle de estoque

estoque = 5

while estoque > 0:
    estoque -= 1 
    print(f"Venda realizada! Estoque restante: {estoque}")

print("Estoque esgotado")
1 resposta

Olá, Juliana. Como vai?

O seu algoritmo de controle de estoque está excelente, direto ao ponto e logicamente impecável! O uso do laço while foi a escolha perfeita para esse cenário, pois você precisava repetir a ação de venda enquanto uma condição específica (estoque > 0) permanecesse verdadeira.

Analisando a estrutura do seu código, a ordem das instruções está ótima:

  • O operador de atribuição subtrativa estoque -= 1 reduz corretamente uma unidade a cada iteração (venda).
  • A mensagem do print logo em seguida reflete o estado real e atualizado do estoque.
  • O print("Estoque esgotado") está fora do escopo do while (sem indentação), garantindo que ele seja executado apenas uma vez, exatamente quando o laço quebrar.

Para complementar os seus estudos e agregar ainda mais valor à sua jornada com Python, podemos pensar em como esse sistema evoluiria em um cenário real de e-commerce ou loja física.

No mercado, o estoque não costuma diminuir sozinho de um em um; a redução depende do comportamento de um cliente. Podemos simular isso transformando o seu código em um sistema interativo, onde o usuário escolhe a quantidade de itens que deseja comprar, e o programa valida se o estoque comporta essa venda antes de atualizá-lo.

Veja esse exemplo de refatoração aplicando essa boa prática:

estoque = 5

while estoque > 0:
    print(f"\nEstoque atual disponível: {estoque}")
    quantidade_desejada = int(input("Quantas unidades deseja comprar? "))
    
    # Validação de negócio: o cliente não pode comprar mais do que tem disponível
    if quantidade_desejada <= 0:
        print("Quantidade inválida! Digite um valor maior que zero.")
    elif quantidade_desejada <= estoque:
        estoque -= quantidade_desejada
        print(f"Venda de {quantidade_desejada} item(ns) realizada com sucesso!")
    else:
        print(f"Não foi possível realizar a venda. Estoque insuficiente para essa quantidade!")

print("\nEstoque completamente esgotado. Fim das operações.")

Curiosidade técnica: Observe que o laço while analisa a condição a cada nova rodada. Assim que o estoque chega a 0, ele nem inicia o próximo ciclo e pula direto para a mensagem final. Essa validação no topo é chamada de teste pré-remoto de condição.

Parabéns pela resolução limpa e correta da atividade!

Espero que possa ter lhe ajudado!

Aliás, para liberar as funcionalidades de todos os apps, ative a Atividade nos apps do Gemini.