def mul_div(exp):     #计算乘除
while True:
ret = re.search('[\d\.]+[\*\/]-?[\d\.]+', exp)
if ret:
atom_exp = ret.group()
res = atom_cal(atom_exp)
exp = exp.replace(atom_exp, res)
else:
return fomat_exp(exp) def fomat_exp(exp): #计算乘除后,统一符号
exp=exp.replace('--','+')
exp=exp.replace('-+','-')
exp=exp.replace('++','+')
exp=exp.replace('+-','-')
return add_sub(exp) def add_sub(exp): #计算加减
ret=re.findall('[\-\+]?[\d\.]+',exp)
exp_sum=0
for i in ret:
exp_sum+=float(i)
return exp_sum def main(exp): #主程序,先计算括号内的
exp=exp.replace(' ','')
while True:
ret=re.search('\([^()]+\)',exp)
if ret:
inner_bracket=ret.group()
res=str(mul_div(inner_bracket))
exp = exp.replace(inner_bracket, res) else:break
return mul_div(exp)
exp = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
print(main(exp))

最新文章

  1. Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器
  2. Spark——SparkContext简单分析
  3. DataTable
  4. Angular 2 + Electron 开发web和桌面应用
  5. loglikelihood ratio 相似度
  6. 修改FreeBSD启动菜单停留时间
  7. EasyUI中在表单提交之前进行验证
  8. loj 1156(二分+最大流)
  9. Kerberos的组件和术语(翻译和注解)
  10. C#修改下拉框选项的高度
  11. FIREDAC FDConnection 连接池 连接串
  12. 解决Eclipse自己主动补充问题空间
  13. mongodb spring
  14. jquery结合highcharts插件显示实时数据动态曲线图
  15. 原声JS瀑布流加延迟载入
  16. ICC_lab总结——ICC_lab3:布局
  17. Cognos 11.0快速开发指南 Ⅰ
  18. HTML5示例之WebSocket
  19. H5——简易马祖
  20. Android大图片之缩略图,以及对原图依照指定宽高裁剪成缩略图

热门文章

  1. Bootstrap开发
  2. Python基础学习之集合
  3. Linux修改文件permission可执行属性
  4. C语言中的特殊变量
  5. 【LOJ6513】「雅礼集训 2018 Day10」足球大战(数学题)
  6. caffe resize用interpolation
  7. OpenCV自带dnn的Example研究(5)— segmentation
  8. 【Java-Method】读《重构》有感_Java方法到底是传值调用还是传引用调用(传钥匙调用)
  9. 知识总结和记录——HTML
  10. 实例:关于ALV控件可编辑的整理