Skip to content

Instantly share code, notes, and snippets.

@danigfavero
Forked from MrCl0wnLab/cadastro.py
Last active February 12, 2020 13:11
Show Gist options
  • Save danigfavero/608f71546a937a0d3f29fad215282d39 to your computer and use it in GitHub Desktop.
Save danigfavero/608f71546a937a0d3f29fad215282d39 to your computer and use it in GitHub Desktop.
Estudo Python: Mini sistema de sorteio, Gera tickets para cada nome cadastrado em data_sorteio.
from random import shuffle
class Cadastro:
''' Recebe um cpf e gera um objeto Cadastro que possui um atributo para
guardar o ticket definido a partir do cpf passado.
'''
def __init__(self, cpf):
self.ticket = self.gera_ticket(cpf)
def gera_ticket(self, cpf):
ticket = list(str(id(cpf)))
shuffle(ticket)
ticket = self.normaliza(ticket)
return ticket
@staticmethod
def normaliza(string):
normalizado = ''
for caracter in string:
normalizado += caracter
return normalizado
quantidade nome email cpf codigo nascimento
5 Juliana Dantas de Andrade july.dantas@teste-hotmail.com 942909461465 322205 23/02/1989
5 Lais Vale de Melo lais25vm@teste-hotmail.com 4639948454 515105 24/02/1989
5 Silvaneide Rosa da Silva silvaneiderosa40@teste-teste-yahoo.com.br 942909461 515105 25/02/1989
5 Ana Lucia de Fatima Lopes lopes.filha@teste-hotmail.com 942909462 515105 26/02/1989
8 Denize Santos de Medeiros denize.medeiros@teste-teste-yahoo.com.br 942909463 515105 27/02/1989
5 Maria Elaine Felix maria.elaine.felix@teste-gmail.com 942909464 515105 28/02/1989
5 Édson Wânder Véras edsonveras9@teste-hotmail.com 942909465 223505 01/03/1989
5 Andreza Cristina Costa Fernandes andrezaccf@teste-teste-yahoo.com.br 942909466 223505 02/03/1989
5 Dagoberto Gonzalez Martinez dagoyana26@teste-gmail.com 942909467 225142 03/03/1989
7 Narriman dos Santos Barbosa narrisantosrn@teste-teste-yahoo.com.br 942909468 515105 04/03/1989
7 Tércio Guimarães de Oliveira tguimaraes@teste-hotmail.com 942909469 515105 05/03/1989
5 Ana Ivete Vale de Luciana Brasil smscaico@rn.teste-gov.br 942909470 515105 06/03/1989
5 José Alves Filho alvespedagogia@teste-teste-yahoo.com.br 942909471 515105 07/03/1989
5 Fabiana de Azevedo Guedes Sales fafaguedes@teste-teste-yahoo.com.br 942909472 515105 08/03/1989
6 Maria do Rosario Dantas dantaerosa@teste-hotmail.com 942909473 515105 09/03/1989
5 Jurema Sandra de Souza jussouza@outlook.com 942909474 515105 10/03/1989
5 Betiane Fernandes da Costa betiane@teste-hotmail.com.br 942909475 223505 11/03/1989
5 Maria Edith de Medeiros Silva elitaabc@teste-hotmail.com 942909476 515105 12/03/1989
6 Iasodaria Kaiwe Gomes dos Santos iadossantos@outlook.com 942909477 515105 13/03/1989
5 Alexsandra Pereira da Silva negaalepereira@teste-hotmail.com 942909478 515105 14/03/1989
10 Josicleia Pereira de Medeiros josic_l@teste-hotmail.com 942909479 515105 15/03/1989
7 Selma Santos de Melo selmamelo01@teste-gmail.com 942909480 515105 16/03/1989
5 Maria José Crispim de Araújo marj.crispim@holtmail.com 942909481 515105 17/03/1989
5 Jose Miguel Rivaflecha Vicente lizykarol13@teste-yahoo.es 942909482 225142 18/03/1989
5 Reinaldo Batista Sales Júnior reinaldos22@teste-teste-yahoo.com.br 942909483 515105 19/03/1989
1 Ana Karla dos Santos Silva an.karladossantos@teste-hotmail.com 942909484 223505 20/03/1989
5 Lorena Santos Dantas Saraiva lo_saraiva@teste-hotmail.com 942909485 223505 21/03/1989
5 Martha Concepcion Pujol Luna leiradiaz.mpl@teste-gmail.com 942909486 225142 22/03/1989
5 Roseane Cristina Santos de Medeiros roseanecristi@teste-hotmail.com 942909487 515105 23/03/1989
12 Kim Mansur kimmansur@teste-gmail.com 942909488 223605 24/03/1989
6 Marcela Fernandes de A B de Morais marcela-fernandes14@teste-hotmail.com 942909489 223505 25/03/1989
5 Ana Karla Silva de Carvalho ankcarvalho@teste-gmail.com 942909490 223272 26/03/1989
5 Maria Concebida Maia concebidamaia@teste-teste-yahoo.com.br 942909491 515105 27/03/1989
import csv
from random import randrange
from pessoa import Pessoa
from cadastro import Cadastro
tickets_cadastrados = []
with open('dados_sorteio.csv', mode='r') as arquivo_csv:
leitor_csv = csv.DictReader(arquivo_csv)
for linha in leitor_csv:
pessoa = Pessoa(linha['nome'], linha['nascimento'], linha['cpf'])
cadastro = Cadastro(pessoa.cpf)
pessoa.set_ticket(cadastro.ticket)
if pessoa.maioridade:
tickets_cadastrados.append(pessoa)
for ticket in range(10):
indice_aleatorio = randrange(len(tickets_cadastrados))
vencedor = tickets_cadastrados[indice_aleatorio]
print(f"[+]Nome: {vencedor.nome}")
print(f"[+]Ticket: {vencedor.ticket}\n")
from datetime import datetime
class Pessoa:
''' Recebe nome, data de nascimento e cpf de uma pessoa. Calcula sua
idade, checa se é menor de 18 anos e cria um objeto do tipo Pessoa com
esses atributos. Tem métodos que possibilitam definir um ticket pra
pessoa e criar um dicionário com seus respectivos dados.
'''
def __init__(self, nome, nascimento, cpf):
self.nome = nome
self.nascimento = nascimento
self.cpf = cpf
self.idade = self.calcula_idade()
self.maioridade = self.maior_de_idade()
self.ticket = None
def calcula_idade(self):
hoje = datetime.today()
nascimento = datetime.strptime(self.nascimento, '%d/%m/%Y')
return hoje.year - nascimento.year
def maior_de_idade(self):
return self.idade >= 18
def set_ticket(self, ticket):
self.ticket = ticket
def get_dados(self):
dados = {
'nome': self.nome,
'nascimento': self.nascimento,
'cpf': self.cpf,
'idade': self.idade,
'maior_de_idade': self.maioridade
}
return dados
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment