Este script em Python realiza o sorteio de amigo secreto, garantindo que não haja autoatribuição (ou seja, ninguém tira a si mesmo) e permite incluir restrições personalizadas. Além disso, oferece a opção de enviar os resultados por e-mail.
- Recebe uma lista de participantes e seus e-mails.
- Permite configurar restrições (quem não pode tirar quem).
- Realiza o sorteio de maneira justa e aleatória.
- Garante que ninguém tire a si mesmo ou viole as restrições.
- Envia os resultados por e-mail automaticamente.
- Python 3.7 ou superior.
- Bibliotecas:
random
(padrão do Python)smtplib
(padrão do Python)email
(padrão do Python)
-
Clone o repositório:
git clone https://github.com/seu-usuario/amigo-secreto.git cd amigo-secreto
-
Edite o arquivo do script para incluir os seguintes dados:
-
Lista de participantes e seus e-mails:
nomes_emails = { "Mariana": "[email protected]", "Julia": "[email protected]", "João": "[email protected]", "Flavio": "[email protected]", "Regis": "[email protected]", "Tiago": "[email protected]", "Gustavo": "[email protected]", "Ana": "[email protected]", "Pedro": "[email protected]", "Gabi": "[email protected]" }
-
Restrições (opcional):
restricoes = { "Tiago": ["Julia"], "Gabi": ["Ana"], "Pedro": ["Mariana"] }
-
Credenciais do e-mail remetente:
email_remetente = "[email protected]" senha_remetente = "sua_senha"
-
-
Execute o script:
python amigo_secreto.py
O script realizará o sorteio e enviará e-mails com os resultados para cada participante.
-
sortear_amigo_secreto(nomes, restricoes)
- Argumentos:
nomes
(list): Lista de strings com os nomes dos participantes.restricoes
(dict): Dicionário onde as chaves são nomes e os valores são listas de quem o participante não pode tirar.
- Retorna: Um dicionário onde as chaves são os participantes e os valores são seus respectivos "amigos secretos".
- Garante que nenhuma restrição seja violada.
- Argumentos:
-
enviar_email(amigo, sorteado, email_amigo, email_remetente, senha_remetente)
- Argumentos:
amigo
(str): Nome do participante.sorteado
(str): Nome do amigo secreto do participante.email_amigo
(str): E-mail do participante.email_remetente
(str): E-mail do remetente.senha_remetente
(str): Senha do e-mail do remetente.
- Envia um e-mail para o participante informando quem ele tirou no sorteio.
- Argumentos:
nomes_emails = {
"Alice": "[email protected]",
"Bob": "[email protected]",
"Carol": "[email protected]"
}
restricoes = {
"Alice": ["Bob"],
"Bob": ["Alice"]
}
email_remetente = "[email protected]"
senha_remetente = "sua_senha"
resultado = sortear_amigo_secreto(list(nomes_emails.keys()), restricoes)
for amigo, sorteado in resultado.items():
enviar_email(amigo, sorteado, nomes_emails[amigo], email_remetente, senha_remetente)
- Entrada de dados: você pode alterar a forma como os participantes são inseridos (por exemplo, carregar de um arquivo CSV ou permitir entrada manual).
- Envio de e-mails: ajuste o servidor de e-mail e porta, caso necessário.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Criado por Régis. Entre em contato para sugestões ou melhorias!