实现目标:
1. 正确处理加减乘除及括号优先级
2. 保证结果无误,可用eval()
测试
3.练习正则表达式使用
#coding utf-8
"""
用正则表达式实现四则运算表达式解析器
思路:
根据计算优先级,先计算内部括号里面的运算,并用计算结果的字符串形式替换原表达式,直到没有括号运算符;
然后匹配乘法和除法的运算因子,按从左往右的顺序依次更新计算结果,最后处理加减法运算。
Tips: 需要特别注意对输入的检测和修正(如多余空格、非法输入)和浮点数的匹配
"""
import re
import functools
def checkInput(formula):
"""检测输入合法与否,是否包含字母等非法字符"""
return not re.search("[^0-9+\-*/.()\s]",formula)
def formatInput(formula):
"""标准化输入表达式,去除多余空格等"""
formula = formula.replace(' ',''<