Validador e gerador de CPF em Python
Publicado por Artur Rabelo (última atualização em 31/03/2020)
[ Hits: 29.339 ]
Homepage: https://github.com/artrabelo
Duas funções em Python, uma que valida um CPF informado pelo usuário e outra que gera um CPF válido.
Explicação do algoritmo para validação do CPF: https://dicasdeprogramacao.com.br/algoritmo-para-validar-cpf/
from random import randint def cpf_validate(numbers): # Obtém os números do CPF e ignora outros caracteres cpf = [int(char) for char in numbers if char.isdigit()] # Verifica se o CPF tem 11 dígitos if len(cpf) != 11: return False # Verifica se o CPF tem todos os números iguais, ex: 111.111.111-11 # Esses CPFs são considerados inválidos mas passam na validação dos dígitos # Antigo código para referência: if all(cpf[i] == cpf[i+1] for i in range (0, len(cpf)-1)) if cpf == cpf[::-1]: return False # Valida os dois dígitos verificadores for i in range(9, 11): value = sum((cpf[num] * ((i+1) - num) for num in range(0, i))) digit = ((value * 10) % 11) % 10 if digit != cpf[i]: return False return True def cpf_generate(): # Gera os primeiros nove dígitos (e certifica-se de que não são todos iguais) while True: cpf = [randint(0, 9) for i in range(9)] if cpf != cpf[::-1]: break # Gera os dois dígitos verificadores for i in range(9, 11): value = sum((cpf[num] * ((i + 1) - num) for num in range(0, i))) digit = ((value * 10) % 11) % 10 cpf.append(digit) # Retorna o CPF como string result = ''.join(map(str, cpf)) return result opcao = int(input('''[1] Validar um CPF [2] Gerar um CPF válido Opção: ''')) if opcao == 1: cpf = input('Digite o CPF: ') if cpf_validate(cpf): print('CPF válido.') else: print('CPF inválido.') elif opcao == 2: cpf = cpf_generate() if cpf_validate(cpf): print(f'CPF gerado: {cpf[:3]}.{cpf[3:6]}.{cpf[6:9]}-{cpf[9:]}') else: print('Inválido.')
Um programa simples para gerar uma tabuada em python com menu utilizando laco for while try except e
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Não consigo instalar o WineHQ no meu notebook vaio FE15 (Debian) (7)