1
resposta

[Projeto] Controle de Estoque

Este pensei em duas soluções e resolvi apontar as duas

#Solução 1
estoque = 5

for i in range(estoque, 0, -1):
    print(f'Venda realizada! Estoque restante: {i - 1}')

print("Estoque esgotado")
#Solução 2
estoque = 5

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

print("Estoque esgotado")
1 resposta

Olá, Marcelo. Como vai?

É excelente ver você explorando diferentes abordagens para resolver o mesmo problema! Essa é uma das principais características de uma pessoa desenvolvedora experiente: entender que existem vários caminhos na programação e saber analisar as vantagens de cada um.

Ambas as soluções chegam exatamente ao mesmo resultado esperado pelo exercício, mas elas utilizam filosofias de controle de fluxo bem diferentes. Vamos analisar os pontos fortes de cada uma:

Solução 1: Com o laço for

O uso do for com o range(estoque, 0, -1) é ótimo quando você tem um número definido de iterações (você sabe exatamente quantas vezes o ciclo vai rodar desde o início). O Python gerencia o decremento da variável i automaticamente a cada passo. O seu código ficou bem direto e limpo.

Solução 2: Com o laço while

O uso do while estoque > 0 é controlado por uma condição lógica. Enquanto essa condição for verdadeira, o código continua rodando. Repare que aqui você precisou controlar o decremento manualmente com a linha estoque = estoque - 1.


Qual é a melhor abordagem e como agregar valor?

Para este cenário específico onde o estoque inicial é fixo (estoque = 5), o for funciona muito bem. Contudo, em sistemas reais de controle de estoque de e-commerce ou lojas, a Solução 2 (com while) costuma ser a mais adequada e utilizada.

Isso acontece porque, em um cenário real, o estoque não diminui necessariamente de um em um de forma fixa. O cliente pode comprar 2, 3 ou mais itens de uma vez só! O laço while se adapta muito melhor a essa imprevisibilidade.

Veja um exemplo prático de como expandir a sua Solução 2 para um cenário real, permitindo que a quantidade vendida varie a cada ciclo:

estoque = 10

# O laço continuará rodando enquanto houver produtos no estoque
while estoque > 0:
    print(f"Estoque atual disponível: {estoque}")
    # Simulando a quantidade que o cliente quer comprar
    quantidade_comprada = int(input("Digite a quantidade de itens vendidos: "))
    
    if quantidade_comprada <= estoque:
        estoque = estoque - quantidade_comprada
        print(f"Venda realizada com sucesso!")
    else:
        print(f"Venda negada! Estoque insuficiente para essa quantidade.")
        
    print("-" * 30)

print("Estoque esgotado! É necessário fazer a reposição.")
  • Dica de sintaxe: Na sua Solução 2, a linha estoque = estoque - 1 pode ser escrita de forma simplificada como estoque -= 1. Esse operador de atribuição compacta é muito comum no dia a dia do mercado.

Parabéns por exercitar sua mente testando as duas estruturas. Dominar quando usar o for (iterações controladas) e o while (condições dinâmicas) é fundamental para o seu crescimento!

Espero que possa ter lhe ajudado!