首页 > 其他 > 详细

四则运算升级

时间:2020-09-27 13:35:00      阅读:37      评论:0      收藏:0      [点我收藏+]

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.问题

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

程序运行时间没有提升

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

四则运算升级

原文:https://www.cnblogs.com/abing123/p/13738906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!