任意输入含加减乘除乘方开方的文本数学表达式,能检查语法错误,并计算结果
import re import sys import math def get_priority(op): if op in ['*', '/']: return 2 elif op == '**': return 3 else: return 1 def get_op(op): if op == '+': return lambda x, y: x + y elif op == '-': return lambda x, y: x - y elif op == '*': return lambda x, y: x * y elif op == '/': return lambda x, y: x / y elif op == '**': return lambda x, y: x ** y elif op == 'sqrt': return lambda x: math.sqrt(x) def cal(s): sl = re.split(r'([()+\-*/])', s) while '' in sl: sl.remove('') num = [] op = [] for i in sl: if i in ['(',