Script Gerador de CPF's [Python]

Started by Kratos, 20 de April , 2006, 04:19:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Kratos

;D

Simples Scripr para gerar CPF Válidos, vc usa no terminal (prompt)

* Você pode escolher quantos CPF's quer gerar

Deem ai uma olhada !

# gerador de CPF

import random
import math

DEBUG = False

def debug(*string):
    import sys
    print >> sys.stderr, string

def gera_random():
    return random.randint(0, 9)

def mod(dividendo,divisor):
    x = dividendo - (math.floor(dividendo/divisor)*divisor)
    return round(x)

def cpf():
    # Gera os numeros randonomicos ;)
    n1 = gera_random()
    n2 = gera_random()
    n3 = gera_random()
    n4 = gera_random()
    n5 = gera_random()
    n6 = gera_random()
    n7 = gera_random()
    n8 = gera_random()
    n9 = gera_random()

    # Debugger purposes
    DEBUG and debug(n1, n2, n3, n4, n5, n6, n7, n8, n9)
   
    a1 = n9 * 2
    a2 = n8 * 3
    a3 = n7 * 4
    a4 = n6 * 5
    a5 = n5 * 6
    a6 = n4 * 7
    a7 = n3 * 8
    a8 = n2 * 9
    a9 = n1 * 10

    d1 = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9
    d1 = 11 - (mod(d1,11))

   
    if d1 >= 10:
        d1 = 0

    # Debugger purposes
    DEBUG and debug(a1, a2, a3, a4, a5, a6, a7, a8, a9, d1)
   
    a1 = d1 * 2
    a2 = n9 * 3
    a3 = n8 * 4
    a4 = n7 * 5
    a5 = n6 * 6
    a6 = n5 * 7
    a7 = n4 * 8
    a8 = n3 * 9
    a9 = n2 * 10
    a10 = n1 * 11

   
    d2 = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10
    d2 = 11 - (mod(d2,11))

   
    if d2 >= 10:
        d2 = 0

    # Debugger purposes
    DEBUG and debug(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, d2)


    # Resultado Final
    return "%d%d%d.%d%d%d.%d%d%d-%d%d" % \
            (n1, n2, n3,  n4, n5, n6,  n7, n8, n9,  d1, d2)


if __name__ == '__main__':
   
    message = "Bem-vindo ao Gerador de CPFs"
    print '\t%s\n' % message, '\t%s\n' % ('=' * len(message))

    user_response = raw_input('Ativar Debug (responda "sim" ativar)? ')
    if user_response.lower().strip() == "sim":
        DEBUG = True

    try:
        n_cpfs = input('Quantos CPFs aleatórios devem ser gerados? ')
        for i in xrange(n_cpfs):
            print cpf()
            if DEBUG:
                #
                print
    except ValueError, x:
        print 'Valor inválido ("%s")' % xERROR

Obs: Vamo agitar essa àrea aqui pessoal

Vlw
::: "A vida é bela pra quem sabe curtir" :::





Ðark$pawn

Parabéns Kratos... Vou dizer novamente, admiro muita seu amor pelo Python!!!

Gracias... ;)

rog

beleza

tem um link que da para a formula inicial ?

rog
realty.sys is corrupt :  reboot the universe (Y/N)

Kratos

Quote from: "rog"beleza

tem um link que da para a formula inicial ?

rog

???? Vc diz a Fórmula lógica dos CPF's ??
::: "A vida é bela pra quem sabe curtir" :::





whit3_sh4rk

Boa cara  ;)

Mandando bem em Python héin.. e como disse o DarkSpawn, sua paixão pela ling. é admiravel hehehe..

[]s

rog

a formula matematica  inicial para gerar cpf

ou vc inventou tambem o algoritmo ?

rog
realty.sys is corrupt :  reboot the universe (Y/N)

whit3_sh4rk

[rog]
Quoteou vc inventou tambem o algoritmo?
Você sabe que não cara.. não é necessário essas perguntas irônicas..

Alguns links sobre algoritmo de verificação de CPF:
http://www.clubedainformatica.com.br/documentos/mostraartigo.php?artigo=62
http://www2.fundao.pro.br/articles.asp?cod=23
http://www.lsd.ic.unicamp.br/projetos/e ... stas6.html


Google rox..

[]s

rog

@white_shark

obrigado pelos links

nao tinha ironia nehuma eu perguntei pelo kratos se dava para postar o link que explicava a formula usada para gerar cpf

nao sei o Kratos achou de ruim

do jeito que ele respondeu dava para desconfiar que ele criou a formula

rog
realty.sys is corrupt :  reboot the universe (Y/N)