这次的代码码云地址为:https://gitee.com/z_m_g/personal_project41678/tree/master/2016035107300
PSP2.1 |
Personal Software ProcessStages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
480 |
500 |
Estimate |
估计这个任务需要多少时间 |
480 |
360 |
Development |
开发 |
240 |
200 |
Analiysis |
需求分析(包括学习新技术) |
30 |
30 |
Design Spec |
生成设计文档 |
10 |
20 |
Design Review |
设计复审 |
10 |
5 |
Coding Standard |
代码规范(为目前的开发制定合适的规范) |
20 |
5 |
Design |
具体设计 |
20 |
5 |
Coding |
具体编码 |
60 |
150 |
Code Review |
代码复审 |
20 |
100 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
20 |
Reporting |
报告 |
0 |
0 |
Test Repor |
测试报告 |
0 |
0 |
Size Measurement |
计算工作量 |
0 |
0 |
Postmortem & Process Improvement Plan |
事后总结,并提出过程改进计划 |
60 |
20 |
|
合计 |
500 |
585
|
拿到题目之后就需要考虑四则运算在给的几种语言中选择了一个相对来说比较会的语言,但是看到题目要求是必须从命令行获取数据的边去万能的百度搜索了很多但是都没有找到看明白的解决方案,看过老师的教学视频之后便明白了该怎么去操作,运用argparse类传入两个值,并把值保存在suanshi里面,import argparse
parser = argparse.ArgumentParser(description = 'Process some string')
parser.add_argument("a",type=str)
args = parser.parse_args()
suanshi=args.a
接受输入的是字符串类型,所以在接下来要实现运算时就需要将字符串转换为数字啦。
接受数字解决完之后就需要解决加减的简单问题了,所以需要先定义函数,定义好函数之后就要实现算法了,先通过split分割函数把saunshi的列表切出一个一个数字,再通过遍历将字符串转换为数字,之后就可以用中间变量sums存放每次遍历相加的结果,最后返回sums这个数值,加法函数就完成了。
def
additive(suanshi):
sums = 0
lis = suanshi.split("+")
for num in lis:
nums = int(num)
sums =sums+nums
return sums
减法与加法有些差别,我使用加法结构写减法时发现我输入4-3时就会输出-7的结果,输入5-3就会得出-8的结果,我便在sums =sums-nums后加了一句print sums 结果sums的结果返回的是sums的负数,我找了一会代码发现原来是加法时sums我一开始赋值为0,第一次循环时计算0-sums 结果就是-sums了,我又重新思考了一下减法,我使减法的的中间变量初始值为0再加上列表中第一位在循环列表元素就好了,这个便是我的减法代码
def
subtraction(suanshi):
jian = 0
lis = suanshi.split("-")
jian = jian+int(lis[0])
del lis[0]
for num in lis:
nums = int(num)
jian = jian-nums
return jian
乘法的suan算法与加法一致,除法与减法的算法一致,不过乘法的中间变量初始化为1,因为1乘以任何数都是任何数。
##乘法
def
multiplicative(suanshi):
cheng = 1
lis = suanshi.split("*")
for num in lis:
nums = int(num)
cheng = cheng*nums
return cheng
简单四则运算流程图:
程序单元测试:
因为我编写的简单四则运算没有实现异常处理所以我的测试代码就只是验证了在正常输入的情况下,输入的值所所可以得到的结果,其中unittest是python自带的测试代码,可以在测试文件中导入这个包,其中assertEqual()函数是测试你程序出现的结果与你给定预期的结果是否一致的,如果一致返回True并计算程序所消耗的时间,若出现错误就会返回false 。
from calculator import *
import unittest
class TextCalculator(unittest.TestCase):
def test_additive(self):
ta = additive(3+4+3)
self.assertEqual(ta,10)
def test_subtraction(self):
ta = subtraction(3-4-3)
self.assertEqual(ta,-3)
def test_multiplicative(self):
ta = multiplicative(3*4*3)
self.assertEqual(ta,36)
def test_division(self):
ta = division(12*4*3)
self.assertEqual(ta,1.0)
if __name__ =="__main__":##这里是调用这个函数。
unittest.main()