def _algebraic_equations(self, init_time, text, debug, queue):
result_data = calc_result_data(text, True)
result_data.calc_type = calc_type.ALGEBRAIC_EQUATIONS
text = text_calculator.formula_to_py(result_data.formula_str)
try:
start_time = init_time
text_line = text.split(text_calculator.EQUATION_VAR_FORMULA_SEPARATOR)
if len(text_line) < 2:
result_data.success = False
result_data.calc_result = error.string_calculator.wrong_format_to_calc_equations()
else:
var_org = text_line[0]
var_init_field = var_org.replace(u' ', u',')
var_init_symbol = var_org
formula_list = text_line[1:]
if any((not formula.endswith(text_calculator.EQUATION_KEYWORD)) for formula in formula_list):
result_data.success = False
result_data.calc_result = error.string_calculator.wrong_format_to_calc_equations()
else:
formula_list_replaced = [eq.replace(text_calculator.EQUATION_KEYWORD, u'') for eq in formula_list]
exec_py = '{} = sympy.symbols(\'{}\', real=True)'.format(var_init_field, var_init_symbol)
exec_py += '\nresult = sympy.solve([{}], {})'.format(','.join(formula_list_replaced), var_init_field)
start_time = init_time
exec(exec_py) in globals(), locals()
result_data.auto_record_time(start_time)
result_data.success = True
start_time = time.time()
str_calc_result = str(result)
result_data.latex = sympy.latex(result)
result_data.auto_record_time(start_time)
result_data.formula_str = '\n'.join(formula_list)
result_data.calc_result = str_calc_result
except Exception as ex:
result_data.success = False
result_data.calc_result = '{} - {}'.format(type(ex), ex.message)
result_data.auto_record_time(start_time)
queue.put(result_data)
评论列表
文章目录