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.
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()
| 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. |
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.