小学四则运算训练及套题生成(Python)

  1 '''
  2 Created on 2019年3月21日
  3 
  4 @author: Chilincoln
  5 
  6 #Construct a Fraction by numerator and denominator
  7 print (Fraction(3))      #3
  8 print (Fraction())       #0
  9 print (Fraction(10,8))   #5/4
 10  
 11 #construct by other fraction
 12 print (Fraction(5/4))    #5/4
 13 '''
 14 import random
 15 from fractions import Fraction
 16 
 17 #def newint() 生成整数四则运算
 18 def newint():
 19     opr = ['', '', '×', '÷']
 20     #以下fh取符号,n1、n2取随机整数
 21     fh = random.randint(0, 3)
 22     n1 = random.randint(1, 20)
 23     n2 = random.randint(1, 20)
 24     rjg = 0
 25     if fh == 0:
 26         rjg = n1 + n2
 27     elif fh == 1:
 28         #防止出现负数,则取大的在前,小的在后
 29         n1, n2 = max(n1, n2), min(n1, n2)
 30         rjg = n1 - n2
 31     elif fh == 2:
 32         rjg = n1 * n2
 33     elif fh == 3:
 34         n1, n2 = max(n1, n2), min(n1, n2)
 35         #除法缩小难度,不考虑余数
 36         while n1 % n2 != 0:
 37             n1 = random.randint(1, 10)
 38             n2 = random.randint(1, 10)
 39             n1, n2 = max(n1, n2), min(n1, n2)
 40         rjg = int(n1 / n2)
 41     #输出题目,返回答案
 42     print(n1, opr[fh], n2, '= ', end='')
 43     return rjg
 44 
 45 #def newfra() 生成真分数四则运算
 46 def newfra():
 47     opr = ['', '', '×', '÷']
 48     #创造n1、n2为随机分数
 49     fh = random.randint(0, 3)
 50     t1 = random.randint(1, 10)
 51     t2 = random.randint(t1, 10)
 52     n1 = Fraction(t1, t2)
 53     t1 = random.randint(1, 10)
 54     t2 = random.randint(t1, 10)
 55     n2 = Fraction(t1, t2)
 56     rjg = 0
 57     if fh == 0:
 58         rjg = n1 + n2
 59     elif fh == 1:
 60         n1, n2 = max(n1, n2), min(n1, n2)
 61         rjg = n1 - n2
 62     elif fh == 2:
 63         rjg = n1 * n2
 64     elif fh == 3:
 65         n1, n2 = max(n1, n2), min(n1, n2)
 66         rjg = n1 / n2
 67     print(n1, opr[fh], n2, '= ', end='')
 68     return rjg
 69 
 70 # def newtest() 生成制定指定数量的四则运算题目
 71 def newtest():
 72     opr = ['', '', '×', '÷']
 73     print('输入题库所需要的题目数量:')
 74     n=int(input())
 75     #建立一个答案列表rig[]
 76     rjg=[]
 77     #m为题序
 78     m=0
 79     while m<=(n-1):
 80         #随机四则运算,设置分数四则运算的概率为1/4,整数为3/4
 81         fh = random.randint(0, 4)
 82         if fh==0:
 83             print(m+1,end='')
 84             rjg.append(newfra())
 85             print(' ')
 86         else:
 87             print(m+1,end='')
 88             rjg.append(newint())
 89             print(' ')
 90         m=m+1
 91     m=0
 92     print('答案:')
 93     while m<=(n-1):
 94         print(m+1,'',rjg[m])
 95         m=m+1
 96         
 97 print('输入 1 开始逐题练习四则运算')
 98 print('输入 2 开始制作四则运算题库')
 99 n=int(input())
100 if n==1:
101     print('input "0000" to Quit')
102     while True:
103         fh = random.randint(0, 4)
104         if fh == 0:
105             rjg = newfra()
106             jg = input()
107             if jg == '0000':
108                 break;
109             sr = Fraction(jg)
110             if sr == rjg:
111                 print('Bingo!')
112             else:
113                 print('Sorry, the true answer is', rjg)
114         else:
115             rjg = newint()
116             jg = input()
117             if jg == '0000':
118                 break;
119             sr = int(jg)
120             if sr == rjg:
121                 print('Bingo!')
122             else:
123                 print('Sorry, the true answer is', rjg)
124 if n==2:
125     newtest()
126     

猜你喜欢

转载自www.cnblogs.com/chilincoln/p/10571295.html
今日推荐