Python 简单实现数学四则运算
GitHub地址:https://github.com/compassblog/PythonExercise
一、题目描述
(1)能自动生成小学四则运算题目;
(2)能支持真分数的四则运算;
二、实现环境
PyCharm、Python3.0
三、代码实现
import re def myCalculate(mystr):
if (mystr.__contains__("(")):
start = mystr.rindex("(")
lstr = mystr[0:start]
tmpstr = mystr[start + 1:]
end = tmpstr.index(")")
rstr = tmpstr[end + 1:]
nowstr = tmpstr[0:end]
newstr = lstr + str(myCalculate(nowstr)) + rstr
return myCalculate(newstr)
else:
return calcNoSym(mystr) def calcNoSym(string):
if (string.__contains__("*")):
string = getNewStr(string, "*")
return calcNoSym(string)
if (string.__contains__("/")):
string = getNewStr(string, "/")
return calcNoSym(string)
if (string.__contains__("+")):
string = getNewStr(string, "+")
return calcNoSym(string)
if (string.__contains__("-")):
string = getNewStr(string, "-")
return calcNoSym(string)
return string def getNewStr(string, op):
start = string.index(op)
lstr = string[0:start]
rstr = string[start + 1:]
lnum = re.search('\d+$', lstr).group()
rnum = re.search('\d+', rstr).group()
newstr = lstr.rstrip(lnum) + str(calcs(lnum, rnum, op)) + rstr.lstrip(rnum)
return newstr def calcs(num1, num2, op):
if (op == "+"):
return int(num1) + int(num2)
elif (op == "-"):
return int(num1) - int(num2)
elif (op == "*"):
return int(num1) * int(num2)
elif (op == "/"):
return int(num1) / int(num2)
else:
raise "error" string = "11*22*3/4" print(myCalculate(string))
sexp = "512+((112+212)*2-312)"
print(myCalculate(sexp))
四、结果测试
1、加法测试

2、减法测试

3、乘法测试

4、除法测试

五、PSP表格

扫码关注微信公众号,了解更多

Python 简单实现数学四则运算的更多相关文章
- python 分数的数学四则运算
import fractions f1 = fractions.Fraction(, ) f2 = fractions.Fraction(, ) print('{} + {} = {}'.format ...
- python 复数的数学四则运算
print(+3j)+(-7j)) print(+3j)-(-7j)) print(+3j)*(-7j)) print(+3j)/(-7j))
- css3 calc():css简单的数学运算-加减乘除
css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...
- Python简单实现基于VSM的余弦相似度计算
在知识图谱构建阶段的实体对齐和属性值决策.判断一篇文章是否是你喜欢的文章.比较两篇文章的相似性等实例中,都涉及到了向量空间模型(Vector Space Model,简称VSM)和余弦相似度计算相关知 ...
- Python小白的数学建模课-03.线性规划
线性规划是很多数模培训讲的第一个算法,算法很简单,思想很深刻. 要通过线性规划问题,理解如何学习数学建模.如何选择编程算法. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛 ...
- Python小白的数学建模课-04.整数规划
整数规划与线性规划的差别只是变量的整数约束. 问题区别一点点,难度相差千万里. 选择简单通用的编程方案,让求解器去处理吧. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达 ...
- Python小白的数学建模课-05.0-1规划
0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...
- Python小白的数学建模课-06 固定费用问题
Python 实例介绍固定费用问题的建模与求解. 学习 PuLP工具包中处理复杂问题的快捷使用方式. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人. 前文讲到几种典型 ...
- Python小白的数学建模课-07 选址问题
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型. 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型. 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法. ...
随机推荐
- Mac下ImageMagick安装(libpng)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/42562705 ...
- 干掉头疼的finished with non-zero exit value 2
很多次会出现 finished with non-zero exit value 2 . Error:Execution failed for task ':app:dexDebug'. > ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(一)
这是本猫第一个原创iOS游戏,留此为证!看编号貌似要写9万多个,千锤百炼还是太少吧!? ;) 这是一个赛跑游戏,几位选手从起点跑到终点看谁用的时间最少.现在需要实现的功能是: 1.8位选手从起点移动至 ...
- STL常用遍历算法for_each和transform的比较
for_each()和transform()算法比较 1)STL 算法 – 修改性算法 for_each() copy() copy_backward() transform() merge ...
- apache 负载测试工具 ab
1.ab工具是apache自带的工具,可以测试服务器的负载能力 2.ab工具的参数 -v:版本 -c:并发数 -n:请求数 -t: 测试所进行的最大秒数 3.例子:ab -c 100 -n 100 - ...
- DB Query Analyzer 6.03, the most excellent Universal DB Access tools on any Microsoft Windows OS
DB Query Analyzer 6.03, the most excellent Universal database Access tools on any Microsoft Wind ...
- iOS和OS X中的bundle
bundle也可以称之为包(package). 它在iOS和OS X中实际为一个文件夹但却当成单独的文件来对待. 每一个app都有一个bundle,并且你可以通过在xxx.app图标上右击鼠标然后选择 ...
- Android进阶(十九)AndroidAPP开发问题汇总(三)
Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...
- CRF资料
与最大熵模型相似,条件随机场(Conditional random fields,CRFs)是一种机器学习模型,在自然语言处理的许多领域(如词性标注.中文分词.命名实体识别等)都有比较好的应用效果.条 ...
- 关于linux内核驱动开发中Makefile编译的问题
obj-y:打个比方,我要编译的是hello.c这个文件,obj-y就会把hello.c或者hello.c编译生成的hello.s文件链接到内核中去. obj-m:打个比方,我要编译的是hello.c ...