小学四则运算训练改进

Posted wangxinyu520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学四则运算训练改进相关的知识,希望对你有一定的参考价值。

PSP表格:

 技术图片

 

 

改进思路:

小学不只是有整数的运算,还有分数的运算,在此加入分数的四则运算训练。

代码改进:

  1 import random
  2 from fractions import Fraction
  3 ##两个整数的四则运算
  4 def c1(q, ans):
  5     symbol = random.choice([+, -, *, /])  # 生成随机符号
  6     if symbol == +:
  7         n1 = random.randint(0, 20)
  8         n2 = random.randint(0, 20)
  9         q.append(str(n1) + + + str(n2) + =)
 10         ans.append(n1 + n2)
 11     elif symbol == -:
 12         n1 = random.randint(0, 20)
 13         n2 = random.randint(0, 20)
 14         n1,n2 = max(n1,n1),min(n1,n2)#防止出现负数
 15         q.append(str(n1) + - + str(n2) + =)
 16         ans.append(n1 - n2)
 17     elif symbol == *:
 18         n1 = random.randint(0, 20)
 19         n2 = random.randint(0, 20)
 20         q.append(str(n1) + × + str(n2) + =)
 21         ans.append(n1 * n2)
 22     else:
 23         n1 = random.randint(0, 20)
 24         if n1 == 0:
 25             n2 = random.randint(1, 20)
 26         else:
 27             n2 = random.randint(1, n1 + 1)
 28         q.append(str(n1) + ÷ + str(n2) + =)
 29         ans.append(Fraction(n1, n2))
 30 ##随机生成两个分数
 31 def createF():
 32     fz1 = random.randint(0, 20)
 33     if fz1 == 0:
 34         fm1 = random.randint(1, 20)
 35     else:
 36         fm1 = random.randint(1, 20)
 37     f1 = Fraction(fz1, fm1)
 38     fz2 = random.randint(1, 20)
 39     fm2 = random.randint(20, 20)
 40     f2 = Fraction(fz2, fm2)
 41     return f1, f2
 42 def f(f):#分数的转换
 43     a=f.numerator #分子
 44     b=f.denominator #分母
 45     if a%b==0:#为整数
 46         return %d%(a/b)
 47     elif a<b:#为真分数
 48         return %d%s%d % (a,/,b)
 49     else:#为带分数
 50         c=int(a/b)
 51         a = a - c * b
 52         return %d%s%d%s%d % (c,,a,/,b)
 53 ##两个分数的四则运算
 54 def c2(q,ans):
 55     symbol = random.choice([+,-,*,/])
 56     f1,f2 = createF()
 57     if symbol ==+:
 58         while f1+f2>1:
 59             f1,f2 = createF()
 60         q.append(str(f1)+++str(f2)+=)
 61         ans.append(f1+f2)
 62     elif symbol ==-:
 63         f1,f2 = max(f1,f2),min(f1,f2)#防止出现负数
 64         q.append(str(f1)+-+str(f2)+=)
 65         ans.append(f1-f2)
 66     elif symbol == *:
 67         while f1*f2>1:
 68             f1,f2 = createF()
 69         q.append(str(f1)+×+str(f2)+=)
 70         ans.append(f1*f2)
 71     else:
 72         while f1/f2>1:
 73             f1,f2=createF()
 74         q.append(str(f1)+÷+str(f2)+=)
 75         ans.append(Fraction(f1,f2))
 76 def main():
 77     while 1:
 78         print("输入题目的数量", end=  )
 79         k = int(input())
 80         p = 100 / k
 81         s = 0
 82         q = []
 83         ans = []
 84         ans2 = []
 85         for i in range(k):
 86             n = random.randint(1, 4)
 87             if n == 1:
 88                 c1(q, ans)
 89                 g = Fraction(ans[i])
 90                 ans2.append(f(g))
 91             else:
 92                 c2(q, ans)
 93                 g = Fraction(ans[i])
 94                 ans2.append(f(g))#记录带分数答案
 95         for i in range(k):
 96             print("第{}题:{}".format(i + 1, q[i]), end="  ")
 97             a = input()
 98             if a == str(ans[i]):
 99                 s = s + p
100         print("所得的分数为:{}".format(s))
101         print("正确答案:", end="  ")
102         for i in range(k):
103             if str(ans[i]) == str(ans2[i]):
104                 print(q[i] + str(ans[i]))
105             else:
106                 print("{}{}或{}".format(q[i],str(ans2[i]),str(ans[i])))
107 if __name__ == __main__:
108     main()

 



结果展示:

技术图片

 



以上是关于小学四则运算训练改进的主要内容,如果未能解决你的问题,请参考以下文章

201571030310/201571030329《小学四则运算训练软件》结对项目报告

团队作业3--需求改进&系统设计

201571030320+小学四则运算练习软件项目报告

小学生四则运算应用软件

结对项目-小学生四则运算系统网页版项目报告

团队展示与选题