自动生成小学四则运算题目(支持真分数的四则运算)

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.1Personal 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
· 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.效能测试

 

 

 

 

posted @ 2020-09-20 22:23    阅读(185)  评论(0编辑  收藏  举报