• 四则运算升级


    1)GitHub地址:

    https://github.com/zheng-xiao-yi/2/tree/master

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

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

    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
    

      4)运行测试及结果

     

     

     

     

     

     5)问题

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

    ②括号的位置有的时候会很奇怪

    ③程序运行时间没有提升

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

  • 相关阅读:
    将ip地址转成二进制数据,除基本输入输出不调用库函数实现
    将ip地址转成二进制数据
    一种合并链表方法实现 严蔚敏 数据结构
    阿里巴巴集团2014年校园招聘系统工程师北京笔试题
    显示模态模态对话框和非模态对话框
    MFC中利用CString和Format成员函数将数字格式化输出
    ObjectARX2012错误1 fatal error C1083: 无法打开包括文件:“arxHeaders.h”: No such file or directory; fatal error C1083: 无法打开包括文件:“map”: No such file or directory
    Metasploit 读书笔记-神器Meterpreter
    解决:kali linux 在vmware 虚拟机中使用bridge模式上网的问题
    metasploit 读书笔记-EXPLOITATION
  • 原文地址:https://www.cnblogs.com/13128870440-zxy/p/13737330.html
Copyright © 2020-2023  润新知