使用基本语法计算类似如下算式的结果:
5- 3 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3)/(16-3*2))
计算思路:
1、基本判断,输入的算式括号是否成对
2、依次获取最内层括号内的算式,按先乘除后加减计算结果,再将结果替换算式,直到算式中无括号为止
3、将没有括号的算式,按先乘除后加减计算结果
注:计算过程中要考虑减号重复,将--替换为+,将+-替换为-,同时要考虑小数的情况。
详细代码:
import re
#检查括号是否合法成对出现,利用堆栈思想
def checkBracket(expression):
bracketList=[]
for i in expression:
if i == '(':
bracketList.append(i)
elif i == ')':
if len(bracketList)==0:
return False
else:
bracketList.pop()
if len(bracketList)==0:
return True
else:
return False
#计算乘除法算式
def multiplyDivide(expression):
if '*' in expression:
left,right=expressio