@@ -27,6 +27,32 @@ 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
+
30
56
class CPF_GEN :
31
57
"""
32
58
This class is used to generate CPF numbers.
@@ -40,17 +66,11 @@ def __init__(self):
40
66
"""
41
67
self .generateCPF ()
42
68
43
- def getDigits (cpf ):
44
- lenQty = len (cpf ) + 1
45
- for cpfIndex , multiplyNum in enumerate (range (lenQty , 1 )):
46
- cpf = cpf + str (multiplyNum * int (cpf [cpfIndex ]))
47
- return int (cpf ) % 11
48
-
49
69
def getDigitOne (cpf : str ) -> int :
50
- return CPF_GEN . getDigits (cpf [:9 ])
70
+ return getDigits (cpf [:9 ])
51
71
52
72
def getDigitTwo (cpf : str ) -> int :
53
- return CPF_GEN . getDigits (cpf [:10 ])
73
+ return getDigits (cpf [:10 ])
54
74
55
75
@staticmethod
56
76
def generateCPF ():
@@ -59,34 +79,32 @@ def generateCPF():
59
79
"""
60
80
61
81
# Start with random sequence between 0 and 9
62
- nineDigits = "" .join ([str (random .randint (0 , 9 )) for x in range (9 )])
82
+ nineDigits = "" .join ([str (random .randint (0 , 9 )) for x in range (9 )])
63
83
digitOne = CPF_GEN .getDigitOne (nineDigits )
64
84
digitTwo = CPF_GEN .getDigitTwo (f"{ nineDigits } { digitOne } " )
65
- genCPF = f"{ nineDigits } { digitOne } { digitTwo } "
66
-
85
+ genCPF = f"{ nineDigits } { str (digitOne )} { str (digitTwo )} "
67
86
formatGenCPF = f"{ genCPF [0 :3 ]} .{ genCPF [3 :6 ]} .{ genCPF [6 :9 ]} -{ genCPF [9 :11 ]} "
68
- logThis (f"Test formatted: { formatGenCPF } " )
69
-
70
87
return formatGenCPF
71
88
72
89
def checkCPF ():
73
- if debugMode :
74
- forceCPF = "113.314.390-35"
75
-
76
- while isThisValid .validateCPF (str (CPF_GEN .generateCPF ())) != True :
77
- CPF_GEN .generateCPF ()
78
- logThis ("CPF is invalid, generating another one..." )
79
- # logThis(f"Test Import: {isThisValid.validateCPF(str(CPF_GEN.generateCPF()))}")
80
- return isThisValid .validateCPF (str (CPF_GEN .generateCPF ()))
90
+
91
+ if (
92
+ isThisValid .validateCPF (CPF_GEN .generateCPF ()) != True
93
+ and isThisValid .validateCPF (CPF_GEN .generateCPF ()) is not None
94
+ ):
95
+ # CPF_GEN.generateCPF()
96
+ logThis (
97
+ f"CPF is invalid, generating another one... { CPF_GEN .generateCPF ()} "
98
+ )
99
+ return None
81
100
else :
82
- logThis ("CPF is valid!" )
101
+ logThis (f "CPF is valid! { CPF_GEN . generateCPF () } " )
83
102
return CPF_GEN .generateCPF ()
84
103
85
104
86
105
if __name__ == "__main__" :
87
106
"""
88
107
This function is used to run the program.
89
108
"""
90
- CPF_GEN .generateCPF ()
91
109
# CPF_GEN.checkCPF()
92
110
logThis (CPF_GEN .checkCPF ())
0 commit comments