-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgerador_de_cpf.py
66 lines (55 loc) · 2.47 KB
/
gerador_de_cpf.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
'''
Informações sobre o CPF:
O antepenúltimo dígito (o que está representado pelo “X” em 000.000.00X-00) indica o estado de origem.
0. Rio Grande do Sul
1. Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins
2. Amazonas, Pará, Roraima, Amapá, Acre e Rondônia
3. Ceará, Maranhão e Piauí
4. Paraíba, Pernambuco, Alagoas e Rio Grande do Norte
5. Bahia e Sergipe
6. Minas Gerais
7. Rio de Janeiro e Espírito Santo
8. São Paulo
9. Paraná e Santa Catarina
Validador de CPF: https://www.4devs.com.br/validador_cpf
'''
from random import randint as rd
def gera_cpf():
estado = int(input('Qual a origem do Estado do CPF Gerado?\n[0] Rio Grande do Sul\n[1] Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins\n[2] Amazonas, Pará, Roraima, Amapá, Acre e Rondônia\n[3] Ceará, Maranhão e Piauí\n[4] Paraíba, Pernambuco, Alagoas e Rio Grande do Norte\n[5] Bahia e Sergipe\n[6] Minas Gerais\n[7] Rio de Janeiro e Espírito Santo\n[8] São Paulo\n[9] Paraná e Santa Catarina\n[Qualquer outro valor para sair]: '))
cpf = []
cpf_multi = []
counter = soma = digito = 0
qtd_digitos = 10
# Gera os 9 primeiros dígitos aleatórios
if estado <= 9:
for pos in range(0, 9, 1):
if pos == 8:
cpf.append(estado)
else:
cpf.append(rd(0, 9))
else:
for pos in range(0, 9, 1):
cpf.append(rd(0, 9))
# Gera os dois digitos verificadores (10º dígito e o 11º dígito)
for digitos_verificadores in range(0, 2):
for pos in range(qtd_digitos, 1, -1):
cpf_multi.append(cpf[counter] * pos)
soma += cpf_multi[counter]
counter += 1
# Verifica o RESTO da operação: Resto da SOMA da multiplicação dividido por 11; Caso seja < 2, dígito = 0, senão dígito é 11 - RESTO
if soma % 11 < 2:
digito = 0
else:
digito = 11 - soma % 11
cpf.append(digito)
soma = counter = digito = 0
qtd_digitos += 1
cpf_multi = []
# Formata a string
for position, numero in enumerate(cpf):
if position % 3 == 0 and position != 9 and position != 0:
print('.', end='')
elif position == 9:
print('-', end='')
print(numero, end='')
gera_cpf()