Changed to class-based generators

This commit is contained in:
lukew3
2020-10-13 12:42:38 -04:00
parent 4196e245f3
commit 0effa0c3a7
2 changed files with 42 additions and 22 deletions

View File

@@ -1,16 +1,25 @@
import random
# || Generator class
class Generator:
def __init__(self, title, id, generalProb, generalSol, func):
self.title = title
self.id = id
self.generalProb = generalProb
self.generalSol = generalSol
self.func = func
def __str__(self):
return str(self.id) + " " + self.title + " " + self.generalProb + " " + self.generalSol
def __call__(self):
return self.func()
# || Functions
def addition(maxSum = 99, maxAddend = 50):
"""
DESCRIPTION:
Generates addition problems with positive addends less than maxAddend and sum less than maxSum
SKILLID:
2
PROBLEM:
"a+b="
SOLUTION:
"c"
"""
a = random.randint(0, maxAddend)
b = random.randint(0, min((maxSum-a), maxAddend)) #The highest value of b will be no higher than the maxsum minus the first number and no higher than the maxAddend as well
c = a+b
@@ -19,16 +28,6 @@ def addition(maxSum = 99, maxAddend = 50):
return problem, solution
def subtraction(maxMinuend = 99, maxDiff = 99):
"""
DESCRIPTION:
Generates subtraction problems with difference between 0 and maxDiff. Minuend and subtrahend are between 0 and maxMinuend.
SKILLID:
3
PROBLEM:
"a-b="
SOLUTION:
"c"
"""
a = random.randint(0, maxMinuend)
b = random.randint(max(0, (a-maxDiff)), a)
c = a-b
@@ -36,4 +35,14 @@ def subtraction(maxMinuend = 99, maxDiff = 99):
solution = str(c)
return problem, solution
print(subtraction())
# || Class Instances
#Format is:
#g<id> = Generator("<Title>", <id>, <generalized problem>, <generalized solution>, <function name>)
g2 = Generator("Addition", 2, "a+b=", "c", addition)
g3 = Generator("Subtraction", 3, "a-b=", "c", subtraction)
# || Testing Zone
print(g2)
print(g2())
print(g3())