等的就是你,嘿嘿

课后作业二

远程仓库地址:https://gitee.com/tanglibo/personal_project41656

 预估psp:

 

我的程序支持任意两个正整数进行 加 减 乘 除 运算:

限制就是只限制于正整数 , 对计算的结果没有限制。

设计与实现过程:

   此程序核心思路:拆分,重组。

(1)通过sys模块对命令行参数进行抓取,要注意的是抓取的位置是第“1”位,而不是第“0”  文件路径默认为第“0”位,也就是说抓取的是最后一位,也就是  [len()-1]

(2)将抓取的字符串进行拆分,通过简单的正则表达式拆分 :re.split(r'[+,\-,*,/]',string),再通过遍历将数值和运算符号进行分离

(3)将分离的数值和运算符分别存储到不同的列表中

(4)最后再将抓取的字符串型转化成int型,再和运算符组合,从而输出。

  代码组织情况:整个过程用了两个自定义函数 : chaifen()  和  jisuan()。 在chaifen()函数中调用jisuan()函数,调用过程中只是单纯的遍历,添加,几乎不需要流程图。

  关键部分:就是遍历,添加,也就是chaifen()函数。(本来是要实现四则混合 运算,但是对正则表达式的运用不是十分娴熟,所以退而求其次,用笨方法写的现在的程序。)

  关键问题:遇到最大的问题就是,如何将字符串形式的算式在不用eval的情况下计算求值,解决办法就是,将字符串拆分,重组,在重组的同时将拆分的数值转化成int型从而实现功能。(而我不能进行混合四则运算的主要原因是无法将原式重组出 来,所以我写的只支持任意一个运算符的运算。)

 程序单元测试展示:

测试通过结果

 

测试未通过结果(45*5=225,而非25,所以未通过测试)

测试函数说明

通过构建四个实例进行测试(由于我只能进行任意两个正整数运算,所以用四个实例,为:+,-,*,/)

测试函数思路:

将命令行抓取的字符串算式进行替换,通过手动赋予字符串形式算式得到,需要注意的是代码中是否有返还值,若没有返还值测试代码中会有 None值产生导致所有的测试代码无论正确与否全部都通过测试,所以功能代码中有构建返还值,这样测试代码中的测试才会准确,而功能代码在非命令行中运行会产生一个None值,这是正常现象只有在命令行中运行且输入算式才会有结果。

测试覆盖率截图:

 

无异常结果说明

实际 psp:

 

posted @ 2018-11-07 19:31  糖小二  阅读(144)  评论(0编辑  收藏  举报