Advertisement
andre373

Validador e gerador de CPF

Sep 16th, 2016
778
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.13 KB | None | 0 0
  1. # Script feito em python 3.5
  2. # Criado por: André Luis
  3. # Validador e gerador de cpf(válidos) - criado com o objetivo de testes de software.
  4. # Qualquer critica é bem vinda.
  5. # Ultima atualização: 11/10/2016 às 16:18
  6. ######################################################################################
  7. from tkinter import *
  8. from tkinter import messagebox
  9. import random
  10.  
  11.  
  12. def main ():  
  13.     '''Funcão inicial - Janela'''
  14.     global textSaida, caixaEntrada    
  15.     escrita = 'Gerador e validador de cpf,\nfeito para testes em programas!'
  16.     #############################################
  17.     janela=Tk()
  18.     janela.geometry('300x295+500+250')
  19.     janela.title('Validador de CPF')
  20.     janela.resizable(width=False, height=False)
  21.     janela['bg']='lavender'
  22.     #############################################
  23.     caixaEntrada = Entry(janela,width=25,font=('havana 10 italic'))
  24.     caixaEntrada.place(x=60,y=30)
  25.     caixaEntrada.focus()
  26.     #############################################
  27.     texto = Label(janela,text='CPF',font=('havana 10 italic'),bg='lavender')
  28.     text2= Label(janela,text=escrita, font=('havana 12 italic'),bg='lavender',fg='gray')
  29.     texto.place(x=20,y=30)
  30.     text2.place(x=10,y=195)
  31.     #############################################
  32.     bt1 = Button(janela,text='Validar',width=9,command=bt_validador)
  33.     bt2 = Button(janela,text='Gerar',width=9,command=bt_gera_cpf)
  34.     bt3 = Button(janela,text='Sair',width=9,command=bt_sair)
  35.     bt4 = Button(janela,text='Limpar',width=9,command=bt_limpar)
  36.     bt1.place(x=60,y=60)
  37.     bt2.place(x=167,y=60)
  38.     bt3.place(x=167,y=255)
  39.     bt4.place(x=60,y=255)
  40.     #############################################
  41.     textSaida=Text(janela,width=22,height=4,font=('havana 12 bold'))
  42.     textSaida.place(x=20,y=100)
  43.     #############################################
  44.     linha = Canvas(janela,width=280,height=1,bg='gray')
  45.     linha2 = Canvas(janela,width=280,height=1,bg='gray')
  46.     linha.place(x=10,y=240)
  47.     linha2.place(x=10,y=190)
  48.     #############################################    
  49.     janela.mainloop()
  50.  
  51. def bt_validador():
  52.  
  53.     ''' Função responsável por receber os numeros e verficiar se é apenas numeros'''
  54.     cpf = caixaEntrada.get().replace(".","").replace("-","")    
  55.     while cpf.isdigit() == False or len(cpf) != 11:
  56.         #textSaida.insert(INSERT,caixaEntrada.get())
  57.         caixaEntrada.delete(0,END)
  58.         messagebox.showinfo('CPF','Cpf Invalido')
  59.         return
  60.  
  61.     cpf_falso(cpf)
  62.  
  63.     if calculo_digitos(cpf,9) == False:
  64.         textSaida.delete(1.0,END)        
  65.         caixaEntrada.delete(0,END)
  66.         messagebox.showinfo('CPF','Cpf inválido')
  67.         textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
  68.  
  69.     if calculo_digitos(cpf,10) == True:
  70.         textSaida.delete(1.0,END)    
  71.         caixaEntrada.delete(0,END)
  72.         messagebox.showinfo('CPF','Cpf válido')
  73.         textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
  74.     else:
  75.         textSaida.delete(1.0,END)            
  76.         caixaEntrada.delete(0,END)
  77.         messagebox.showinfo('CPF','Cpf inválido!')
  78.         textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
  79.  
  80. def calculo_digitos(n, digito):
  81.     ''' Função responsavel por calcular os digitos 10 e 1 do cpf- o Paramentro
  82.   N = CPF || digito = digito a calcular'''
  83.     contador = 0
  84.     z = (digito+1)
  85.     for x in n[0:digito]:
  86.         x = int(x)
  87.         mult = z * x
  88.         contador+=mult
  89.         z-=1
  90.     resto = (contador%11)
  91.     if resto < 2:
  92.         resto=0
  93.     else:
  94.         resto = 11 - resto
  95.     if resto != int(n[digito]):
  96.         return False
  97.     else:
  98.         return True
  99.  
  100. def cpf_falso(n):
  101.     ''' Função responsável para controlar os cpf com números iguais.'''
  102.     if n == "11111111111" or n == "22222222222" or n == "33333333333":
  103.         print("Cpf invalido")
  104.  
  105.     if n == "44444444444" or n == "55555555555" or n == "66666666666":
  106.         print("Cpf invalido")
  107.  
  108.     if n == "77777777777" or n == "88888888888" or n == "99999999999":
  109.         print("Cpf invalido")
  110.  
  111. def bt_gera_cpf():    
  112.     ''' Função responsável por gerar 9 números aleatorios'''
  113.     textSaida.delete(1.0,END)
  114.     n=""
  115.     for x in range(9):
  116.         n+= "".join(str(random.randint(0,9)))
  117.     gera_digitos(n,9)
  118.     n+="".join(str(num))
  119.     gera_digitos(n,10)
  120.     n+="".join(str(num))    
  121.     messagebox.showinfo('CPF',"Gerado Com sucesso!")
  122.     textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*n))
  123.  
  124. def gera_digitos(n,dig):
  125.     '''Função responsavel por gerar os digitos 10 e 11 validos para o cpf
  126.   O Paramentro n = os 9 digitos do gera _cpf ||| dig = digito a calcular '''
  127.     global num
  128.     contador = 0
  129.     num=0
  130.     dig = dig +1
  131.     for x in n[0:dig]:
  132.         x = int(x)
  133.         mult = dig * x
  134.         contador+=mult
  135.         dig-=1
  136.         resto = (contador%11)
  137.         if resto < 2:
  138.             num=0
  139.         else:
  140.             num = 11 - resto
  141.  
  142. def bt_limpar():
  143.     caixaEntrada.delete(0,END)
  144.     textSaida.delete(1.0,END)
  145.     caixaEntrada.focus()
  146.  
  147. def bt_sair():
  148.     exit()  
  149.  
  150. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement