软件工程第一次作业——小学四则运算

GitHub项目地址:https://github.com/boker11/-/blob/master/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%97%E4%B9%9E%E4%B8%90%E7%89%88.py

解题思路描述:在网上寻找相似代码的时候发现,他们写的代码都比较复杂,函数众多看起来比较吃力,所以参考了一个比较简单的代码略加改进。

                         我改进的代码是三个数字的加减乘除运算,计算过程中不会出现负数,假分数。要求保留两位小数。

主要代码:

import random


def Farithmetic(m):
    print("小学四则运算测试(共%d道,答案保留两位小数):" % m)
    ysf = ['+', '-', '*', '/']

    i = 1 #题号
    n = 0 #记录答题正确个数
    while i <= m:
        add1 = random.randint(1, 100)  #数
        add2 = random.randint(1, 100)
        add3 = random.randint(1, 100)
        op1 = random.randint(0, 3)     #随机运算符
        op2 = random.randint(0, 3)
        eq = str(add1)+ysf[op1]+str(add2)+ysf[op2]+str(add3) #算式
        eq1 = str(add1)+ysf[op1]+str(add2)
        eq2 = str(add2)+ysf[op2]+str(add3)
        val1 = eval(eq1)
        val2 = eval(eq2)
        val = eval(eq)     # 算式答案
        if ysf[3] in eq:   #判断是否出现真分数
            if ysf[3] in eq1:
                if val1 > 1:
                    tmp = add1
                    add1 = add2
                    add2 = tmp
                if val1 == 1:
                    continue
            else:
                if val2 > 1:
                    tmp = add2
                    add2 = add3
                    add3 = tmp
                if val2 == 1:
                    continue
            eq = str(add1)+ysf[op1]+str(add2)+ysf[op2]+str(add3) #算式重置
            val = eval(eq)
        if val1 < 0 or val2 < 0 or val < 0: #判断答案是否为负数
            continue
        if val > 1000:  # 限制答案在合理范围
            continue
        print("题目%d:%s=" % (i, eq))
        ans = input("用户回答:")

        if val == int(ans):
            print("Congratulation,you are right!")
            n += 1
        else:
            print("Sorry,your answer is error.The right answer is %.2f" % val)
        if i == m:  # 退出循环
            y = n / (i - 1)
            print("本次答题结束,答题正确率是:%.2f" % y)
        i += 1


m = int(input('输入需要出的题目数:'))
Farithmetic(m)

  测试运行:

用时分析:

猜你喜欢

转载自www.cnblogs.com/boker11/p/10569103.html
今日推荐