zoukankan      html  css  js  c++  java
  • 小学四则运算训练改进

    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()



    结果展示:

  • 相关阅读:
    Foxit 出mac 版本啦
    mac 上的latex (有很多链接,侵权请通知,一定删除)
    集合转数组
    select2搜索框查询加遍历
    下拉框回显
    柱状堆积图Echarts
    echarts X轴数据显示不全问题
    Map静态键值对
    如何配置pl/sql (本地客户端)连接远程oracle服务器
    自定义验证jquery.validate
  • 原文地址:https://www.cnblogs.com/wangxinyu520/p/13764734.html
Copyright © 2011-2022 走看看