Receita: Gerador de CPF
Programa para gerar CPF. Escrito por ralobao ( Kandalf ).
Código
1 import random
2 import math
3
4
5 def gera_random(n):
6 """ Funcao para gerar um inteiro randomico entre 0 e 9 """
7 return random.randint(1,9)
8
9 def mod(dividendo,divisor):
10 """ Funcao pra retornar o resto da divisao de dois numeros """
11 x = dividendo - (math.floor(dividendo/divisor)*divisor)
12 return round(x)
13
14 def cpf():
15 """ Funcao pra gerar o bendito cpf """
16
17 # Gera os numeros randonomicos ;)
18 n = 9
19 n1 = gera_random(n)
20 n2 = gera_random(n)
21 n3 = gera_random(n)
22 n4 = gera_random(n)
23 n5 = gera_random(n)
24 n6 = gera_random(n)
25 n7 = gera_random(n)
26 n8 = gera_random(n)
27 n9 = gera_random(n)
28
29 # debugger purposes ;)
30 #print n1,n2,n3,n4,n5,n6,n7,n8,n9
31
32 # Contas e mais contas, dividir pra fica mais bonitinho
33 a1 = n9 * 2
34 a2 = n8 * 3
35 a3 = n7 * 4
36 a4 = n6 * 5
37 a5 = n5 * 6
38 a6 = n4 * 7
39 a7 = n3 * 8
40 a8 = n2 * 9
41 a9 = n1 * 10
42
43 # Soma os resultados de todas as contas anteriores e faz
44 # outra continha.. tudo regra do cpf, para ele ser valido :P
45 d1 = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9
46 d1 = 11 - (mod(d1,11))
47
48 # Caso d1 for maior que 10, o que nao pode ele sera igualado a 0
49 if d1>=10:
50 d1 = 0
51
52 # debugger purposes
53 #print n1,n2,n3,n4,n5,n6,n7,n8,n9
54
55 # Mesma coisa da de cima so que agora pra variavel d2
56 a1 = d1 * 2
57 a2 = n9 * 3
58 a3 = n8 * 4
59 a4 = n7 * 5
60 a5 = n6 * 6
61 a6 = n5 * 7
62 a7 = n4 * 8
63 a8 = n3 * 9
64 a9 = n2 * 10
65 a10 = n1 * 11
66
67 # ... rola a barra de rolagem pra cima que tu vai entender :P
68 d2 = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10
69 d2 = 11 - (mod(d2,11))
70
71 # chega de repeticao de codigo :)
72 if d2 >= 10:
73 d2 = 0
74
75 # debugger purposes
76 #print n1,n2,n3,n4,n5,n6,n7,n8,n9
77
78
79 # o esperado print final ... que magavilha
80 return "%d%d%d%s%d%d%d%s%d%d%d%s%d%d" % (n1,n2,n3,'.',n4,n5,n6,'.',n7,n8,n9,'-',d1,d2)
81
82 print cpf()
Exemplo de uso
Volta para CookBook.
Nome do autor da Receita