zoukankan      html  css  js  c++  java
  • 小学四则运算编程实践

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

  • 相关阅读:
    小程序 scroll-view 中文字不换行问题
    模块
    网络编程
    元类
    day24
    day23
    day22
    day21
    day18
    day17
  • 原文地址:https://www.cnblogs.com/20201212ycy/p/14056941.html
Copyright © 2011-2022 走看看