Validador e gerador de CPF em Python
Publicado por Artur Rabelo (última atualização em 31/03/2020)
[ Hits: 30.390 ]
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.')
Controle Remoto a Area de Trabalho
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Secure boot, artigo interessante, nada técnico. (5)
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









