小学生四则运算自动刷题库优化升级
原项目博客:https://www.cnblogs.com/liyanyinng/p/13704568.html
github地址:https://github.com/Gitforyong/autoBankApp
psp2.1表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 5 | 5 |
·Estimate | ·估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 180 | 305 |
·Analysis | ·需求分析(包括学习新技术) | 5 | 5 |
·Design Spec | ·生成设计文档 | 5 | 5 |
·Design Review | ·设计复审(和同事审核设计文档) | 10 | 10 |
·Coding Standard | ·代码规范(为目前的开发设计合适的代码规范) | 5 | 5 |
·Design | ·具体设计 | 10 | 20 |
·Coding | ·具体编码 | 120 | 240 |
·Code Review | ·代码复审 | 10 | 5 |
·Tset | ·测试(自我测试,修改代码,提交修改) | 15 | 15 |
Reporting | 报告 | 80 | 70 |
·Test Report | ·测试报告 | 30 | 20 |
·Size Measurement | ·计算工作量 | 20 | 10 |
·Postmortem & Process Improvement Plan | ·事后总结,并提出过程修改计划 | 30 | 30 |
合计 | 265 | 380 |
一、功能升级——把用户刷题结果记录保存为本地docx文档
二、性能升级——核心函数优化
1.1功能升级核心代码:
1 #saveRecordToDocx——保存用户刷题记录到本地docx文档 2 def saveRecordToDocx(title,gradeNum,degreeOfDiff,problemNum,problemsArray,accuracyRate): 3 4 today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日') #记录当天日期 5 6 document = Document() #创建一个空文档 7 8 p0 = document.add_paragraph() #初始化建立第一个自然段 9 10 run0 = p0.add_run('————————————小学生四则运算自动刷题库——————————\n \ 11 请输入您的所在年级:(1,2,3,4,5,6):%d\n \ 12 请输入本次刷题题型:1,0->(100以内正整数四则运算,真分数加减运算):%d\n \ 13 请输入您要选择的难易程度:(1,2,3,4,5->简单,较易,中等,较难,难):%d\n \ 14 请输入本次刷题目标数量:%d\n \ 15 ————————————————————————————'%(int(gradeNum),int(title),int(degreeOfDiff),int(problemNum))) 16 17 run0.font.name = '仿宋_GB2312' #设置字体中文 18 19 run0.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312') #设置字体西文 20 21 run0.font.bold = True #是否加粗 22 23 run0.font.size = Pt(12) #字符尺寸大小 24 25 for i in range(len(problemsArray)): 26 27 document.styles['Normal'].font.name = u'宋体' #设置文档的基础字体中文 28 29 document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体') #设置文档的基础字体西文 30 31 pl = document.add_paragraph() #初始化建立第二个自然段 32 33 run1 = pl.add_run('题目:%s;你的答案:%s;正确答案:%s'%(problemsArray[i][0],problemsArray[i][1],problemsArray[i][2])) 34 35 run1.font.name = '仿宋_GB2312' 36 37 run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312') 38 39 run1.font.size = Pt(11) 40 41 p2 = document.add_paragraph() #初始化建立第三个自然段 42 43 p2.alignment = WD_ALIGN_PARAGRAPH.CENTER #对齐方式为居中,没有则默认左对齐 44 45 run2 = p2.add_run('————————————————————————————\n本次刷题准确率达到:%.3f !'%(float(accuracyRate))) 46 47 run2.font.name = '仿宋_GB2312' #设置字体中文 48 49 run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312') #设置字体西文 50 51 run2.font.bold = True #是否加粗 52 53 run2.font.size = Pt(12) 54 55 document.save('D:\Git-projects\\autoBankApp\%s刷题记录.docx'% today) 56
以下是部分结果和展示:
(终端输出)
(docx文档内容)
2.1性能优化结构:
(优化前)
(优化后)
2.2性能测试:
(优化前)
(优化后)
2.3性能优化分析:
可以看到 优化前整个程序的运行时间是28.554s,优化后的总时长是8.761s!