Changed the JSON generator to generate JSON that includes the correct answer for the expression.

This commit is contained in:
2020-04-13 00:05:17 -05:00
parent 1265f8ac3e
commit d1231b062f
6 changed files with 43 additions and 20 deletions
+1
View File
@@ -1 +1,2 @@
__pycache__ __pycache__
*.json
+27
View File
@@ -0,0 +1,27 @@
class Expression:
expression = ""
variables = []
def __init__(self, expression_string, variables):
self.expression = expression_string
self.variables = variables
class Variable:
VARIABLE_TYPES = {
"i" : "Interest",
"I" : "Interest",
"n" : "Time",
"N" : "Time"
}
def __init__(self, name, type, starting_point = 0, ending_point = 0):
self.name = name
self.type = type
self.starting_point = starting_point
self.ending_point = ending_point
@staticmethod
def get_variable_type(variable_name):
if not variable_name in Variable.VARIABLE_TYPES:
return "Unknown"
return Variable.VARIABLE_TYPES[variable_name]
-17
View File
@@ -1,17 +0,0 @@
{
"expression": "i + 2 + n",
"variables": {
"n1": {
"name": "n1",
"type": "Unknown",
"starting_point": 0,
"ending_point": 0
},
"i1": {
"name": "i1",
"type": "Unknown",
"starting_point": 0,
"ending_point": 0
}
}
}
+3 -1
View File
@@ -1,10 +1,12 @@
class Expression: class Expression:
expression = "" expression = ""
correct_answer = 0
variables = [] variables = []
def __init__(self, expression_string, variables): def __init__(self, expression_string, variables, correct):
self.expression = expression_string self.expression = expression_string
self.variables = variables self.variables = variables
self.correct_answer = correct
class Variable: class Variable:
VARIABLE_TYPES = { VARIABLE_TYPES = {
+7 -2
View File
@@ -66,6 +66,11 @@ def transform(object):
raise TypeError("Only Books and Index will be JSON serialized!") raise TypeError("Only Books and Index will be JSON serialized!")
exp = input("Enter the expression the student will use: ") exp = input("Enter the expression the student will use: ")
correct_answer = input("Enter the correct anwser for the expression: ")
try:
correct_answer = float(correct_answer)
except ValueError:
print("The anwser must be numeric! Will not be included in output file.")
tokens = tokenizer.get_tokens_from_expression_string(exp) tokens = tokenizer.get_tokens_from_expression_string(exp)
for t in tokens: for t in tokens:
@@ -92,5 +97,5 @@ while True:
print("Invalid selection %s." %(response)) print("Invalid selection %s." %(response))
continue continue
with open("data.json", "w", encoding="utf-8") as f: with open("expression.json", "w", encoding="utf-8") as f:
json.dump(expression.Expression(exp, variables), f, default=transform, indent = 4) json.dump(expression.Expression(exp, variables, correct_answer), f, default=transform, indent = 4)
+5
View File
@@ -1,5 +1,6 @@
import token import token
import tokenizer import tokenizer
import expression
import calc_engine import calc_engine
import json import json
@@ -9,6 +10,10 @@ fileLocation = input('File Path to JSON: ')
#userInput = input('Enter your formula: ') #userInput = input('Enter your formula: ')
tokens = tokenizer.get_tokens_from_expression_string("2 + 6 / 2") tokens = tokenizer.get_tokens_from_expression_string("2 + 6 / 2")
with open("expression.json", "r") as f:
j = json.load(f)
exp = expression.Expression(json.loads(j))
print(exp)
#results = calc_engine.calculate_results(tokens.copy()) #results = calc_engine.calculate_results(tokens.copy())
#print(results) #print(results)