GitHub项目地址:https://github.com/75-Hz/RJ-Project/blob/master/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%972.0
PSP表格:
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
40 |
Estimate |
估计这个任务需要多少时间 |
40 |
60 |
Development |
开发 |
150 |
210 |
Analysis |
需求分析 (包括学习新技术) |
45 |
60 |
Design Spec |
生成设计文档 |
15 |
25 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
30 |
40 |
Design |
具体设计 |
10 |
15 |
Coding |
具体编码 |
30 |
45 |
Code Review |
代码复审 |
10 |
15 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
45 |
Reporting |
报告 |
15 |
15 |
Test Report |
测试报告 |
10 |
15 |
Size Measurement |
计算工作量 |
5 |
7 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
10 |
10 |
合计 |
|
430 |
602 |
原基础代码:https://www.cnblogs.com/hjy567jiayouya/p/13705049.html
增加思路:
在原基础上增加真分数的运算,分子要比分母小,同时分母不为零,确保真分数。
减法不可小减大(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
实现过程:
定义函数:增加新函数fraction(),随机生成算式。
代码:
import profile import random from fractions import Fraction #四则运算2.0 def count(): sign = ['+', '-', '×', '÷'] f = random.randint(0, 3) m = random.randint(0, 1) n1 = random.randint(1, 20) n2 = random.randint(1, 20) key = 0 if f == 0:#加法 key = n1 + n2 elif f == 1:#减法,要先比较大小,防止输出负数 n1, n2 = max(n1, n2), min(n1, n2) key = n1 - n2 elif f == 2:#乘法 key = n1 * n2 elif f == 3:#除法,分母不可以为0 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) key = int(n1 / n2) print(n1, sign[f], n2, '= ', end='') return key def fraction (): sign = ['+', '-', '×', '÷'] f = random.randint(0, 3) n1 = random.randint(1, 20) n2 = random.randint(1, 20) n3 = random.randint(1, 20) n4 = random.randint(1, 20) key = 0 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:#加法 key = f1 + f2 elif f == 1:#减法,要先比较大小,防止输出负数 f1, f2 = max(f1, f2), min(f1, f2) key = f1 - f2 elif f == 2:#乘法 key = f1 * f2 elif f == 3:#除法,分母不可以为0 f1, f2 = max(f1, f2), min(f1, f2) while n1 % n2 != 0: n1 = random.randint(1, 10) n2 = random.randint(1, 10) n3 = random.randint(1, 10) n4 = random.randint(1, 10) n1, n2 = max(n1, n2), min(n1, n2) n3, n4 = max(n3, n4), min(n3, n4) key = Fraction(f1 / f2) print(f1, sign[f], f2, '= ', end='') return key print('小学四则运算') print('输入‘1’测试效能,输入‘2’整数运算,输入‘3’真分数运算') n = int(input()) #当输入1时,测试效能 if n==1: profile.run('count()') #当输入2时,整数运算 if n==2: while True: key = count() j = input() s = int(j) if s == key : print('right') else: print('error,the answer is',key) #当输入3时,真分数运算 if n==3: while True: key = fraction() j = input() s = eval(j) print('the answer is',key)
测试运行结果:
1.整数
2.真分数(不可判断回答正确与否 >-< )
效能分析结果:
小结:
这次是对四则运算的一个功能升级,增加了真分数的运算。但仍然有不足,不能判断结果正确与否,及时给出反馈,只能给出答案让做题者自行判断。我会继续完善的~