根据公式的结构,写出计算的表达式,并结算结果
分类:Python
def evaluate(formula, variables): if isinstance(formula, str): # 如果 formula 是字符串(即变量名) return variables.get(formula, 0), formula # 返回变量值和变量名 else: # 如果 formula 是字典(即运算符和操作数的组合) op = formula['op'] # 获取运算符 left_val, left_exp = evaluate(formula['left'], variables) # 递归计算左侧操作数 right_val, right_exp = evaluate(formula['right'], variables) # 递归计算右侧操作数 if op == 'Add': # 加法 result = left_val + right_val expression = f"({left_exp} + {right_exp})" elif op == 'Sub': # 减法 result = left_val - right_val expression = f"({left_exp} - {right_exp})" elif op == 'Mul': # 乘法 result = left_val * right_val expression = f"({left_exp} * {right_exp})" elif op == 'Div': # 除法 result = left_val / right_val expression = f"({left_exp} / {right_exp})" else: raise ValueError(f"Unknown operator {op}") # 如果运算符不是加减乘除中的一种,抛出异常 return result, expression # 返回计算结果和计算过程 formula = { 'op': 'Div', 'left': { 'op': 'Add', 'left': 'a', 'right': 'b' }, 'right': { 'op': 'Add', 'left': 'c', 'right': 'd' } } variables = {'a': 1, 'b': 2, 'c': 3, 'd': 4} result, expression = evaluate(formula, variables) print(f"Result: {result}") print(f"Expression: {expression}") 结果 Result: 0.42857142857142855 Expression: ((a + b) / (c + d))