From b1e283b5c5c0bc2b6a9b88ce013e936fbc3a0269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Sun, 30 Oct 2022 19:55:14 -0300 Subject: [PATCH] =?UTF-8?q?Exerc=C3=ADcio=20-=20Gerar=20o=20segundo=20d?= =?UTF-8?q?=C3=ADgito=20de=20um=20CPF=20com=20Python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula62.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 aula62.py diff --git a/aula62.py b/aula62.py new file mode 100644 index 0000000..41f91d4 --- /dev/null +++ b/aula62.py @@ -0,0 +1,38 @@ +""" +Calculo do segundo dígito do CPF +CPF: 746.824.890-70 +Colete a soma dos 9 primeiros dígitos do CPF, +MAIS O PRIMEIRO DIGITO, +multiplicando cada um dos valores por uma +contagem regressiva começando de 11 + +Ex.: 746.824.890-70 (7468248907) + 11 10 9 8 7 6 5 4 3 2 +* 7 4 6 8 2 4 8 9 0 7 <-- PRIMEIRO DIGITO + 77 40 54 64 14 24 40 36 0 14 + +Somar todos os resultados: +77+40+54+64+14+24+40+36+0+14 = 363 +Multiplicar o resultado anterior por 10 +363 * 10 = 3630 +Obter o resto da divisão da conta anterior por 11 +3630 % 11 = 0 +Se o resultado anterior for maior que 9: + resultado é 0 +contrário disso: + resultado é o valor da conta + +O segundo dígito do CPF é 0 +""" +# cpf = '36440847007' # Esse CPF gera o primeiro dígito como 10 (0) +cpf = '74682489070' +nove_digitos = cpf[:9] +contador_regressivo_1 = 10 + +resultado_digito_1 = 0 +for digito_1 in nove_digitos: + resultado_digito_1 += int(digito_1) * contador_regressivo_1 + contador_regressivo_1 -= 1 +digito_1 = (resultado_digito_1 * 10) % 11 +digito_1 = digito_1 if digito_1 <= 9 else 0 +print(digito_1)