def cpf_entra():
try:
cpf = str(input("Informe o CPF(SOMENTE NÚMEROS): "))
except ValueError as e:
with open ( "erros.log" , "a" , encoding = "utf-8" ) as arquivo :
agora = datetime.datetime.now ( )
data_str = agora.strftime ( '%d/%m/%Y %H:%M' )
arquivo.write ( f'Erro = {str ( e )}, {cpf}, {data_str}\n' )
arquivo.close ( )
print ( f'\033[31mCPF INVÁLIDO \033[m' )
except Exception as e :
print ( "Ocorreu um erro inesperado: " , e, type(e))
cpf_formatado = cpf[:3] + "." + cpf [3:6] + "." + cpf[6:9] + "-" + cpf[9:11]
cpf = cpf_formatado.replace('.', '').replace('-', '')
print('*' * 50)
print(f"\033[32mO CPF informado foi :\033[m {cpf_formatado}")
print('*' * 50)
# gera e salva CPF no arquivo resultado.txt
with open("resultado.txt", "a", encoding = "utf-8")as arquivo:
aceito = 'Cpf VÁLIDO!'
agora = datetime.datetime.now ( )
data_str = agora.strftime('%d/%m/%Y %H:%M')
arquivo.write(f'CPF = {str(cpf)}, {aceito}, {data_str}\n')
arquivo.close()
if len(cpf) !=11:
valido = 0
for dig in range(0, 11):
valido += int(cpf[dig])
dig += 1
if len(set(cpf)) == 1:
raise ValueError("Todos os dígitos são IGUAIS!")
def valida_10Dig(cpf , dg2 , data_str):
soma = 0
count = 10
cpf = list(str(cpf))
for i in range(0, len(cpf) - 2):
soma = soma + cpf[i] * count
i += 1
count -= 1
dg1 = 11 - (soma % 11)
if dg1 >= 10:
dg1 = 0
if int(cpf[9]) != dg1 or int(cpf[10]) != dg2:
with open("erros.log", "a", encoding = "utf-8") as arquivo:
erro_3 = 'Digitos verificadores INVÁLIDOS!'
arquivo.write(f'Erro = {str(erro_3)}, {cpf}, {data_str}\n')
arquivo.close()
print(f'\033[31mCPF INVÁLIDO\033[m')
else:
aceito = 'Cpf VÁLIDO!'
print(f'\033[34m*** CPF VÁLIDO ***\033[m')
def valida_11Dig(cpf, dg1, data_str):
soma = 0
count = 10
cpf = list(str(cpf))
for j in range(1, len(cpf) - 1):
soma = soma + (int(cpf[j]) * count)
j += 1
count -= 1
dg2 = 11 - (soma % 11)
if dg2 >= 10:
dg2 = 0
if int(cpf[9]) != dg1 or int(cpf[10]) != dg2:
with open("erros.log", "a", encoding = "utf-8") as arquivo:
erro_3 = 'Digitos verificadores INVÁLIDOS!'
arquivo.write(f'Erro = {str(erro_3)}, {cpf}, {data_str}\n')
arquivo.close()
print(f'\033[31mCPF INVÁLIDO\033[m')
else:
print(f'\033[34m*** CPF VÁLIDO ***\033[m')
ZGVmIGNwZl9lbnRyYSgpOgogICAgdHJ5OgogICAgICAgIGNwZiA9IHN0cihpbnB1dCgiSW5mb3JtZSBvIENQRihTT01FTlRFIE7Dmk1FUk9TKTogIikpCiAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgIHdpdGggb3BlbiAoICJlcnJvcy5sb2ciICwgImEiICwgZW5jb2RpbmcgPSAidXRmLTgiICkgYXMgYXJxdWl2byA6CiAgICAgICAgICAgIGFnb3JhID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93ICggKQogICAgICAgICAgICBkYXRhX3N0ciA9IGFnb3JhLnN0cmZ0aW1lICggJyVkLyVtLyVZICVIOiVNJyApCiAgICAgICAgICAgIGFycXVpdm8ud3JpdGUgKCBmJ0Vycm8gPSB7c3RyICggZSApfSwge2NwZn0sIHtkYXRhX3N0cn1cbicgKQogICAgICAgICAgICBhcnF1aXZvLmNsb3NlICggKQogICAgICAgIHByaW50ICggZidcMDMzWzMxbUNQRiBJTlbDgUxJRE8gXDAzM1ttJyApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGUgOgogICAgICAgIHByaW50ICggIk9jb3JyZXUgdW0gZXJybyBpbmVzcGVyYWRvOiAiICwgZSwgdHlwZShlKSkKCiAgICBjcGZfZm9ybWF0YWRvID0gY3BmWzozXSArICIuIiArIGNwZiBbMzo2XSArICIuIiArIGNwZls2OjldICsgIi0iICsgY3BmWzk6MTFdCiAgICBjcGYgPSBjcGZfZm9ybWF0YWRvLnJlcGxhY2UoJy4nLCAnJykucmVwbGFjZSgnLScsICcnKSAgICAKICAgIHByaW50KCcqJyAqIDUwKQogICAgcHJpbnQoZiJcMDMzWzMybU8gQ1BGIGluZm9ybWFkbyBmb2kgOlwwMzNbbSB7Y3BmX2Zvcm1hdGFkb30iKQogICAgcHJpbnQoJyonICogNTApICAgIAogICAgIyBnZXJhIGUgc2FsdmEgQ1BGIG5vIGFycXVpdm8gcmVzdWx0YWRvLnR4dAogICAgd2l0aCBvcGVuKCJyZXN1bHRhZG8udHh0IiwgImEiLCBlbmNvZGluZyA9ICJ1dGYtOCIpYXMgYXJxdWl2bzoKICAgICAgICBhY2VpdG8gPSAnQ3BmIFbDgUxJRE8hJwogICAgICAgIGFnb3JhID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93ICggKQogICAgICAgIGRhdGFfc3RyID0gYWdvcmEuc3RyZnRpbWUoJyVkLyVtLyVZICVIOiVNJykKICAgICAgICBhcnF1aXZvLndyaXRlKGYnQ1BGID0ge3N0cihjcGYpfSwge2FjZWl0b30sIHtkYXRhX3N0cn1cbicpCiAgICAgICAgYXJxdWl2by5jbG9zZSgpICAgIAoKICAgIGlmIGxlbihjcGYpICE9MTE6CiAgICAgICAgdmFsaWRvID0gMAogICAgICAgIGZvciBkaWcgaW4gcmFuZ2UoMCwgMTEpOgogICAgICAgICAgICB2YWxpZG8gKz0gaW50KGNwZltkaWddKQogICAgICAgICAgICBkaWcgKz0gMQogICAgICAgIGlmIGxlbihzZXQoY3BmKSkgPT0gMToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVG9kb3Mgb3MgZMOtZ2l0b3Mgc8OjbyBJR1VBSVMhIikKICAgICAgCgoKCmRlZiB2YWxpZGFfMTBEaWcoY3BmICwgZGcyICwgZGF0YV9zdHIpOgogICAgc29tYSA9IDAKICAgIGNvdW50ID0gMTAKICAgIGNwZiA9IGxpc3Qoc3RyKGNwZikpCiAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3BmKSAtIDIpOgogICAgICAgIHNvbWEgPSBzb21hICsgY3BmW2ldICogY291bnQKICAgICAgICBpICs9IDEKICAgICAgICBjb3VudCAtPSAxCiAgICAgICAgZGcxID0gMTEgLSAoc29tYSAlIDExKQogICAgICAgIGlmIGRnMSA+PSAxMDoKICAgICAgICAgICAgZGcxID0gMAogICAgICAgICAgICBpZiBpbnQoY3BmWzldKSAhPSBkZzEgb3IgaW50KGNwZlsxMF0pICE9IGRnMjoKICAgICAgICAgICAgICAgIHdpdGggb3BlbigiZXJyb3MubG9nIiwgImEiLCBlbmNvZGluZyA9ICJ1dGYtOCIpIGFzIGFycXVpdm86CiAgICAgICAgICAgICAgICAgICAgZXJyb18zID0gJ0RpZ2l0b3MgdmVyaWZpY2Fkb3JlcyBJTlbDgUxJRE9TIScKICAgICAgICAgICAgICAgICAgICBhcnF1aXZvLndyaXRlKGYnRXJybyA9IHtzdHIoZXJyb18zKX0sIHtjcGZ9LCB7ZGF0YV9zdHJ9XG4nKQogICAgICAgICAgICAgICAgICAgIGFycXVpdm8uY2xvc2UoKQogICAgICAgICAgICBwcmludChmJ1wwMzNbMzFtQ1BGIElOVsOBTElET1wwMzNbbScpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYWNlaXRvID0gJ0NwZiBWw4FMSURPIScKICAgICAgICBwcmludChmJ1wwMzNbMzRtKioqIENQRiBWw4FMSURPICoqKlwwMzNbbScpCgoKZGVmIHZhbGlkYV8xMURpZyhjcGYsIGRnMSwgZGF0YV9zdHIpOgogICAgc29tYSA9IDAKICAgIGNvdW50ID0gMTAKICAgIGNwZiA9IGxpc3Qoc3RyKGNwZikpCiAgICBmb3IgaiBpbiByYW5nZSgxLCBsZW4oY3BmKSAtIDEpOgogICAgICAgIHNvbWEgPSBzb21hICsgKGludChjcGZbal0pICogY291bnQpCiAgICAgICAgaiArPSAxCiAgICAgICAgY291bnQgLT0gMQogICAgICAgIGRnMiA9IDExIC0gKHNvbWEgJSAxMSkKICAgICAgICBpZiBkZzIgPj0gMTA6CiAgICAgICAgICAgIGRnMiA9IDAKICAgICAgICAgICAgaWYgaW50KGNwZls5XSkgIT0gZGcxIG9yIGludChjcGZbMTBdKSAhPSBkZzI6CiAgICAgICAgICAgICAgICB3aXRoIG9wZW4oImVycm9zLmxvZyIsICJhIiwgZW5jb2RpbmcgPSAidXRmLTgiKSBhcyBhcnF1aXZvOgogICAgICAgICAgICAgICAgICAgIGVycm9fMyA9ICdEaWdpdG9zIHZlcmlmaWNhZG9yZXMgSU5Ww4FMSURPUyEnCiAgICAgICAgICAgICAgICAgICAgYXJxdWl2by53cml0ZShmJ0Vycm8gPSB7c3RyKGVycm9fMyl9LCB7Y3BmfSwge2RhdGFfc3RyfVxuJykKICAgICAgICAgICAgICAgICAgICBhcnF1aXZvLmNsb3NlKCkKICAgICAgICAgICAgICAgIHByaW50KGYnXDAzM1szMW1DUEYgSU5Ww4FMSURPXDAzM1ttJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KGYnXDAzM1szNG0qKiogQ1BGIFbDgUxJRE8gKioqXDAzM1ttJyk=