自动生成小学四则运算题目

1)Github项目地址

https://github.com/zheng-xiao-yi/2/blob/master/xxsxtm.py

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

 

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划  25 20 
· Estimate · 估计这个任务需要多少时间  320 300
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 
合计    345  
320

3)解题思路描述

①固定题目长度解决输入的要求(整数和真分数)

②生成随机数

③写生成题目和计算的函数,计算结果为小数

④不固定题目长度

⑤去掉结果为负数的题目

⑥找函数使结果成分数

⑦分成两个年龄段,三年级以上有乘除法,三年级以下没有

4)设计实现过程

一共三个函数,分别为main(),jisuan(),timu()

流程为:main()中输入是几年级的考生,然后进入timu()生成一个题目,然后进入jisuan()中得出结果,最后在main()中先判断结果是否不为负数,如果是则到了输入结果,判断结果,如果不是,则从新回到timu()和jisuan()中

流程图为:

 

 

5)代码说明(主要函数)

def timu(nianji,n):                                                  #生成题目
    shuzi=[random.randint(1,100)for i in range(n)]
    ti=""
    if(nianji<=3):                                                    #三年级以下只用做加减法
        fuhao=[random.choice(['+','-'])for i in range(n-1)]
    else:
        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])
    for i in range(n-1):
        ti=ti+str(shuzi[i])+fuhao[i]
    ti=ti+str(shuzi[i+1])+" ="
    return shuzi,fuhao,ti
def jisuan(shuzi,fuhao,n):                                  #题目计算
    i=0
    while (i<n-1):
        if(fuhao[i]=='*' or fuhao[i]=='/'):
            j=i
            temp=shuzi[i]
            while(j<n-1 and (fuhao[j]=='*' or fuhao[i]=='/')):
                if(fuhao[j]=='*'):
                    temp=temp*shuzi[j+1]
                elif(fuhao[i]=='/'):
                    temp=temp/shuzi[j+1]
                j=j+1
            shuzi[i]=temp;
            i=j
        i=i+1
    daan=shuzi[0]
    for i in range(n-1):
        if(fuhao[i]=='+'):
            daan=daan+shuzi[i+1]
        elif(fuhao[i]=='-'):
            daan=daan-shuzi[i+1]
    return daan

 6)测试运行

 

 

 

 

 

 

 

 

 7)展示程序中消耗最大的函数

 

 

 

posted on 2020-09-20 20:46  郑晓宜  阅读(97)  评论(0编辑  收藏  举报

导航