catbean.pages.dev

Como validar CPF em tempo real durante digitação em console?

Validar um CPF em tempo real durante a digitação pode parecer complexo, mas com um script Python simples é possível garantir que o usuário insira apenas um número válido. Este método é eficaz porque combina validação matemática com feedback instantâneo, evitando que dados incorretos sejam processados posteriormente.

Pré-requisitos

Script Python para validação em tempo real

O script abaixo utiliza a biblioteca readline para capturar a entrada do usuário caractere por caractere, validando o CPF conforme ele é digitado. A validação segue o algoritmo oficial, verificando os dois dígitos verificadores.

import sys
import re

def validar_cpf(cpf):
    cpf = re.sub(r'[^0-9]', '', cpf)
    if len(cpf) != 11 or cpf == cpf[0] * 11:
        return False
    def calculo_digito(digs):
        return (sum(int(digs[i]) * (10 - i) for i in range(len(digs))) * 10) % 11 % 10
    d1 = calculo_digito(cpf[:9])
    d2 = calculo_digito(cpf[:9] + str(d1))
    return str(d1) + str(d2) == cpf[9:]

def main():
    print("Digite o CPF (apenas números):")
    cpf_digitado = ""
    while True:
        char = sys.stdin.read(1)
        if char == '\n':
            break
        if char.isdigit():
            cpf_digitado += char
            if len(cpf_digitado) == 11:
                if validar_cpf(cpf_digitado):
                    print(f"\nCPF válido: {cpf_digitado[:3]}.{cpf_digitado[3:6]}.{cpf_digitado[6:9]}-{cpf_digitado[9:]}")
                else:
                    print("\nCPF inválido. Tente novamente.")
                break
            print(f"CPF digitado: {cpf_digitado}", end='\\r')

if __name__ == "__main__":
    main()

Exemplo Prático

Entrada do Usuário Validação em Tempo Real Resultado Final
123.456.789-09 Atualiza a cada dígito digitado CPF válido: 123.456.789-09
111.111.111-11 Atualiza a cada dígito digitado CPF inválido. Tente novamente.

Conclusão

Com este script, você automatiza a validação de CPF em tempo real, garantindo que apenas números corretos sejam aceitos. Este método elimina erros manuais e agiliza processos que dependem de dados cadastrais precisos.