Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Desafio: Automatizando tarefas

  1. Quais são os dados de entrada necessários?
    Dado de Entrada Descrição
    Lista de participantes Todas as pessoas que acessaram a transmissão
    Horário de entrada Momento em que cada participante entrou na live
    Horário de saída Momento em que cada participante saiu da live
    Horário de início do evento Hora oficial em que a transmissão começou
    Horário de fim do evento Hora oficial em que a transmissão terminou

  2. Como o algoritmo pode verificar a condição de presença completa?
    Em vez de só calcular quanto tempo cada participante ficou conectado e comparar com a duração total, achei mais preciso comparar os horários diretamente:

O participante entrou antes ou no mesmo horário do início do evento?
O participante saiu depois ou no mesmo horário do fim do evento?

Se as duas coisas forem verdadeiras, ele acompanhou a live do começo ao fim. Isso evita um problema: só comparar a duração poderia enganar o sistema (por exemplo, alguém que entrou atrasado mas ficou depois que a live acabou teria o mesmo tempo total de quem assistiu certinho, mas não viu o começo).

  1. Que decisão precisa ser tomada com base nesses dados?
    Se horário de entrada ≤ início do evento E horário de saída ≥ fim do evento → o participante assistiu tudo → enviar e-mail de agradecimento.
    Senão (entrou atrasado ou saiu antes do fim) → não enviar e-mail.

  2. Qual deve ser a ação final?
    Enviar o e-mail de agradecimento automaticamente só para quem cumpriu a condição acima. Para os demais, o sistema não faz nada, apenas segue para o próximo participante da lista.
    Algoritmo em linguagem natural

Algoritmo de Envio de Agradecimentos:
Obter a lista de participantes, com horário de entrada e saída de cada um.
Obter o horário de início e o horário de fim oficiais do evento.
Para cada participante da lista, repetir:
Verificar se o horário de entrada é menor ou igual ao início do evento.
Verificar se o horário de saída é maior ou igual ao fim do evento.
Se as duas condições forem verdadeiras, enviar e-mail de agradecimento para esse participante.
Senão, não enviar nada e seguir para o próximo participante.
Repetir o passo 3 até que todos os participantes tenham sido verificados.
Encerrar o processo.

from datetime import datetime

horario que o evento comecou e terminou oficialmente

inicio_evento = datetime.strptime("19:00", "%H:%M")
fim_evento = datetime.strptime("21:00", "%H:%M")

lista de participantes com horario de entrada e saida na transmissao

participantes = [
{"nome": "Marcos", "entrada": "19:00", "saida": "21:00"},
{"nome": "Juliana", "entrada": "19:10", "saida": "21:00"},
{"nome": "Renato", "entrada": "19:00", "saida": "20:30"},
{"nome": "Patricia", "entrada": "18:55", "saida": "21:05"},
]

def presenca_foi_completa(entrada, saida):
hora_entrada = datetime.strptime(entrada, "%H:%M")
hora_saida = datetime.strptime(saida, "%H:%M")

# so conta como presenca completa se entrou ate o inicio e ficou ate o fim
if hora_entrada <= inicio_evento and hora_saida >= fim_evento:
    return True
return False

def enviar_email(nome):
# aqui ia a integracao real com o servico de email
print(f"E-mail de agradecimento enviado para {nome}")

participantes_aprovados = []

for pessoa in participantes:
completou = presenca_foi_completa(pessoa["entrada"], pessoa["saida"])

if completou:
    participantes_aprovados.append(pessoa["nome"])
    enviar_email(pessoa["nome"])
else:
    print(f"{pessoa['nome']} nao assistiu ao evento completo, sem envio")

print("\nTotal de participantes que receberam o agradecimento:", len(participantes_aprovados))

1 resposta

Olá, Gusttavo! Como vai?

Parabéns pela realização das atividades!

Vi que você apresentou uma solução muito bem pensada, explorando o uso de dados de entrada para estruturar o problema, aplicando condições lógicas para verificar a presença completa e garantindo uma ação final automatizada com envio de e-mails. Esse cuidado mostra atenção ao fluxo do algoritmo, clareza na explicação e preocupação em aproximar a lógica da realidade prática de eventos online.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Validação de dados: garantir que os horários inseridos estejam sempre no formato correto.
  • Integração real: conectar o algoritmo a um serviço de e-mail para que o envio seja automático e escalável.
  • Generalização: permitir que o sistema funcione para diferentes durações de eventos sem precisar alterar o código.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: o que você considera mais interessante nesse tipo de exercício, aplicar a lógica condicional para validar presença ou expandir o algoritmo para incluir métricas como tempo médio de permanência dos participantes?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!