1° Desafio de código: Agrupamento de Vendas por Categoria 2/2
O Desafio
O objetivo é implementar um sistema para gerenciar dados de vendas e calcular o total dessas vendas. Posteriormente, esses dados poderão ser exportados para o Power BI, permitindo uma análise detalhada. Temos duas classes já estruturadas: Venda
e Relatorio
. A classe Venda
contém informações de cada transação, como produto, quantidade e valor. Já a classe Relatorio
será responsável por adicionar essas vendas e calcular o total.
A estrutura de classe e a Entrada segue o mesmo modelo do artigo anterior: "1° Desafio de código: Explorando Técnicas de POO com Python 1/2"
Saída de Dados
A saída será o valor total das vendas, calculado com base nas informações fornecidas.
Implementação do Código
Aqui está a implementação da classe Relatorio
e a função principal (main
), que permite a adição das vendas e o cálculo do total:
class Venda:
def __init__(self, produto, quantidade, valor):
self.produto = produto
self.quantidade = quantidade
self.valor = valor
class Relatorio:
def __init__(self):
self.vendas = []
def adicionar_venda(self, venda):
if instancia(venda, Venda):
self.vendas.append(venda)
else:
print("Erro: O objeto não é uma instância da classe Venda.")
def calcular_total_vendas(self):
total = 0
for venda in self.vendas:
total += venda.quantidade * venda.valor
return total
def main():
relatorio = Relatorio()
for i in range(3):
produto = input("Digite o nome do produto: ")
quantidade = int(input("Digite a quantidade: "))
valor = float(input("Digite o valor unitário: "))
venda = Venda(produto, quantidade, valor)
relatorio.adicionar_venda(venda)
total_vendas = relatorio.calcular_total_vendas()
print(f"Total de vendas: R$ {total_vendas:.2f}")
Explicação do Código
- Método
adicionar_venda
:
- Verifica se o objeto recebido é uma instância da classe
Venda
usandoinstancia(venda, Venda)
. - Se for, adiciona a venda à lista de vendas (
self.vendas
). - Caso contrário, exibe uma mensagem de erro.
- Método
calcular_total_vendas
:
- Percorre todas as vendas na lista
self.vendas
. - Para cada venda, multiplica a quantidade pelo valor unitário e acumula o resultado na variável
total
. - Retorna o total calculado.
- Função
main
:
- Recebe as informações de três vendas do usuário (produto, quantidade e valor).
- Adiciona essas vendas ao relatório através do método
adicionar_venda
. - Após isso, utiliza o método
calcular_total_vendas
para obter o total de vendas e o exibe formatado com duas casas decimais.
Conclusão
Este sistema simples permite a gestão eficiente de vendas, verificando a validade das entradas e calculando corretamente o total de vendas. A flexibilidade do código permite fácil adaptação para a exportação dos dados para o Power BI, facilitando a análise de dados e a visualização das vendas em relatórios dinâmicos. A implementação da POO neste caso é essencial para organizar e reutilizar o código de forma eficiente e escalável.