四则运算

任务需求:

1.输入一个数n,能生成n道四则运算的题目

2.题目较为简单,整数算式数字在1-100之间,分数算式数字在1-10之间

 

 

思路

分为三个部分,函数oprInt()用于生成整数算式

def oprInt():#整数四则运算
    opr = ['+', '-', '×', '÷'] #运算符集合
    j = random.randint(0, 3) #运算符集合下标
    n1 = random.randint(1, 100) #随机生成1-100间的整数
    n2 = random.randint(1, 100) #随机生成1-100间的整数
    re = 0 #运算结果
    if j == 0: #算式为加法
        result = n1 + n2
    elif j == 1: #算式为减法
        n1, n2 = max(n1, n2), min(n1, n2) #n1取较大值,n2取较小值
        result = n1 - n2
    elif j == 2: #算式为乘法
        result = n1 * n2
    elif j == 3: #算式为除法
        n1, n2 = max(n1, n2), min(n1, n2) #被除数n1为较大值,除数n2为较小值
        while n1 % n2 != 0: #保证算式为整除
            n1 = random.randint(1, 100)
            n2 = random.randint(1, 100)
            n1, n2 = max(n1, n2), min(n1, n2)
        result = int(n1 / n2)
    print(n1, opr[j], n2, '= ') #输出题目
    print('请输入你的答案:')
    myResult=eval(input()) #从键盘输入答案
    if(myResult==result): #判断输入的答案正误
        print('答案正确')
    else:
        print('答案错误,正确答案为:',result)
    return result

 

函数oprFra()用于生成分数算式

def oprFra():
    opr = ['+', '-', '×', '÷'] #运算符集合
    j = random.randint(0, 3) #运算符集合下标
    fenzi1 = random.randint(1, 10)
   	fenmu1 = random.randint(fenzi1, 10)
    n1 = Fraction(fenzi1,fenmu1) #生成分数
    fenzi2 = random.randint(1, 10)
    fenmu2 = random.randint(fenzi2, 10)
    n2 = Fraction(fenzi2,fenmu2) #生成分数
    result = 0
    if j == 0: #算式为加法
        result = n1 + n2
    elif j == 1: #算式为减法
        n1, n2 = max(n1, n2), min(n1, n2)
       	result = n1 - n2
    elif j == 2: #算式为乘法
        result = n1 * n2
    elif j == 3: #算式为除法
        n1, n2 = max(n1, n2), min(n1, n2)
        result = n1 / n2
    print(n1, opr[j], n2, '= ')
    print('请输入你的答案:')
    fenzi,fenmu=map(int,input().split()) #从键盘同时输入分子和分母
    myResult=Fraction(fenzi,fenmu)
    if(myResult==result):
        print('答案正确')
    else:
        print('答案错误,正确答案为:',result)
    return result

 

函数newTest()用于生成题目及答案

def newTest():
    print('输入题库所需要的题目数量')
    n=int(input()) #题目数量n
    print('----------------------')
    result=[] #答案集合
    m=0
    while m<=(n-1):
        j = random.randint(0, 1) #让题目大概一般整数算式,一般分数算式
        if j==0: #生成分数算式
            print(m+1,end='、')
            result.append(oprFra())
            print(' ')
        else: #生成整数算式
            print(m+1,end='、')
            result.append(oprInt())
            print(' ')
        m=m+1
    m=0
    print('----------------------')
    print('答案:')
    while m<=(n-1):
        print(m+1,'、',result[m]) #输出答案
        m=m+1
newTest()

 

运行结果:

 还能改进的地方

1.整数和分数能同时计算

2.能计算括号

 

PSP2.1

内容 预估耗时(分钟) 实际耗时(分钟)
估计这个任务需要多长时间   180
需求分析   10
生成设计文档   /
设计复审   /
代码规范   /
具体设计   100
代码复审   20
测试   30
测试报告   10
计算工作量   5
事后总结,并提出过程改进计划   5
posted @ 2021-09-21 21:59  鹿丶泠  阅读(235)  评论(0)    收藏  举报