小学四则运算题目(升级作业)

Github项目地址:https://github.com/zb37/-/blob/master/README.md

1.题目要求:

   a.  能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)

   b. 除了整数外,还要支持真分数的四则运算

   c.个人PSP (四则运算) 升级作业:
   要求:对你们上一次四则运算作业进行一次升级,必须有P S P 2.1标准步骤。
   升级方式: (可选, 最少选一个升级方向) :
   (1) 功能升级, (2) 界升级,(3) 性能升级, (4) 胚同语写升级

 2.思路:

   a.随机选择四则运算加减乘除

   b.随机采用两个随机数,分整数和真分数两部分

   c.由于不能出现负数,所以在对两个随机数进行减法运算的时候,需要进行比较大小,而除法在运算中,除数不能取0。

   d.判断结果对错,给出正确答案

   e.升级方向是建题库不用一道一道出题这么麻烦

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 def chuti():
 79     x= random.randint(1,2)
 80     if x==1:
 81         result=str(zs())
 82     elif x==2:
 83         result=str(xs())
 84     return result
 85     
 86 #制作题库
 87  
 88 def test():
 89     print('输入所需要的题目数量')
 90  
 91     n=int(input())
 92  
 93     result =[]
 94  
 95     m=0
 96  
 97     while m<=(n-1):
 98  
 99         print(m+1,end='')
100         result .append(chuti())
101         print(' ')
102         m=m+1
103  
104     m=0
105  
106     print('对应的答案:')
107  
108     while m<=(n-1):
109  
110         print(m+1,'',result [m])
111  
112         m=m+1
113  
114   
115  
116 print('选择想要的模式')
117  
118 print('1、进行单道四则运算')
119  
120 print('2、制作题库')
121  
122 n=int(input())
123  
124 #当输入1时,进行单道四则运算
125  
126 if n==1:
127  
128     while True:
129         x= random.randint(1,2)#随机选择整数或者分数的题型
130         if x==1:
131             result=str(zs())
132             y=input()
133             if y==result:
134                 print('答对了')
135             else:
136                 print('答错了,正确答案是:',result)
137         elif x==2:
138             result=str(xs())
139             y=input()
140             if y==result:
141                 print('答对了')
142             else:
143                 print('答错了,正确答案是:',result)
144 #当输入2时,进行制作题库
145  
146 if n==2:
147  
148      test()
149     
View Code

5.运行测试

 

 6.效能测试

 

 

 

 

 

 

 

 

 
posted @ 2020-10-11 21:52    阅读(95)  评论(0编辑  收藏  举报