-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidar_cpf.py
129 lines (95 loc) · 3.49 KB
/
validar_cpf.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""
Cáculo do Primeiro Dígito CPF
CPF: 746.824.890-70
Colete a soma dos 9 primeiros digitos so CPF
multiplicando cada um dos valores por uma
contagem regressiva começando de 10.
Ex.: 746.824.890-70 (746824890)
...10..9..8..7..6..5..4..3..2
*..7...4..6..8..2..4..5..0..0
...70..36.48.56.12.20.32.27.0
Somar todos os resultados:
70+36+48+56+12+20+32+27+0 = 301
Multiplicar o resultado anterior por 10
301 * 10 = 3010
Obter o resto da divisão da conta anteriro por 11
3010 % 11 = 7
Se o resultado for maior que 9:
resultado é 0
contrario disso:
resultado é o valor da conta
"""
#cpf = "74682489070"
cpf = input('Digite seu CPF com apenas números: ') \
.replace('.','') \
.replace(' ', '') \
.replace('-', '')
contador = 0
"""Colete a soma dos 9 primeiros digitos so CPF
multiplicando cada um dos valores por uma
contagem regressiva começando de 10. """
#contador regresssivo
countdown = 10
#Lista dos nove primeiros numeros
nine_first_numbers = []
#Percorre o CPF multiplicando cada item por um contagem regressiva e alimenta a lista
for i in cpf:
number_multiplies_by_ten = int(i)*(countdown)
nine_first_numbers.append(number_multiplies_by_ten)
countdown -=1
#Obtem os nove primeiros numeros multiplicados pela contagem regressiva de 10 até zero
nine_first_numbers = nine_first_numbers [:9]
#Cria uma variável que soma todos os itens da lista
sum_nine_first_numbers = sum(nine_first_numbers)
#Multiplica a variavel sum_nine_first_numbers por 10
multiplie_sum_nine_first_numbers = sum_nine_first_numbers * 10
#Obter o resto da divisão de multiplie_sum_nine_first_numbers por 11
resto_multiplie = multiplie_sum_nine_first_numbers % 11
resto_multiplie = resto_multiplie if resto_multiplie <= 9 else 0
print(f'O Primeiro Digito é {resto_multiplie}')
first_digit_cpf = resto_multiplie
"""
Calcular o Segundo Digito do CPF
CPF: 746.824.890-70
Colete a soma dos 9 primeiros digitos 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
Multiplica o resultado anteriro por 10
363 * 10 = 3630
Obter o resto da divisão da conta anteriro 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 é o 0
"""
#contador regresssivo
countdown = 11
#Lista dos nove primeiros numeros
nine_first_numbers = cpf[:9]
#LIsta dos 9 primeiros e o primeiro numero
nine_first_numbers_and_first = list(nine_first_numbers)
nine_first_numbers_and_first.append(str(first_digit_cpf))
#Lista dos numeros multiplicados pelo contador regressivo
nine_numbers_and_first_number_multiple_countdow = []
#laco for para percorrer e multiplicar
for i in nine_first_numbers_and_first:
number_multiplies_by_eleven = int(i)*(countdown)
nine_numbers_and_first_number_multiple_countdow.append(number_multiplies_by_eleven)
countdown -=1
#Printa a soma da lista
soma_lista = sum(nine_numbers_and_first_number_multiple_countdow)
#print(soma_lista)
#Multiplica o resultado por 10
multi_list_for_ten = soma_lista * 10
#print(multi_list_for_ten)
#Obtem o resto da divisão da conta anterior por 11
div_sum_anterior = multi_list_for_ten % 11
segundo_digito_cpf = div_sum_anterior if div_sum_anterior <= 9 else 0
print(f'Segundo Digito é {segundo_digito_cpf}')