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工具包中处理复杂问题的字典格式快捷建模方法. ...
随机推荐
- (NO.00001)iOS游戏SpeedBoy Lite成形记(九)
我们回到matchRun方法中去尝试第一次修改,部分代码如下: CCActionMoveBy *moveBy = [CCActionMoveBy actionWithDuration:duration ...
- 高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_L ...
- python的list
1.定义list >>> li = ["a", "b", "mpilgrim", "z", " ...
- Xcode 下cocos-2dx 环境搭建
一.Cocos2d-x简介 Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的,这是一个C++ Cocos2d-iPhone项目的版本. Cocos2d-X发展的重点是围绕Cocos ...
- Struts2技术内幕 读书笔记一 框架的本质
本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...
- Myexclipse创建Junit测试
. 下载JUnit的jar文件,下载地址在这里 2. 在MyEclipse中新建一个要测试的项目HelloJUnit 3. 添加一个要测试的类HelloJUnit,代码如下,注意需要先建package ...
- Unity Editor 编写unity插件类
在unity写了一个编辑类,基于iTweenpath插件,为了更方便的操作iTweenpath,顺便练习UnityEditor的操作,写了一个CreateiTweenPath,放在Editor文件夹中 ...
- HBase集群部署脚本
#!/bin/bash # Sync HBASE_HOME across the cluster. Must run on master using HBase owner user. HBASE_H ...
- iOS自定义多参数类型方法
前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题.这里做一下记录. 我自定义了一个方法: - (instancet ...
- Android使用统计图AChartEngine 来展示数据
本文采用的统计图参考:AChartEngine 访问地址 :http://code.google.com/p/achartengine/ 先给出效果图 本文的开发代码主要是这些:对一些代码进行修改 以 ...