四则运算

---恢复内容开始---

题目

1、能自动生成四则运算题目(不能出现小数)

2、除了整数外,能支持分数运算。

 

1、解题思路

(1)刚拿到题目,我认为应从简单的整数运算开始。运用列表存储运算符,用random函数产生0-3的运算符,以决定产生的运算式子是哪种运算符。随后随机产生两个数进行运算。一次循环产生用户需要的题目数量。其次,还进行运算,给出答案。由于不能产生负数,应注意在减法运算时,要把随机产生的较大数赋值给被减数,叫小数赋值给减数。除法运算中除数不能是0.2、解题思路

(2)在进行分数运算时 ,用到fraction函数以生成分数。

2、函数组成

该程序包括三个三个函数。其中newint()用于整数四则运算,newfra()用于分数四则运算,newtest():用于产生式子。

3、代码

from fractions import Fraction
import random
def newint():#整数四则运算
    opr = ['', '', '×', '÷']
    fh = random.randint(0, 3)
    n1 = random.randint(0, 100)
    n2 = random.randint(0, 100)
    rjg = 0
    if fh == 0:
        rjg = n1 + n2
    elif fh == 1:
        n1, n2 = max(n1, n2), min(n1, n2)
        rjg = n1 - n2
    elif fh == 2:
        rjg = n1 * n2
    elif fh == 3:
        n1, n2 = max(n1, n2), min(n1, n2)
        while n1 % n2 != 0:
            n1 = random.randint(0, 100)
            n2 = random.randint(0, 100)
            n1, n2 = max(n1, n2), min(n1, n2)
        rjg = int(n1 / n2)
    print(n1, opr[fh], n2, '= ', end='')
    return rjg
def newfra():#分数四则运算
    opr = ['', '', '×', '÷']
    fh = random.randint(0, 3)
    t1 = random.randint(1, 100)
    t2 = random.randint(t1, 100)
    n1 = Fraction(t1, t2)
    t1 = random.randint(1, 100)
    t2 = random.randint(t1, 100)
    n2 = Fraction(t1, t2)
    rjg = 0
    if fh == 0:
        rjg = n1 + n2
    elif fh == 1:
        n1, n2 = max(n1, n2), min(n1, n2)
        rjg = n1 - n2
    elif fh == 2:
        rjg = n1 * n2
    elif fh == 3:
        n1, n2 = max(n1, n2), min(n1, n2)
        rjg = n1 / n2
    print(n1, opr[fh], n2, '= ', end='')
    return rjg
def newtest():
    opr = ['', '', '×', '÷']
    print('输入题库所需要的题目数量')
    n=int(input())
    rjg=[]
    m=0
    while m<=(n-1):
        fh = random.randint(0, 1)#大概一半整数运算,一半分数运算
        if fh==0:
            print(m+1,end='')
            rjg.append(newfra())
            print(' ')
        else:
            print(m+1,end='')
            rjg.append(newint())
            print(' ')
        m=m+1
    m=0
    print('答案:')
    while m<=(n-1):
        print(m+1,'',rjg[m])
        m=m+1
newtest()

4、运算结果

 5、改进

   可在代码中加入算法实现:记录学生容易错的题型,以更高的概率出易错题。

 6、时间

内容 预估耗时(分钟) 实际耗时(分钟)
估计这个任务需要多长时间 150 150
需求分析 10 10
生成设计文档 10 10
设计复审 10 10
代码规范 10 10
具体设计 30 30
代码复审 10 10
测试 10 10
测试报告 10 10
计算工作量 10 10
事后总结,并提出过程改进计划 10 10

posted @ 2019-03-21 13:44  王莲  阅读(160)  评论(0)    收藏  举报