python re模块实现计算器
2024-08-24 22:09:39
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))
最新文章
- Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器
- Spark——SparkContext简单分析
- DataTable
- Angular 2 + Electron 开发web和桌面应用
- loglikelihood ratio 相似度
- 修改FreeBSD启动菜单停留时间
- EasyUI中在表单提交之前进行验证
- loj 1156(二分+最大流)
- Kerberos的组件和术语(翻译和注解)
- C#修改下拉框选项的高度
- FIREDAC FDConnection 连接池 连接串
- 解决Eclipse自己主动补充问题空间
- mongodb spring
- jquery结合highcharts插件显示实时数据动态曲线图
- 原声JS瀑布流加延迟载入
- ICC_lab总结——ICC_lab3:布局
- Cognos 11.0快速开发指南 Ⅰ
- HTML5示例之WebSocket
- H5——简易马祖
- Android大图片之缩略图,以及对原图依照指定宽高裁剪成缩略图