Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 12758a3

Browse files
Finishing CPF Generator and CPF checker final tweaks
1 parent 205e0d3 commit 12758a3

File tree

3 files changed

+30
-52
lines changed

3 files changed

+30
-52
lines changed

‎Problem Solving Scripts/CPF_Checker.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
import re
6969

7070
# WARNING: Disable in production!
71-
debugMode = True
71+
debugMode = False
7272

7373

7474
def logThis(message):
@@ -119,9 +119,6 @@ def validateCPF(userCPF: str):
119119
sumOfDigits = sum(int(i) for i in userCPFList)
120120
sumOfDigits = str(sumOfDigits)
121121

122-
if sumOfDigits[0] == sumOfDigits[1]:
123-
partiallyValidation = True
124-
125122
# Get first nine digits from userCPF
126123
firstNineDigits = userCPFList[0:9]
127124

@@ -146,10 +143,7 @@ def validateCPF(userCPF: str):
146143
mergeRes = str(userCPF[:9]) + str(restSum) + str(restSumSec)
147144
logThis(f"Merged result: {mergeRes}")
148145

149-
if mergeRes == userCPF:
150-
if partiallyValidation == True:
151-
logThis("CPF fully valid.")
152-
return True
146+
if mergeRes == userCPF and sumOfDigits[0] == sumOfDigits[1]:
153147
return True
154148
else:
155149
logThis(f"CPF is NOT valid.")

‎Problem Solving Scripts/CPF_Generator.py

Lines changed: 28 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from CPF_Checker import CPF_Validator_N as isThisValid
1717

1818
# WARNING: Disable in production!
19-
debugMode = True
19+
debugMode = False
2020

2121

2222
def logThis(message):
@@ -27,32 +27,6 @@ def logThis(message):
2727
print(message)
2828

2929

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-
5630
class CPF_GEN:
5731
"""
5832
This class is used to generate CPF numbers.
@@ -64,39 +38,49 @@ def __init__(self):
6438
"""
6539
This function is used to initialize the class.
6640
"""
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()
7442

7543
@staticmethod
7644
def generateCPF():
7745
"""
7846
This function is used to generate the CPF.
7947
"""
8048

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+
8160
# 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]}"
8771
return formatGenCPF
8872

8973
def checkCPF():
9074

91-
if (
75+
while (
9276
isThisValid.validateCPF(CPF_GEN.generateCPF()) != True
9377
and isThisValid.validateCPF(CPF_GEN.generateCPF()) is not None
9478
):
95-
# CPF_GEN.generateCPF()
79+
CPF_GEN.checkCPF()
9680
logThis(
97-
f"CPF is invalid, generating another one...{CPF_GEN.generateCPF()}"
81+
f"CPF is invalid, generating another one..."
9882
)
99-
return None
83+
# return None
10084
else:
10185
logThis(f"CPF is valid! {CPF_GEN.generateCPF()}")
10286
return CPF_GEN.generateCPF()
@@ -107,4 +91,4 @@ def checkCPF():
10791
This function is used to run the program.
10892
"""
10993
# CPF_GEN.checkCPF()
110-
logThis(CPF_GEN.checkCPF())
94+
print(CPF_GEN.checkCPF())
-82 Bytes
Binary file not shown.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /