import ptoken as token import tokenizer import expression import calc_engine import factors import jsonpickle import itertools base_list = [1, 2, 4, 6, 12] #fileLocation = input('File Path to JSON: ') #json = json.loads(open(fileLocation).read()) #userInput = input('Enter your formula: ') #tokens = tokenizer.get_tokens_from_expression_string("5000(2(2(1.08^10)-1)/0.08)") with open("expression.json", "r") as f: #j = json.load(f) exp = jsonpickle.decode(f.read()) exp.variables #results = calc_engine.calculate_results(tokens.copy()) #print(results) #for t in tokens: # print("%s (%s) " %(t.value, token.TokenType.get_token_type_name(t.type)), end = "") #print() tokens = tokenizer.get_tokens_from_expression_string(exp.expression) tokenizer.print_token_list(tokens) factors_list = [] ls = [] for v in exp.variables: factor = factors.Factor(v, base_list) if exp.variables[v].type == "Interest": factor.calculate_factors(exp.variables[v].starting_point, True, True) else: factor.calculate_factors(exp.variables[v].starting_point) factors_list.append(factor) ls.append(factor.get_flat_factors_list()) res = list(itertools.product(*ls)) for r in res: t = tokenizer.replace_variables(tokens, list(r)) #tokenizer.print_token_list(t) result = calc_engine.calculate_results(t) tol = (exp.wrong_response * .01 + exp.wrong_response) if result <= tol and result >= (exp.wrong_response - exp.wrong_response * .01): print("Result: %s for expression: " %(format(result, ".8f"))) tokenizer.print_token_list(t)