Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Projeto] Controle de estoque | Praticando Python: laços for e while

Sistema de Controle de Estoque com informações adicionais sobre as vendas

class ControladorEstoque:
    def __init__(self, nome_livro, quantidade_inicial):
        self.nome_livro = nome_livro
        self.estoque = quantidade_inicial
        self.vendas_realizadas = 0
def realizar_venda(self):
    """Realiza uma venda se houver estoque disponível"""
    if self.estoque > 0:
        self.estoque -= 1
        self.vendas_realizadas += 1
        print(f"Venda realizada! Estoque restante: {self.estoque}")
        return True
    else:
        print("Estoque esgotado")
        return False

def vender_todos(self):
    """Vende todos os exemplares disponíveis"""
    print(f"Iniciando vendas de '{self.nome_livro}'")
    print(f"Estoque inicial: {self.estoque} exemplares\n")
    
    while self.realizar_venda():
        pass
    
    print(f"\nTotal de vendas realizadas: {self.vendas_realizadas}")

def consultar_estoque(self):
    """Retorna a quantidade de itens em estoque"""
    return self.estoque

Simulação de Vendas

if __name__ == "__main__":
    # Cria um controlador de estoque para um livro
    livro = ControladorEstoque("Dom Casmurro", 5)
# Realiza todas as vendas
livro.vender_todos()
1 resposta
solução!

Olá, Estudante! Tudo bem?

Obrigada por compartilhar seu projeto de controle de estoque aqui no fórum. Trabalhar com orientação a objetos em Python praticando conceitos como laços while, métodos com def e o uso correto do self é uma ótima forma de consolidar o aprendizado, e seu código pode ajudar muitos outros alunos que estão nessa mesma jornada.

O projeto está bem estruturado. A classe ControladorEstoque organiza o estado com atributos como nome_livro, quantidade_inicial, estoque e vendas_realizadas de forma clara e coesa. Cada método tem um papel bem definido: realizar_venda cuida da lógica de uma venda individual com return booleano, vender_todos usa um laço while elegante para vender todos os exemplares sem precisar de variável de controle extra, e consultar_estoque oferece uma consulta simples ao estado atual. O uso do print para acompanhar cada etapa do processo também torna a simulação de vendas mais didática e fácil de entender.

Vale observar um detalhe importante: no código postado, os métodos realizar_venda, vender_todos e consultar_estoque aparecem fora do bloco da classe ControladorEstoque. No arquivo original provavelmente estão corretamente indentados, mas é sempre bom revisar esse ponto. Em Python, a indentação define a estrutura do código, e todos os métodos precisam estar com um nível a mais dentro da classe para funcionar corretamente.

Conte com a Alura para continuar evoluindo nos seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Bons estudos!

Sucesso

Imagem da comunidade