zoukankan      html  css  js  c++  java
  • 四则运算升级

    1.GitHub地址:

    https://github.com/RNG-Wh1t3zZ/the-four-fundamental-operations-of-arithmetic/blob/master/zy2.py

    2.估计将在程序的各个模块的开发上耗费的时间。

    PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
    Planning 计划  30 25
    · Estimate · 估计这个任务需要多少时间  480 480
    Development 开发  /
    · Analysis · 需求分析 (包括学习新技术)  20 10 
    · Design Spec · 生成设计文档  20  20
    · Design Review · 设计复审 (和同事审核设计文档)  /
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范)  15 15
    · Design · 具体设计  30  20
    · Coding · 具体编码 90 120 
    · Code Review · 代码复审  30 20 
    · Test · 测试(自我测试,修改代码,提交修改) 40   40
    Reporting 报告  15 15 
    · Test Report · 测试报告  10 10 
    · Size Measurement · 计算工作量  10 10 
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划  20 20 
    合计    510  
    505

    3.功能升级(较原先的版本)

    升级的功能:

    ①输入年级时,如果输入的不是小学的年级且次数超过3次则考试分数为0

    ②在生成题目时增加了括号运算,且只有在符号为“+,-”时选择是否加上括号,且括号内只有两个数

    ③输入可以为分数也可以为整数

    ④题目难度被分为三个阶段:1-2,3-4,5-6

    ⑤判断输入的结果是否为以约分的,如果不是,则为错误

    4.增加的主要函数

     对应3)中的⑤,小学数学题目中要求结果要约分,所以增加了这个函数

    def gongyinshu(sum1,sum2):                                   #判断输入的数是否为约分后的数,如果还可以约分,则为错误
        if(sum1>sum2):
            a=sum1
            b=sum2
        else:
            a=sum2
            b=sum1
        while(a%b!=0):
            t=b
            b=a%b
            a=t
        if(b==1):
            return 1
        else:
            return -1

     对应3)中的③,输入分数时不能直接用float()将输入的字符串转化成数字,所以增加这个函数

    def jieguozhuanhuan(jieguo):                                              #将输入的答案转化为数字
        temp = 0
        sum1 = 0
        sum2 = 0
        jieguo = jieguo +'/'
        for i in jieguo:
            if(i != '/'):
                temp = temp*10+int(i)
            elif(sum1==0):
                sum1=temp/10
                temp = 0
            else:
                sum2 = temp/10
                temp = 0
        if(sum2 != 0):
            sum = sum1/sum2
            if(gongyinshu==-1):
                return -1
        else:
            sum = sum1
        return Fraction('{}'.format(sum)).limit_denominator()

    对应3)中的④,小学数学题目和年级有一定的关系,需要划分难度等级,一二年级的同学难度较低,三四年级难度高一些,五六年级最难

    def timu(nianji,n):                                                  #生成题目,返回题目和答案
        if(nianji<=2):                                                   #2年级以下只用做10以内的加减法
            shuzi=[random.randint(1,10)for i in range(n)]
            fuhao=[random.choice(['+','-'])for i in range(n-1)]
        elif(nianji<=4):
            shuzi=[random.randint(1,10)for i in range(n)]               #4,3年级需要会10以内的四则运算
            fuhao=[random.choice(['+','-','*','/'])for i in range(n-1)]
        else:
            shuzi=[random.randint(1,100)for i in range(n)]               #5,6年级的题目为100以内的四则运算
            fuhao=[random.choice(['+','-','*','/'])for i in range(n-1)]
        for i in range(n-1):
            if(fuhao[i]=='/'):                                           #分数全为真分数
                while(shuzi[i]>=shuzi[i+1]):
                    shuzi[i]=random.randint(1,shuzi[i+1])
        if(nianji>2):
            fuhao = kuohao(fuhao,n)
        ti=lianjie(fuhao,shuzi,n)
        daan = jisuan(shuzi,fuhao,n)
        return daan,ti

      对应3)中的②,在题目中加上()运算,由于题目长度不同,加的位置不能固定,所以在确定这个位置是否添加()是用随机函数randint(0,1)决定的,0不添加,1添加

    def kuohao(fuhao,n):                                          #如果temp为1.则生成括号,反之,则不
        i=0
        f=[]
        while(i<len(fuhao)):
            if (i != 0 and (f[len(f)-1] != ')' and f[len(f)-1] != '(') and (fuhao[i] == '+' or fuhao[i] == '-')):
                temp = random.randint(0,1);
                if(temp == 1):
                    f.append('(')
                    f.append(fuhao[i])
                    f.append(')')
                    i=i+1
                    continue
            f.append(fuhao[i])
            i = i+1
        return f

     5.运行测试及结果

    6.问题

    有时候在生成题目时有延迟

    程序运行时间没有提升

    程序运行时空间占用变多了

  • 相关阅读:
    noip2017逛公园
    [noip模拟赛]小U的女装
    AT2364 Colorful Balls
    关于bitset
    [ZJOI2010]排列计数
    [noip模拟赛]午餐
    [noip2017]列队
    [学习笔记]dsu on a tree(如何远离线段树合并)
    luogu4917天守阁的地板
    线性求素数+莫比乌斯函数+欧拉函数模板
  • 原文地址:https://www.cnblogs.com/abing123/p/13738906.html
Copyright © 2011-2022 走看看