码迷,mamicode.com
首页 > 编程语言 > 详细

如何用python编写可使用cmd控制台传入参数的简单四则算式计算器

时间:2018-11-08 21:59:04      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:算法   port   传参   ima   导致   hide   cheng   数组   display   

一、项目码云地址是:https://gitee.com/Steven_me/personal_project41656

 

二、PSP预计表:

 

技术分享图片

 

三、简单的程序流程图: 

 

技术分享图片

四、下面附上程序部分运行代码样式仅限参考(关键函数已将重要参数缺失或替换掉)

1.定义去除括号和返回运算值部分:

技术分享图片
 1 def quchu(**):
 2   while 1:
 3     ** = re.search(r\([^(]*?\),**) 
 4     if **:
 5       re_string = **.group() 
 6       re_sj = suanfa(re_string.strip(())) 
 7       ** = **.replace(re_string,str(**))
 8       **
 9     break
10   re_sj = suanfa(string)
11   return float(**)
View Code

 

2.定义主要算法部分,算法部分优先处理乘除法,如果条件不满足就算加减法(使用正则运算优化):

技术分享图片
 1 def suanfa(**):
 2   while 1:
 3     ** = re.search(r\d+\.*?\d*[*/]\-?\d+\.?\d*, **)
 4     if **: 
 5       chengchu_string = **.group(456) 
 6      **r = chengchu(chengchu_string) 
 7       re_string = re_string.replace(chengchu_string, str(r**)) 
 8       re_string =chulifuhao(re_string) 
 9       **
10     break
11   **m = re.findall(r[+-]?\d+\.?\d*, **)
12   if len(num) > 1:
13     my*** = 0
14     for i in num:
15       my*** += float(i)
16     return my***
17   else:
18     return ***[0]
View Code

 

3.定义单元算法处理乘除法:

技术分享图片
1 def chengchu(~~):
2   if * in ~/~:
3     ~,~ = ~*~.split(*)
4     return float(~)*float(~) 
5   if / in ~/~:
6     ~, ~ = ~*~.split(/)
7     return float(~)/float(~)  
View Code

 

4.定义最后的处理符号:

 

技术分享图片

 

因为需要满足cmd传参,而命令行的第0未是为文件路径,所以算式在第1位,最后使用sys.argv[1]方法进行命令行传参,计算器支持带括号的混合运算,程序的实际运行结果:

 

技术分享图片

 

五、开发小结

 

遇到的困难:

1.前期版本的算法部分代码未经过正则运算优化导致臃肿,缓慢,甚至出错,不得已重构。。。。

2.需求分析出错,本来以为不用eval()可以很快写出来,没想到真的是有点想的太简单了。。。

3.没有做出正确的代码功能,导致在写代码的时候实现了“负优化”。。。

4.python的eval()函数真的好用!

 

得到的收获:

1.学习到了正则运算的好处,掌握并运用。

2.python真的是一门比较好用的编程语言,虽然它现在对数组类型规范的很严格。

3.python的eval()函数真的不错!

 

附上传说中的用eval()函数写的代码(仅供参考):

技术分享图片
1 import sys
2 re = sys.argv[1]
3 print (eval(re))
View Code

 程序运行结果:

技术分享图片

 

六、单元测试:

 

单元通过的结果:python程序因为使用过正则运算简化过,结果使用float进行转换,可以保留到小数点的后一位,可以转换符号,任意加减乘除都可以,下面是单元测试结果:

 

技术分享图片

 

单元未通过的结果:因为最后输出的是float值,所以当有string值,就会报错。

 

技术分享图片

 

七、最后的PSP表:

 

 技术分享图片

 

如何用python编写可使用cmd控制台传入参数的简单四则算式计算器

标签:算法   port   传参   ima   导致   hide   cheng   数组   display   

原文地址:https://www.cnblogs.com/Steven-Tim/p/9926324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!