Mapa da aula
Aula 03 publicada. Mapa, exemplo, EX007.
flowchart TD
N0["3.1 Um resumo dos reportes"]
N1["Laboratório — Reportes semanais por clínica e catego"]
N2["3.2 Funções e laços"]
N3["3.3 Tratamento seguro dos dados"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX007"]
Desenho lógico
flowchart LR
N0["3.1 Um resumo dos reportes"]
N1["Laboratório — Reportes semanais por clínica e catego"]
N2["3.2 Funções e laços"]
N3["3.3 Tratamento seguro dos dados"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX007"]
[3.1 Um resumo dos reportes]
|
v
[Laboratório — Reportes semanais por clínica e catego]
|
v
[3.2 Funções e laços]
|
v
[3.3 Tratamento seguro dos dados]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX007]
Objetivos de aprendizagem
Você vai (1) escrever um script em Python para resumir e-mails reportados; (2) usar funções e laços; (3) tratar os dados com segurança.
3.1 Um resumo dos reportes
O prestador de TI da Brightwell encaminha os e-mails reportados para uma caixa postal compartilhada e exporta uma lista semanal com data, clínica e categoria do assunto. Lucas escreve um script em Python que lê a lista e conta os reportes por clínica e por categoria. Ele usa um laço para percorrer cada linha e um dicionário para guardar as contagens. O script imprime um resumo curto para a reunião semanal de TI, substituindo uma contagem manual que levava meia hora e muitas vezes tinha erros. O prestador o lê toda segunda-feira.
Laboratório — Reportes semanais por clínica e categoria
# Weekly reports by clinic and category (synthetic export).
rows = [("Harbour", "fake invoice")] * 4 + [("Harbour", "fake login")] * 2 + [("Elm Road", "fake invoice")] * 3 + \
[("Elm Road", "other")] * 2 + [("Station", "fake login")] * 3 + [("Station", "fake invoice")] * 2 + [("Mill", "other")] * 1
def count(rows, i):
c = {}
for r in rows: c[r[i]] = c.get(r[i], 0) + 1
return dict(sorted(c.items(), key=lambda x: -x[1]))
print("by clinic:", count(rows, 0)); print("by category:", count(rows, 1))
Execute com python3 lab_tally.py. Saída verificada:
by clinic: {'Harbour': 6, 'Elm Road': 5, 'Station': 5, 'Mill': 1}
by category: {'fake invoice': 9, 'fake login': 5, 'other': 3}
3.2 Funções e laços
Lucas organiza o script em funções: uma lê os dados, uma conta por um campo escolhido e uma imprime uma tabela. Usar uma única função de contagem para clínicas e categorias evita repetir código. Ele testa cada função numa pequena amostra que consegue conferir à mão. Aprende que nomes de função claros ajudam os outros a entender seu código, o que importa porque o prestador de TI vai executá-lo quando Lucas não estiver lá. Ele também acrescenta comentários curtos no início de cada função, descrevendo a entrada, a saída e as premissas que ela faz sobre os dados.
3.3 Tratamento seguro dos dados
A exportação contém os assuntos dos e-mails, que às vezes incluem nomes de pacientes. Lucas muda a exportação para incluir apenas uma categoria escolhida por quem revisa, e não o assunto completo, de modo que o script nunca lida com informações de pacientes. Ele guarda o arquivo numa pasta restrita e apaga as exportações antigas depois que o resumo é feito. Tratar os dados com segurança faz parte de programar com responsabilidade, sobretudo na saúde, onde a confidencialidade dos pacientes é um dever legal e ético. A gerente do consultório confirma a mudança com o encarregado de proteção de dados antes da próxima exportação.
Exemplo resolvido
Lucas escreve uma contagem testada em Python com funções, remove os nomes de pacientes da exportação e restringe o armazenamento.
Caso sintético. Os dados são sintéticos.
Erros e limites
As categorias dependem de quem revisa. Scripts precisam de manutenção.
Exercícios
- EX007 — Problema da contagem manual. Que problema o script substituiu?
Mostrar critérios de avaliação
Rubrica: 3 = uma contagem manual lenta e sujeita a erros;; 2 = manual;; 1 = vago;; 0 = nenhuma. - EX008 — Categoria principal. Que categoria foi a mais comum no laboratório?
Mostrar critérios de avaliação
Rubrica: 3 = fake invoice (fatura falsa), com 9;; 2 = faturas;; 1 = vago;; 0 = nenhuma. - EX009 — Remoção do assunto. Por que remover os assuntos dos e-mails da exportação?
Mostrar critérios de avaliação
Rubrica: 3 = podem conter nomes de pacientes;; 2 = privacidade;; 1 = vago;; 0 = nenhuma.
Síntese
Scripts simples e testados economizam tempo quando são construídos para tratar os dados com segurança.