PSP流程下四则运算升级
Github项目地址:https://github.com/ysd973/-
题目要求:
能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
除了整数外,还要支持真分数的四则运算
若想观看之前未改进的四则运算,可点击链接:https://www.cnblogs.com/ysd973/p/13699908.html
此次我对上次的四则运算代码做了一些功能升级,让它能够实现真分数四则运算,具体如下:
import profile import random from fractions import Fraction #四则运算 def szys(): sym = ['+', '-', '×', '÷'] f= random.randint(0, 3) z = random.randint(0, 1)#设置一个随机值,如果是1就进行整数运算,如果是0进行分数运算 n1 = random.randint(1, 20) n2 = random.randint(1, 20) n3 = random.randint(1, 20) n4 = random.randint(1, 20) result = 0 if z==0 : n1, n2 = max(n1, n2), min(n1, n2) if f == 0:#加法 result = n1 + n2 elif f == 1:#减法,要先比较大小,防止输出负数 n1, n2 = max(n1, n2), min(n1, n2) result = n1 - n2 elif f== 2:#乘法 result = n1 * n2 elif f == 3:#除法,要比较大小,并循环取整除 n1, n2 = max(n1, n2), min(n1, n2) while n1 % n2 != 0: n1 = random.randint(1, 10) n2 = random.randint(1, 10) n1, n2 = max(n1, n2), min(n1, n2) result = int(n1 / n2) print(n1, sym[f], n2, '= ', end='') return result if z == 1: n1, n2 = min(n1, n2), max(n1, n2)#把n1,n2中小的放在前面,保证f1为真分数 n3, n4 = min(n3, n4), max(n3, n4)#把n3,n4中小的放在前面,保证f2为真分数 f1 = Fraction(n1, n2)#初始化f1为n1/n2 f2 = Fraction(n3, n4)#初始化f2为n3/n4 if f == 0:#加法 result = f1 + f2 elif f == 1:#减法,要先比较大小,防止输出负数 f1, f2 = max(f1, f2), min(f1, f2) result = f1 - f2 elif f== 2:#乘法 result = f1 * f2 elif f == 3:#除法,要比较大小,并循环取整除 while n1 % n2 != 0: n1 = random.randint(1, 20) n2 = random.randint(1, 20) n1, n2 = min(n1, n2), max(n1, n2) n3, f2 = min(n3, n4), max(n3, n4) result = Fraction(f1 / f2) print(f1, sym[f], f2, '= ', end='') return result print('输入数字1进行四则运算') print('输入数字2进行性能测试') n=int(input()) #当输入1时,进行四则运算,调用函数syzs() if n==1: while True: result = szys() j= input() s= eval(j) if s== result : print('right') else: print('error.,the answer is', result ) if n==2: profile.run('szys()')
运行结果如下:

在原有代码的基础下,增加了真分数四则运算,实现了功能升级
此外我测试了代码的性能:得出如下的运行结果:


PSP 2.1表格如下:
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 20 | 30 |
| · Estimate | · 估计这个任务需要多少时间 | 40 | 60 |
| Development | 开发 | 120 | 140 |
| · Analysis | · 需求分析 (包括学习新技术) | 10 | 20 |
| · Design Spec | · 生成设计文档 | 20 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 35 |
| · Design | · 具体设计 | 10 | 15 |
| · Coding | · 具体编码 | 20 | 20 |
| · Code Review | · 代码复审 | 10 | 10 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
| Reporting | 报告 | 40 | 45 |
| · Test Report | · 测试报告 | 10 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 20 |
| 合计 | 350 | 455 |
最后总结:在原有的代码基础上,修改增加真分数四则运算,通过比较分子和分母的大小,确保出来的数是真分数,优化了代码和功能。

浙公网安备 33010602011771号