seabeck.pages.dev

Como criar um validador de CPF em Python

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.

Pré-requisitos

Passo 1: Estruturar a função de validação

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

Passo 2: Implementar o cálculo dos dígitos verificadores

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]

Passo 3: Testar o validador

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'}")

Exemplo Prático

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

Conclusã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.