txt_calc.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:LineBot 作者: RaenonX 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号