associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 1e 2004-02-24 02:28:15

Excluir mensagem

GeradorDeCpf

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

   1 import sys
   2 # Exemplo de como usar
   3 import geradorcpf
   4 print geradorcpf.cpf()

Volta para CookBook.


Nome do autor da Receita