16
16
from CPF_Checker import CPF_Validator_N as isThisValid
17
17
18
18
# WARNING: Disable in production!
19
- debugMode = True
19
+ debugMode = False
20
20
21
21
22
22
def logThis (message ):
@@ -27,32 +27,6 @@ def logThis(message):
27
27
print (message )
28
28
29
29
30
- def getDigits (cpf : str ):
31
- """
32
- This function is used to generate the digits.
33
- """
34
- lenQty = len (cpf ) + 1
35
- multiOpr = []
36
- cpfINT = int (cpf )
37
-
38
- for cpfIndex , multiplyNum in enumerate (range (lenQty , 1 )):
39
- multiOpr .append (int (cpfINT [cpfIndex ]) * multiplyNum )
40
- print (f"{ cpf [cpfIndex ]} * { multiplyNum } = { multiOpr [cpfIndex ]} " )
41
-
42
- sumRes = sum (multiOpr )
43
- finalRes = 11 - (sumRes % 11 )
44
-
45
- logThis (f"Final result before: { finalRes } " )
46
-
47
- if finalRes > 9 :
48
- finalRes = 0
49
- else :
50
- finalRes = finalRes
51
-
52
- logThis (f"Final result: { finalRes } " )
53
- return finalRes
54
-
55
-
56
30
class CPF_GEN :
57
31
"""
58
32
This class is used to generate CPF numbers.
@@ -64,39 +38,49 @@ def __init__(self):
64
38
"""
65
39
This function is used to initialize the class.
66
40
"""
67
- self .generateCPF ()
68
-
69
- def getDigitOne (cpf : str ) -> int :
70
- return getDigits (cpf [:9 ])
71
-
72
- def getDigitTwo (cpf : str ) -> int :
73
- return getDigits (cpf [:10 ])
41
+ self .checkCPF ()
74
42
75
43
@staticmethod
76
44
def generateCPF ():
77
45
"""
78
46
This function is used to generate the CPF.
79
47
"""
80
48
49
+ nineDigits = None
50
+ while True :
51
+ nineDigits = [random .randint (0 , 9 ) for i in range (9 )]
52
+ if nineDigits != nineDigits [::- 1 ]:
53
+ break
54
+
55
+ for i in range (9 , 11 ):
56
+ value = sum ((nineDigits [num ] * ((i + 1 ) - num ) for num in range (0 , i )))
57
+ digit = ((value * 10 ) % 11 ) % 10
58
+ nineDigits .append (digit )
59
+
81
60
# Start with random sequence between 0 and 9
82
- nineDigits = "" .join ([str (random .randint (0 , 9 )) for x in range (9 )])
83
- digitOne = CPF_GEN .getDigitOne (nineDigits )
84
- digitTwo = CPF_GEN .getDigitTwo (f"{ nineDigits } { digitOne } " )
85
- genCPF = f"{ nineDigits } { str (digitOne )} { str (digitTwo )} "
86
- formatGenCPF = f"{ genCPF [0 :3 ]} .{ genCPF [3 :6 ]} .{ genCPF [6 :9 ]} -{ genCPF [9 :11 ]} "
61
+ result = "" .join (map (str , nineDigits ))
62
+ logThis (f"Generated CPF: { result } " )
63
+ # lastFrst = int(result[-1:])
64
+ # lastSec = int(result[-2:])
65
+ # result = int(result[0:9])
66
+
67
+ # result = str(result) + str(lastFrst) + str(lastSec)
68
+
69
+ # logThis(f"Generated FINAL CPF: {result}")
70
+ formatGenCPF = f"{ result [0 :3 ]} .{ result [3 :6 ]} .{ result [6 :9 ]} -{ result [9 :11 ]} "
87
71
return formatGenCPF
88
72
89
73
def checkCPF ():
90
74
91
- if (
75
+ while (
92
76
isThisValid .validateCPF (CPF_GEN .generateCPF ()) != True
93
77
and isThisValid .validateCPF (CPF_GEN .generateCPF ()) is not None
94
78
):
95
- # CPF_GEN.generateCPF ()
79
+ CPF_GEN .checkCPF ()
96
80
logThis (
97
- f"CPF is invalid, generating another one...{ CPF_GEN . generateCPF () } "
81
+ f"CPF is invalid, generating another one..."
98
82
)
99
- return None
83
+ # return None
100
84
else :
101
85
logThis (f"CPF is valid! { CPF_GEN .generateCPF ()} " )
102
86
return CPF_GEN .generateCPF ()
@@ -107,4 +91,4 @@ def checkCPF():
107
91
This function is used to run the program.
108
92
"""
109
93
# CPF_GEN.checkCPF()
110
- logThis (CPF_GEN .checkCPF ())
94
+ print (CPF_GEN .checkCPF ())
0 commit comments