任意输入含加减乘除乘方开方的文本数学表达式,使用二叉树数据结构,使用堆栈算法,生成计算结果
def calculate(string): operator = { '+': (1, lambda a, b: a + b), '-': (1, lambda a, b: a - b), '*': (2, lambda a, b: a * b), '/': (2, lambda a, b: a / b), '//': (2, lambda a, b: a // b), '%': (2, lambda a, b: a % b), '**': (3, lambda a, b: a ** b) } stack = [] for item in string.split(' '): if item in operator: while stack and operator[item][0] <= operator[stack[-1]][0]: a, b = stack.pop(), stack.pop() stack.append(operator[b][1](a, b)) stack.append(item) elif item: stack.append(float(item)) while len(stack) != 1: a