Validar um CPF (Cadastro de Pessoas Físicas) no Brasil pode parecer complexo devido ao seu algoritmo de verificação, mas com uma função Python bem estruturada, você pode automatizar esse processo em segundos, garantindo precisão e evitando erros manuais.
O primeiro passo é criar uma função que receba o CPF como string, remova caracteres não numéricos e valide seu formato. O CPF brasileiro possui 11 dígitos, sendo os dois últimos os dígitos verificadores calculados a partir dos nove primeiros.
def validar_cpf(cpf: str) -> bool:
# Remover caracteres não numéricos
cpf = ''.join(filter(str.isdigit, cpf))
# Verificar se o CPF tem 11 dígitos
if len(cpf) != 11:
return False
# Verificar se todos os dígitos são iguais (ex: 111.111.111-11)
if cpf == cpf[0] * 11:
return False
return True
Após a validação básica, implementamos o algoritmo que calcula os dígitos verificadores. O primeiro dígito é calculado multiplicando os 9 primeiros dígitos por pesos decrescentes de 10 a 2, somando os resultados, e encontrando o resto da divisão por 11. O segundo dígito segue o mesmo processo, mas inclui o primeiro dígito verificador e usa pesos de 11 a 2.
def validar_cpf(cpf: str) -> bool:
cpf = ''.join(filter(str.isdigit, cpf))
if len(cpf) != 11 or cpf == cpf[0] * 11:
return False
# Calcular o primeiro dígito verificador
soma = sum(int(digito) * peso for digito, peso in zip(cpf[:9], range(10, 1, -1)))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Calcular o segundo dígito verificador
soma = sum(int(digito) * peso for digito, peso in zip(cpf[:9] + str(digito1), range(11, 1, -1)))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
# Comparar os dígitos calculados com os informados
return str(digito1) == cpf[9] and str(digito2) == cpf[10]
Para garantir que a função funciona corretamente, é essencial testá-la com CPFs válidos e inválidos. Você pode criar um bloco de testes simples ou usar a função diretamente no seu script.
# Testando a função
cpfs_teste = [
"123.456.789-09", # Inválido
"529.982.247-25", # Válido
"111.111.111-11", # Inválido (todos os dígitos iguais)
"529.982.24725" # Válido (sem pontuação)
]
for cpf in cpfs_teste:
print(f"CPF: {cpf} - Válido: {validar_cpf(cpf)}")
| CPF de Entrada | Formato | Válido? |
|---|---|---|
| 529.982.247-25 | Com pontuação | Sim |
| 529982247-25 | Com hífen | Sim |
| 52998224725 | Apenas números | Sim |
| 111.111.111-11 | Sequência inválida | Não |
| 123.456.789-09 | CPF aleatório | Não |
Com esta função Python, você tem uma ferramenta robusta e eficiente para validar CPFs brasileiros em seus sistemas ou scripts. O algoritmo implementado segue as regras oficiais do governo, garantindo que apenas CPFs legítimos sejam aceitos, e pode ser facilmente integrado a qualquer aplicação que necessite dessa validação.