Updated the Expression object to include 'wrong_response' and wrote the code needed to start the finding mutations.
This commit is contained in:
+9
-1
@@ -1,12 +1,20 @@
|
|||||||
class Expression:
|
class Expression:
|
||||||
expression = ""
|
expression = ""
|
||||||
|
# correct_response = 0
|
||||||
|
wrong_response = 0
|
||||||
variables = []
|
variables = []
|
||||||
|
|
||||||
def __init__(self, expression_string, variables):
|
def __init__(self, expression_string, variables, wrong_response):
|
||||||
self.expression = expression_string
|
self.expression = expression_string
|
||||||
self.variables = variables
|
self.variables = variables
|
||||||
|
self.wrong_response = wrong_response
|
||||||
|
|
||||||
class Variable:
|
class Variable:
|
||||||
|
name = ""
|
||||||
|
type = ""
|
||||||
|
starting_point = 0
|
||||||
|
ending_point = 0
|
||||||
|
|
||||||
VARIABLE_TYPES = {
|
VARIABLE_TYPES = {
|
||||||
"i" : "Interest",
|
"i" : "Interest",
|
||||||
"I" : "Interest",
|
"I" : "Interest",
|
||||||
|
|||||||
@@ -1,14 +1,20 @@
|
|||||||
class Expression:
|
class Expression:
|
||||||
expression = ""
|
expression = ""
|
||||||
correct_answer = 0
|
# correct_response = 0
|
||||||
|
wrong_response = 0
|
||||||
variables = []
|
variables = []
|
||||||
|
|
||||||
def __init__(self, expression_string, variables, correct):
|
def __init__(self, expression_string, variables, wrong_response):
|
||||||
self.expression = expression_string
|
self.expression = expression_string
|
||||||
self.variables = variables
|
self.variables = variables
|
||||||
self.correct_answer = correct
|
self.wrong_response = wrong_response
|
||||||
|
|
||||||
class Variable:
|
class Variable:
|
||||||
|
name = ""
|
||||||
|
type = ""
|
||||||
|
starting_point = 0
|
||||||
|
ending_point = 0
|
||||||
|
|
||||||
VARIABLE_TYPES = {
|
VARIABLE_TYPES = {
|
||||||
"i" : "Interest",
|
"i" : "Interest",
|
||||||
"I" : "Interest",
|
"I" : "Interest",
|
||||||
@@ -24,6 +30,8 @@ class Variable:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_variable_type(variable_name):
|
def get_variable_type(variable_name):
|
||||||
if not variable_name in Variable.VARIABLE_TYPES:
|
if len(variable_name) == 0:
|
||||||
return "Unknown"
|
return "Unknown"
|
||||||
return Variable.VARIABLE_TYPES[variable_name]
|
if not variable_name[0] in Variable.VARIABLE_TYPES:
|
||||||
|
return "Unknown"
|
||||||
|
return Variable.VARIABLE_TYPES[variable_name[0]]
|
||||||
|
|||||||
+9
-16
@@ -1,7 +1,7 @@
|
|||||||
import tokenizer
|
import tokenizer
|
||||||
import token
|
import ctoken
|
||||||
import expression
|
import expression
|
||||||
import json
|
import jsonpickle
|
||||||
|
|
||||||
variables = {}
|
variables = {}
|
||||||
def print_vars(vars):
|
def print_vars(vars):
|
||||||
@@ -55,26 +55,16 @@ def modify_variable(var, vars):
|
|||||||
print('Invalid property "%s".' %(response))
|
print('Invalid property "%s".' %(response))
|
||||||
print('Commands are "type", "start" and "end".')
|
print('Commands are "type", "start" and "end".')
|
||||||
|
|
||||||
def transform(object):
|
|
||||||
|
|
||||||
if isinstance(object, expression.Expression) or isinstance(object, expression.Variable):
|
|
||||||
|
|
||||||
return object.__dict__
|
|
||||||
|
|
||||||
else:
|
|
||||||
|
|
||||||
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: ")
|
wrong_response = input("Enter the wrong response for the expression: ")
|
||||||
try:
|
try:
|
||||||
correct_answer = float(correct_answer)
|
wrong_response = float(wrong_response)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("The anwser must be numeric! Will not be included in output file.")
|
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:
|
||||||
if t.type == token.TokenType.variable:
|
if t.type == ctoken.TokenType.variable:
|
||||||
variables[t.value] = expression.Variable(t.value, expression.Variable.get_variable_type(t.value))
|
variables[t.value] = expression.Variable(t.value, expression.Variable.get_variable_type(t.value))
|
||||||
|
|
||||||
selected_variable = None
|
selected_variable = None
|
||||||
@@ -98,4 +88,7 @@ while True:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
with open("expression.json", "w", encoding="utf-8") as f:
|
with open("expression.json", "w", encoding="utf-8") as f:
|
||||||
json.dump(expression.Expression(exp, variables, correct_answer), f, default=transform, indent = 4)
|
obj = jsonpickle.encode(expression.Expression(exp, variables, wrong_response))
|
||||||
|
f.write(obj)
|
||||||
|
f.close()
|
||||||
|
#json.dump(expression.Expression(exp, variables, correct_answer), f, default=transform, indent = 4)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import token
|
import ctoken as token
|
||||||
|
|
||||||
def get_tokens_from_expression_string(expression_string):
|
def get_tokens_from_expression_string(expression_string):
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,36 @@
|
|||||||
import token
|
import ptoken as token
|
||||||
import tokenizer
|
import tokenizer
|
||||||
#import expression
|
import expression
|
||||||
import calc_engine
|
import calc_engine
|
||||||
#import jsonpickle
|
import factors
|
||||||
|
import jsonpickle
|
||||||
|
|
||||||
|
base_list = [2, 4, 6, 12]
|
||||||
|
|
||||||
#fileLocation = input('File Path to JSON: ')
|
#fileLocation = input('File Path to JSON: ')
|
||||||
#json = json.loads(open(fileLocation).read())
|
#json = json.loads(open(fileLocation).read())
|
||||||
|
|
||||||
|
|
||||||
#userInput = input('Enter your formula: ')
|
#userInput = input('Enter your formula: ')
|
||||||
tokens = tokenizer.get_tokens_from_expression_string("5000(2(2(1.08^10)-1)/0.08)")
|
#tokens = tokenizer.get_tokens_from_expression_string("5000(2(2(1.08^10)-1)/0.08)")
|
||||||
#with open("expression.json", "r") as f:
|
with open("expression.json", "r") as f:
|
||||||
# j = json.load(f)
|
#j = json.load(f)
|
||||||
# exp = jsonpickle.decode(f.read())
|
exp = jsonpickle.decode(f.read())
|
||||||
#exp = expression.Expression.from_json(json.loads(json.load(f)))
|
print(exp)
|
||||||
# print(exp)
|
#results = calc_engine.calculate_results(tokens.copy())
|
||||||
results = calc_engine.calculate_results(tokens.copy())
|
#print(results)
|
||||||
print(results)
|
|
||||||
|
|
||||||
#tokens = tokenizer.replace_variables(tokens, [23, 46, 89])
|
|
||||||
|
|
||||||
#for t in tokens:
|
#for t in tokens:
|
||||||
# print("%s (%s) " %(t.value, token.TokenType.get_token_type_name(t.type)), end = "")
|
# print("%s (%s) " %(t.value, token.TokenType.get_token_type_name(t.type)), end = "")
|
||||||
#print()
|
#print()
|
||||||
|
|
||||||
|
tokens = tokenizer.get_tokens_from_expression_string(exp.expression)
|
||||||
|
|
||||||
#def factors(factor_object, starting_point, variable_type)
|
for v in exp.variables:
|
||||||
|
factor = factors.Factor(v, base_list)
|
||||||
|
|
||||||
|
calce_answers(factor, exp.variables[v].starting_point, exp.variables[v].type, exp.wrong_response)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#def calc_answers(factor_object, starting_point, variable_type, wrong_response):
|
||||||
|
|||||||
Reference in New Issue
Block a user