正则表达式计算 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / 5 ) * ( 9 - 2 * 5 / 3 + 7 / 3 * 99 / 4 * 2998 + 10 * 568 / 14 )) - ( - 4 * 3 ) / ( 16 - 3 * 2))"

 1 #!/usr/bin/env python
 2 import re
 3 def f1(arg):
 4
 5     return 1
 6
 7 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / 5 ) * ( 9 - 2 * 5 / 3 + 7 / 3 * 99 / 4 * 2998 + 10 * 568 / 14 )) - ( - 4 * 3 ) / ( 16 - 3 * 2))"
 8 print(eval(origin))
 9 while True:
10     print(origin)
11     ret = re.split("\(([^()]+)\)", origin,1)
12     if len(ret) == 3:
13         before = ret[0]
14         content = ret[1]
15         after = ret[2]
16         r = f1(content)
17         new_str = before + str(r) + after
18         origin = new_str
19     else:
20         final = f1(origin)
21         print(final)
22         break
时间: 2024-12-22 03:36:49

正则表达式计算 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / 5 ) * ( 9 - 2 * 5 / 3 + 7 / 3 * 99 / 4 * 2998 + 10 * 568 / 14 )) - ( - 4 * 3 ) / ( 16 - 3 * 2))"的相关文章

用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算

作业需求: 开发一个简单的python计算器 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 上图是实现的逻辑思路图,下面是对上图的分析: 整体的思想就是先匹配最

用正则表达式实现 运算 express = '1 -2* ((60-30 +(-40/5) *(9-2*5/3 +7 /3*99 /4*2998 +10 *568 /14))-(-4*3)/(16-3*2))'

#!/usr/bin/env python # coding:utf-8 import re def dealwith(express): express.replace('+-','-') express.replace('--','+') return express def col_suanshu(exp): if '/' in exp: a,b = exp.split('/') return str(float(a)/float(b)) if '*' in exp: a,b = exp.

计算器写法 | '1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'

import re # 计算乘除的方法 def parse_exp(exp): if "*" in exp: a,b = exp.split("*") # print(a,b) return str(float(a) * float(b)) if "/" in exp: a,b = exp.split("/") return str(float(a) / float(b)) # 去除++ +- -- -+ bug情况 def

C++实现简易计算器(正则表达式计算)

说明:简单高效的C++代码,实现简易计算器(正则表达式计算),允许小数.括号.但没有表达式正误检验功能,所以测试前请确保式子正确哦 数据结构:栈 示范输入: ((1.5+2.5)*3-4)+5 42/7-(12+3)*0.5 标准输出: the answer is 13 the answer is -1.5 源代码: #include <iostream>#include <stack> using namespace std; stack<double> number

py练习之0到10000之间的所有数不包含5,10,15,30,60的倍数

"""" # -*- coding: cp936 -*- def number(): for x in range(1,5): for y in range(1,5): for z in range(1,5): if x!=y and y!=z and z!=x: print x,y,z if x%2!=1 and y%2!=1 and z%2!=1: print x,y,z if __name__=='__main__': number() ""

System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。

最近用MVC3 做了一个项目,发布时项目的中的数据导入功能(Excel格式,有固定的导入数据模板)居然不能用,查看报错日志,发现是“System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序............”. 在网上找一些资料,把问题解决了.如下图所示. 后台功能代码:导入与导出实现代码. 1 #region -使用IO写入Excel- 2 /// <summary> 3 /// 使用IO写入E

错误:“未在本地计算机上注册“microsoft.ACE.oledb.12.0”

C#通过OleDb访问Excel 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序.网上查询得知需要下载安装Microsoft Access 2010 数据库引擎可再发行程序包.下载地址为:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255. 支持的操作系统 Windows 7, Windows 8, Windows Server 2003, Windows Server 2003

解决方法:64位系统-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

原文:解决方法:64位系统-未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序 win7或win8 64位下调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true. 如下图所示: 方法二:生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序. 解决办法: 去http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe下载. 以前的版本: http://www.microsoft.com/zh-CN/download/confirmation.aspx?id=23734