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


    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)展示程序中消耗最大的函数

     

  • 相关阅读:
    Android程序反编译的方法(转)
    VMware的Easy Install安装
    Oracle ORA12514:TNS:监听程序当前无法识别连接描述符中请求的服务
    Java Eclipse 如何导入外部Jar包
    Oracle IMP00010: 不是有效的导出文件,标题验证失败
    怎样取消Windows 2003 server 意外关机提示
    没有文件扩展“.vbs”的脚本引擎的解决方案
    Oracle init.ora常用配置详解
    eclipse断点调试 出现Source not found
    VMware Workstation 8
  • 原文地址:https://www.cnblogs.com/13128870440-zxy/p/13702143.html
Copyright © 2020-2023  润新知