自动生成小学四则运算题目(支持真分数的四则运算)
Github项目地址:https://github.com/zb37/-/blob/master/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%97
1.题目要求:
a. 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
b. 除了整数外,还要支持真分数的四则运算
2.思路:
a.随机选择四则运算加减乘除
b.随机采用两个随机数,分整数和真分数两部分
c.由于不能出现负数,所以在对两个随机数进行减法运算的时候,需要进行比较大小,而除法在运算中,除数不能取0。
d.判断结果对错,给出正确答案
3.PSP表格
附:PSP 2.1表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 1440 | 720 |
Development | 开发 | 120 | 360 |
· Analysis | · 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | · 生成设计文档 | ||
· Design Review | · 设计复审 (和同事审核设计文档) | ||
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | ||
· Design | · 具体设计 | ||
· Coding | · 具体编码 | ||
· Code Review | · 代码复审 | 5 | 5 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 30 | 20 |
· Test Report | · 测试报告 | 30 | 20 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 1740 | 1230 |
4.代码
1 import random 2 from fractions import Fraction 3 def zs(): 4 5 fz= ['+', '-', '×', '÷']#随机选择运算法则 6 7 f= random.randint(0, 3) 8 9 n1 = random.randint(0,99) 10 11 n2 = random.randint(0,99) 12 13 result = 0 14 15 if f== 0:#加法 16 17 result = n1 + n2 18 19 elif f == 1:#减法,要先比较大小,防止输出负数 20 21 n1, n2 = max(n1, n2), min(n1, n2) 22 23 result = n1 - n2 24 25 elif f== 2:#乘法 26 27 result = n1 * n2 28 29 elif f == 3:#除法 30 n2 = random.randint(1,99) 31 32 result = n1 / n2 33 34 print(n1, fz[f], n2, '= ', end='') 35 36 return result 37 def xs(): 38 39 fz= ['+', '-', '×', '÷'] 40 41 f= random.randint(0, 3) 42 43 x1 = random.randint(0,20)#生成2个真分数,约分通分较复杂所以数值设的较小 44 if x1==0: 45 x2 = random.randint(1,20) 46 else: 47 x2 = random.randint(x1,20) 48 x3 = random.randint(0,20) 49 if x3==0: 50 x4 = random.randint(1,20) 51 else: 52 x4 = random.randint(x3,20) 53 n1 = Fraction(x1,x2) 54 n2 = Fraction(x3,x4) 55 result = 0 56 57 if f== 0:#加法 58 59 result = n1 + n2 60 61 elif f == 1:#减法,要先比较大小,防止输出负数 62 63 n1, n2 = max(n1, n2), min(n1, n2) 64 65 result = n1 - n2 66 67 elif f== 2:#乘法 68 69 result = n1 * n2 70 71 elif f == 3:#除法 72 73 result = n1 / n2 74 75 print(n1, fz[f], n2, '= ', end='') 76 77 return result 78 79 while True: 80 x= random.randint(1,2)#随机选择整数或者分数的题型 81 if x==1: 82 result=str(zs()) 83 y=input() 84 if y==result: 85 print('答对了') 86 else: 87 print('答错了,正确答案是:',result) 88 elif x==2: 89 result=str(xs()) 90 y=input() 91 if y==result: 92 print('答对了') 93 else: 94 print('答错了,正确答案是:',result)
5.运行测试
6.效能测试