Validar um CPF manualmente pode ser trabalhoso e propenso a erros. Com um script Python, você automatiza todo o processo, garantindo precisão e rapidez na verificação dos dígitos verificadores.
Crie uma função que receba uma string contendo o CPF e retorne True se válido ou False se inválido. A função deve remover caracteres não numéricos e verificar se o CPF tem 11 dígitos.
def validar_cpf(cpf: str) -> bool:
# Remover caracteres não numéricos
cpf = ''.join(filter(str.isdigit, cpf))
# Verificar se tem 11 dígitos
if len(cpf) != 11:
return False
return True
Adicione a lógica para calcular e validar os dois dígitos verificadores do CPF. Isso envolve multiplicar os dígitos por pesos específicos e verificar o resto da divisão por 11.
def validar_cpf(cpf: str) -> bool:
cpf = ''.join(filter(str.isdigit, cpf))
if len(cpf) != 11:
return False
# Calcular primeiro dígito verificador
soma = sum(int(digito) * (10 - i) for i, digito in enumerate(cpf[:9]))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Calcular segundo dígito verificador
soma = sum(int(digito) * (11 - i) for i, digito in enumerate(cpf[:10]))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
# Comparar com os dígitos do CPF
return str(digito1) == cpf[9] and str(digito2) == cpf[10]
Execute a função com CPFs de exemplo para garantir que ela funciona corretamente. Você pode criar um bloco main para testar manualmente ou usar um framework de testes.
if __name__ == "__main__":
cpfs_teste = [
"123.456.789-09", # Inválido
"529.982.247-25", # Válido
"529.982.247-26", # Inválido
"111.111.111-11", # Inválido (sequência)
]
for cpf in cpfs_teste:
print(f"{cpf}: {'Válido' if validar_cpf(cpf) else 'Inválido'}")
| CPF de Entrada | Válido? |
|---|---|
| 529.982.247-25 | Sim |
| 123.456.789-09 | Não |
| 111.111.111-11 | Não |
| 529.982.247-26 | Não |
Com este método, você cria um validador de CPF robusto em poucos minutos, eliminando a necessidade de cálculos manuais e garantindo a integridade dos dados em seus sistemas.