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): 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 problem = str(a) + "+" + str(b) + "=" solution = str(c) return problem, solution def subtraction(maxMinuend = 99, maxDiff = 99): a = random.randint(0, maxMinuend) b = random.randint(max(0, (a-maxDiff)), a) c = a-b problem = str(a) + "-" + str(b) + "=" solution = str(c) return problem, solution # || Class Instances #Format is: #g = Generator("", <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())