结对项目——自动生成小学四则运算题目的命令行程序(基于Python)

这个作业属于课程 软件工程
这个作业的要求在哪里 结对项目
这个作业的目标是 实现一个自动生成小学四则运算题目的命令行程序
成员 3118005408 方俊涛 、3118005409 冯宇航

GitHub

PSP

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

效能分析

花费时间:30min

egg :python main.py -r 50 -n 1000

改进前:

通过pycharm自带的效能分析工具来看,我们的程序在creQuestion()上花费的时间是比较多的,原因是该函数在实现生成表达式时,调用了self.isRepeat(expressionList, expression) 进行查重检测,此步奏涉及到大量的遍历二叉树

    def creQuestion(self):
        """
        表达式生成主函数
        """
        expNum = self.expressionNum
        expressionList = []
        i = 0

        while i < expNum:
            random_num_operation = random.randint(1,self.operCount)  #运算符的数目
            is_need_parenteses = random.randint(0, 1)    #是否需要加括号
            number_of_oprand = random_num_operation + 1  # 操作数比操作符的数目多1
            exp = []
            for j in range(random_num_operation + number_of_oprand):

                if j % 2 == 0:
                    # 随机生成操作数(含分数)
                    exp.append(self.getOperNum()['operStr'])


                    if j > 1 and exp[j - 1] == '÷' and exp[j] == '0':
                        while True:
                            exp[j - 1] = self.generateOperation()
                            if exp[j - 1] == '÷':
                                continue
                            else:
                                break
                else:
                    # 生成运算符
                    exp.append(self.generateOperation())

                if j > 3:
                    if exp[j-2] == '÷' :  #为了子表达式为真分数,÷左右又括号除外
                        if exp[j-1] > exp[j-3]:
                            t  = exp[j-1]
                            exp[j - 1] 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值