2
respostas

[Projeto] Faça como eu fiz: textos, loops e APIs

Nesta aula, aprendemos a manipular listas, dicionários, laços de repetição e funções para corrigir textos e integrar chamadas de API. Agora é a sua chance de revisar e exercitar os conteúdos vistos nesta aula, se ainda não colocou em prática. Para isso:

  • Configure a estrutura de repetição for para iterar sobre listas e dicionários;
  • Imprima cada item de uma lista individualmente;
  • Utilize o operador += para atualizar índices em loops;
  • Percorra dicionários exibindo chaves e pares chave-valor;
  • Gere sequências numéricas com a função range;
  • Valide números pares usando a operação de resto (%);
  • Crie funções para processar strings com strip, upper e replace;
  • Aplique o método split para eliminar espaços extras;
  • Reúna as palavras com o método join para formatar textos;
  • Implemente funções que retornem valores processados;
  • Integre a correção de nomes com funções personalizadas;
  • Padronize diferentes textos usando a função criada;
  • Utilize random.choice para alocar elementos de forma aleatória;
  • Monte dicionários contendo nomes corrigidos e dados associados;
lista_nomes_dos_meses = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]
lista_posicoes_dos_meses = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

dict_meses = [
    {"nome": "Janeiro"  , "posição": 1},
    {"nome": "Fevereiro", "posição": 2},
    {"nome": "Março"    , "posição": 3},
    {"nome": "Abril"    , "posição": 4},
    {"nome": "Maio"     , "posição": 5},
    {"nome": "Junho"    , "posição": 6},
    {"nome": "Julho"    , "posição": 7},
    {"nome": "Agosto"   , "posição": 8},
    {"nome": "Setembro" , "posição": 9},
    {"nome": "Outubro"  , "posição": 10},
    {"nome": "Novembro" , "posição": 11},
    {"nome": "Dezembro" , "posição": 12},
]


print("Impressões das Listas: \n")
print("Impressão da Lista: lista_nomes_dos_meses")
n=0
while n < len(lista_nomes_dos_meses):
  print(lista_nomes_dos_meses[n])
  n += 1


print("\n\nImpressão da Lista: lista_posicoes_dos_meses")
for i in range(len(lista_posicoes_dos_meses)):
  print(lista_posicoes_dos_meses[i])

print("\n\nImpressão das Listas: lista_nomes_dos_meses e lista_posicoes_dos_meses")
for i in range(len(lista_nomes_dos_meses)):
  for j in range(len(lista_posicoes_dos_meses)):
    if lista_posicoes_dos_meses[j] == i + 1:
       print(f"Mês: {lista_nomes_dos_meses[i]} - Posição: {lista_posicoes_dos_meses[j]}")

print("\n\nImpressão dos meses Pares:")
for i in range(len(lista_posicoes_dos_meses)):
        if lista_posicoes_dos_meses[i] % 2 == 0:
            print(f"Mês: {lista_nomes_dos_meses[i]} - Posição: {lista_posicoes_dos_meses[i]}")
            
print("\n\nImpressão dos Dicionários: \n")
print("Impressão do Dicionário: dict_meses")
for i in range(len(dict_meses)):
  print(dict_meses[i])


texto_exemplo1 = "Laranja    PErA  rIO "

def corrigir_texto(texto_exemplo1):
  texto_corrigido = texto_exemplo1.strip().upper().replace("  ", " ").split()
  texto_corrigido = " ".join(texto_corrigido)
  return texto_corrigido

corrigir_texto(texto_exemplo1)


lista_de_participantes = ["Aline", "Rafael", "Carla", "José", "Roberto"]
lista_de_premios = ["Torradeira", "Cafeteira", "Xícaras", "Pratos", "Geladeira"]

import random
def sorteio(lista_de_participantes, lista_de_premios):
    premio_sorteado = random.choice(lista_de_premios)
    participante_sorteado = random.choice(lista_de_participantes)

    dict_sorteio = {
        "participante": participante_sorteado,
        "premio": premio_sorteado
    }
    print(dict_sorteio)

sorteio(lista_de_participantes, lista_de_premios)


funcionarios = {
    "funcionario1": "AliNE SOUza",
    "funcionario2": "RAFael   PereIRA",
    "funcionario3": "CarLA FerNANdes   ",
    "funcionario4": "   José OLIVeira",
    "funcionario5": "Roberto    LIMa  "
}

for chave in funcionarios:
  funcionarios[chave] = corrigir_texto(funcionarios[chave])

print(funcionarios)
2 respostas

Nesta aula, aprendemos a manipular listas, dicionários, laços de repetição e funções para corrigir textos e integrar chamadas de API. Agora é a sua chance de revisar e exercitar os conteúdos vistos nesta aula, se ainda não colocou em prática. Para isso:

  • Crie uma função que percorra uma lista de e-mails com for;
  • Faça chamadas de API para resumir o conteúdo de e-mails;
  • Empregue f-strings para formatar os resumos dinamicamente;
  • Utilize enumerate para numerar os e-mails na iteração;
  • Teste a função e verifique a saída dos resumos com separadores.
def emails_dos_funcionarios(lista_de_emails):
  for i in len(emails):
    print(f"E-mails dos funcionários da empresa: {emails[i]}")

  emails = [
    "aline.souza@empresa.com",
    "rafael.pereira@empresa.com",
    "carla.fernandes@empresa.com",
    "jose.oliveira@empresa.com",
    "roberto.lima@empresa.com"
  ]

  emails_dos_funcionarios(emails)



!pip install -q groq

import os
from google.colab import userdata

os.environ["GROQ_API_KEY"] = userdata.get("GROQ_API_KEY")

from groq import Groq

client = Groq()
completion = client.chat.completions.create(
    model="openai/gpt-oss-20b",
    messages=[
      {
        "role": "user",
        "content": "Crie o corpo de 10 e-mails em Português BR com assuntos diversos em uma lista Python."
      }
    ],
    temperature=1, # 0 - o menos criativo possível; 2 - o mais criativo possível
    max_completion_tokens=7000,
    top_p=1,
    reasoning_effort="medium",
    stream=True,
    stop=None
)

for chunk in completion:
    print(chunk.choices[0].delta.content or "", end="")

emails = [
    """Prezado(a) João,

Espero que você esteja bem. Gostaria de lembrá-lo de que a reunião de alinhamento para o projeto X ocorrerá na próxima quarta-feira, às 10h, na sala de conferências 2B. Por favor, traga o relatório de progresso atualizado.

Agradeço sua atenção e aguardo sua confirmação.

Atenciosamente,
Ana
""",
    """Olá Maria,

Obrigado por enviar a proposta de orçamento. Após revisão, estamos de acordo com os valores apresentados. Poderia, por gentileza, enviar a fatura em PDF até sexta-feira?

Fico à disposição para qualquer esclarecimento.

Um abraço,
Pedro
""",
    """Caro time,

É com prazer que anuncio o lançamento da nova plataforma de gestão de projetos, que já está disponível na intranet. Não esqueçam de atualizar suas credenciais de acesso e explorar os recursos de automação que foram adicionados.

Boa jornada a todos!
""",
    """Oi Carlos,

Seu pedido #1234 já está em processo de envio. Estimamos entrega em 2 a 3 dias úteis. Em anexo, você encontrará o comprovante de rastreamento.

Qualquer dúvida, é só me chamar.

Obrigado!
""",
    """Prezada equipe de RH,

Segue anexo o calendário de eventos corporativos para o próximo trimestre. Por favor, confirmem sua presença nas sessões de treinamento e nas confraternizações.

Atenciosamente,
Gabriel
""",
    """Bom dia, Luana,

Em anexo, você encontrará o relatório de vendas do último semestre. Gostaria de marcar uma reunião para discutir estratégias de crescimento para o próximo período.

Qual horário funciona melhor para você?

Obrigada,
Mariana
""",
    """Olá,

Seu cadastro no sistema de avaliação de desempenho foi concluído. Para acessar sua ficha, basta entrar no portal com o usuário e senha cadastrados. Lembre-se de preencher os campos de autoavaliação antes do prazo final (15/06).

Qualquer dúvida, estou à disposição.

Att.,
Equipe de Gestão
""",
    """Caro Rodrigo,

Agradecemos a parceria no último projeto. Em anexo, envio a ata da reunião de encerramento e os próximos passos a serem seguidos.

Vamos em busca do próximo desafio juntos!

Abraços,
Sofia
""",
    """Prezada equipe de marketing,

Precisamos de novas ideias para a campanha de Natal. Por favor, envie sugestões até o dia 30/11. As melhores ideias serão premiadas com um vale-presente.

Boa criatividade!

Atenciosamente,
Carlos
""",
    """Oi, Ana,

Conforme combinado, segue em anexo o contrato revisado para a prestação de serviços. Peço que revise os termos e, caso esteja tudo em ordem, retorne a assinatura digital.

Obrigado pela colaboração.

Abraço,
Roberto
"""
]


def resumir_emails(lista_de_emails):
    for numero, email in enumerate(lista_de_emails):
        completion = client.chat.completions.create(
            model="openai/gpt-oss-20b",
            messages=[
            {
              "role": "user",
              "content": f"Resuma os corpos de e-mails em apenas 1 linha, explicando o motivo do e-mail. Email: {email}"
            }
            ],
        )

        resumo = completion.choices[0].message.content
        print(f"E-mail {numero + 1}: {resumo}")
        print("-" * 50)

    
resumir_emails(emails)

Olá, Thayane. Como vai?

Parabéns pelo excelente projeto! É empolgante ver como você aplicou uma série de conceitos fundamentais de Python — desde a manipulação básica de strings e listas até a integração com APIs de Inteligência Artificial (como a Groq). Ser capaz de automatizar tarefas como o resumo de e-mails é uma habilidade de alto valor no mercado de IA Aplicada.

Seu código está muito bem estruturado, mas notei um pequeno detalhe técnico na função emails_dos_funcionarios que pode gerar um erro de execução (NameError ou UnboundLocalError). No seu exemplo, você tenta usar a variável emails dentro do loop antes de ela ter sido definida, e utiliza len(emails) dentro de um range() de forma que falta a palavra reservada range.

Para agregar valor ao seu aprendizado, aqui estão algumas observações e melhorias práticas:

  • Uso do enumerate: Você aplicou o enumerate corretamente na função de resumo. Essa é uma das formas mais "pythonicas" de iterar, pois nos dá o índice e o valor simultaneamente, evitando o uso de contadores manuais como n += 1.
  • Melhoria na Função de Correção: Na sua função corrigir_texto, você usou .replace(" ", " ") seguido de .split(). Uma dica de ouro: o método .split() sem argumentos já remove automaticamente todos os espaços em branco extras (inclusive tabulações e quebras de linha), transformando-os em um único separador quando você usa o .join().
  • Tratamento de API: Ao trabalhar com modelos como o gpt-oss-20b, lembre-se que chamadas em loop (como na função resumir_emails) podem atingir limites de taxa (Rate Limits). Em projetos maiores, é boa prática adicionar um pequeno intervalo ou tratar erros de conexão.

Abaixo, deixo uma sugestão de como a função de exibição de e-mails ficaria mais fluida:

def emails_dos_funcionarios(lista_de_emails):
    # Usando f-string e o próprio item da lista
    for email in lista_de_emails:
        print(f"E-mail do funcionário: {email}")

# Defina a lista antes de chamar a função
lista_emails = [
    "aline.souza@empresa.com",
    "rafael.pereira@empresa.com"
]

emails_dos_funcionarios(lista_emails)

Sua implementação de IA para resumir textos mostra que você já compreendeu como a Engenharia de Prompt se integra ao código. Continue explorando diferentes valores de temperature para ver como o resumo se comporta!

Espero que possa ter lhe ajudado!