1
resposta

09 Desafio: hora da prática

Desafio concluído conforme link abaixo:

https://colab.research.google.com/drive/1nFG0M0Z7QtZPAgS45HcNhc2Pei3XwgUq?usp=sharing

1 resposta

Olá, Deivide! Como vai?

Parabéns por concluir o desafio e por já compartilhar o seu notebook do Google Colab com a flag de compartilhamento configurada corretamente (usp=sharing)! Isso facilita demais para que toda a comunidade do fórum consiga abrir, rodar e aprender com o seu código.

Como você é Analista de Inteligência de Vendas, dominar o capítulo de Tratamento de Exceções (try-except) em Python é um divisor de águas na sua rotina. No dia a dia de BI e análise de dados de vendas, nós lidamos o tempo todo com arquivos externos (CSV, Excel), conexões com APIs de CRMs e inputs manuais de planilhas de vendedores que, frequentemente, vêm com "ruídos" (linhas em branco, textos onde deveriam ser números, divisões por zero, etc.).

Para agregar valor ao seu post e conectar com a sua realidade profissional, vamos analisar como as estruturas que você praticou no desafio salvam nossos relatórios de vendas de "quebrarem" no meio da execução.


Onde o try-except brilha na Inteligência de Vendas?

Imagine que você criou um script em Python para automatizar o cálculo do Ticket Médio ou da Taxa de Conversão das equipes regionais com base em uma planilha. Veja a diferença entre um código desprotegido e o código com as boas práticas do desafio:

Cenário 1: Código Sem Tratamento (Se houver um erro, o relatório trava)

Se a planilha contiver uma filial nova que ainda não realizou nenhuma venda no mês, a quantidade de vendas será 0. O Python vai estourar um erro de ZeroDivisionError e interromper a automação na hora, deixando você sem o restante do relatório.

Cenário 2: Código Protegido (Conceito do Desafio)

Utilizando a lógica de exceções que você aplicou no seu projeto, nós contornamos o erro matematicamente e garantimos que o script continue rodando até o final:

dados_vendas = [
    {"filial": "São Paulo", "faturamento": 150000, "vendas": 120},
    {"filial": "Rio de Janeiro", "faturamento": 0, "vendas": 0}, # Filial sem vendas!
    {"filial": "Belo Horizonte", "faturamento": 85000, "vendas": 70}
]

for dados in dados_vendas:
    try:
        ticket_medio = dados["faturamento"] / dados["vendas"]
    except ZeroDivisionError:
        # Tratamos a exceção para a automação não quebrar
        ticket_medio = 0.0
    except KeyError as erro:
        print(f"Erro: A coluna {erro} está faltando nos dados da filial {dados['filial']}.")
        continue
        
    print(f"Filial: {dados['filial']} | Ticket Médio: R$ {ticket_medio:.2f}")

O próximo passo: else e finally

No desafio do curso, além do except, nós somos introduzidos aos blocos complementares:

  • else: Executa o código apenas se tudo correu bem no try (ótimo para garantir que um e-mail com o relatório só seja enviado se o cálculo deu certo).
  • finally: Executa de qualquer forma, independentemente de ter dado erro ou não (perfeito na engenharia de dados para fechar a conexão com o banco de dados SQL ou fechar a planilha que foi aberta, evitando o consumo desnecessário de memória).

Excelente iniciativa em documentar e subir o seu projeto estruturado no Colab. Essa habilidade de blindar o código contra falhas é o que diferencia scripts amadores de automações corporativas confiáveis. Continue com esse ótimo ritmo de estudos!

Espero que possa ter lhe ajudado!