Quiz question generator with randomized values v0.4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random,math | |
class Question: | |
""" Question class for creating a question for use in a quiz """ | |
def ft(self,text,randints,randdec,randsgnint): | |
return text.format(randints,randdec,randsgnint) | |
def __init__(self, question, answer): | |
self.text = question | |
self.answer = answer | |
self.tolerance = 0.01 | |
self.randints = [] | |
self.randdec = [] | |
self.randsgnint = [] | |
for a in range(1,11): #Creates three arrays of whole numbers, random decimals, and random signed integers for use in questions. | |
self.randints.append(random.randint(1,10)) | |
self.randdec.append(math.sqrt(random.randint(1,100))*random.randint(1,10)) | |
self.randsgnint.append(random.randint(-10,10)) | |
self.text = self.ft(question,self.randints,self.randdec,self.randsgnint) #The function replaces all symbols in the question with the correct number types | |
self.answer = eval(self.ft(answer,self.randints,self.randdec,self.randsgnint)) #This stores the numerical answer based on the string provided with the answer. | |
def checkans(self,answer): | |
if (abs(float(answer) - self.answer)<=self.tolerance): | |
return True | |
else: | |
return False | |
questionindex = ['','',''] | |
questionindex[0] = ["Convert {1[0]:0.2f} centimeters into meters.","{1[0]}*0.01"] | |
questionindex[1] = ["What is the length of the line segment with endpoints ({2[1]},{2[2]}) and ({2[3]},{2[4]})?","math.sqrt(({2[3]}-{2[1]})**2 + ({2[4]}-{2[2]})**2)"] | |
questionindex[2] = ["Solve for x in the equation {2[1]}x - {0[2]} = {2[7]}","({2[7]}+{0[2]})*1./{2[1]}"] | |
#question = "What is the length of the line segment with endpoints ({2[1]},{2[2]}) and ({2[3]},{2[4]})?" | |
#answer = "math.sqrt(({2[3]}-{2[1]})**2 + ({2[4]}-{2[2]})**2)" | |
#question = "Solve for x in the equation {2[1]}x - {0[2]} = {2[7]}" | |
#answer = "({2[7]}+{0[2]})*1./{2[1]}" | |
for q in questionindex: | |
currentQuestion = Question(q[0],q[1]) | |
print currentQuestion.text | |
print currentQuestion.answer |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment