Capítulo 5 — Fundamentos de scripts em Python
Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX013.
flowchart TD
N0["5.1 Primeiros scripts"]
N1["5.3 Datas e números"]
N2["5.4 Estrutura para reutilização"]
N0 --> N1 --> N2
N2 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX013"]
Desenho lógico
flowchart LR
N0["5.1 Primeiros scripts"]
N1["5.3 Datas e números"]
N2["5.4 Estrutura para reutilização"]
N0 --> N1 --> N2 --> Q["EX013"]
[5.1 Primeiros scripts]
|
v
[5.3 Datas e números]
|
v
[5.4 Estrutura para reutilização]
|
v
[Exemplo resolvido] --> [Exercício EX013]
Objetivos de aprendizagem
Você vai (1) escrever scripts Python para tarefas com dados; (2) tratar arquivos e erros; (3) estruturar scripts para reutilização.
5.1 Primeiros scripts
Ravi escreve scripts Python que leem exportações CSV do portal das prestadoras com o módulo csv, contam linhas e resumem as ordens por situação. Ele usa funções para cada etapa: ler, verificar e resumir. A Sra. Moreau revisa o código e pede nomes mais claros, como count_jobs_by_status em vez de f2. Ela explica que nomes claros tornam os scripts legíveis meses depois, quando o autor já esqueceu os detalhes e um colega precisa entendê-los depressa. Ravi renomeia todas as funções de seus scripts naquela semana e passa a revisar os nomes antes de cada envio ao repositório.
5.2 Tratando erros
As exportações das prestadoras às vezes chegam sem colunas ou com linhas em branco a mais. O primeiro script de Ravi quebra com esses arquivos. Ele acrescenta verificações que confirmam a presença das colunas esperadas e ignoram linhas em branco, com mensagens claras explicando cada problema. Quando falta uma coluna, o script para e informa qual é, em vez de produzir resultados errados em silêncio. Ele aprende que parar de forma ruidosa é melhor do que continuar quieto com dados ruins. Acrescenta ao repositório um pequeno conjunto de arquivos defeituosos de teste, para conferir esses comportamentos sempre que o script mudar.
5.3 Datas e números
Os dados de reparo contêm datas em vários formatos, porque as prestadoras usam sistemas diferentes. Ravi usa o módulo datetime para interpretar cada formato esperado e registra todo valor que não corresponde a nenhum. Também converte custos de texto para números com cuidado, tratando símbolos de moeda e separadores. Ele descobre que uma prestadora usa a ordem dia-mês e outra a ordem mês-dia, o que tinha feito datas de conclusão serem lidas errado em relatórios anteriores. Ravi leva o caso ao curador, que pede às duas prestadoras que confirmem seus formatos, e os relatórios anteriores são corrigidos com uma nota explicando a mudança.
5.4 Estrutura para reutilização
Ravi organiza seus scripts em um módulo com funções compartilhadas para ler arquivos, interpretar datas e gravar resultados, além de pequenos scripts separados para cada tarefa. Ele escreve testes simples para o interpretador de datas, com exemplos de cada prestadora. A Sra. Moreau observa que funções reutilizáveis fazem com que uma correção, como um novo formato de data, seja feita em um só lugar, o que reduz a chance de scripts diferentes tratarem os mesmos dados de modos diferentes. Quando uma terceira prestadora chega, Ravi acrescenta seu formato ao interpretador compartilhado e todos os scripts passam a tratá-lo corretamente.
Exemplo resolvido
Ravi escreve scripts baseados em funções com nomes claros, interrompe a execução com aviso quando falta uma coluna, descobre a confusão entre as ordens dia-mês e mês-dia das prestadoras e organiza funções compartilhadas com testes.
Caso sintético. As exportações são sintéticas.
Erros e limites
Scripts que continuam em silêncio diante de entradas ruins produzem resultados errados.
Exercícios
- EX013 — Conselho sobre nomes. Que conselho sobre nomes a Sra. Moreau deu? Rubrica: 3 = usar nomes descritivos como count_jobs_by_status;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
- EX014 — Coluna ausente. O que o script faz quando falta uma coluna? Rubrica: 3 = para e informa qual é;; 2 = parcialmente correto;; 1 = continua;; 0 = nenhuma.
- EX015 — Confusão de datas. Que problema de datas Ravi encontrou? Rubrica: 3 = prestadoras usavam as ordens dia-mês e mês-dia;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
Continue estudando — aula 05 (capítulo 05 de 30)
← Capítulo 04 · Índice das aulas · Capítulo 06 →
Continue para a próxima aula já escrita.