第二周任务完成情况

一、理论学习 1、学习慕课《软件工程》第三章“单元测试”、第四章“软件开发过程”。
第二周任务完成情况
文章图片
第二周任务完成情况
文章图片

第二周任务完成情况
文章图片

2、阅读《构建之法》中的“个人开发技术”。
3、熟悉Google给出的python语言代码规范。
python语言代码规范学习链接:https://www.runoob.com/w3cnote/google-python-styleguide.htmlhttps://www.python.org/dev/peps/pep-0008/
【第二周任务完成情况】4、学习体会:
(1)“个人开发技术”一章讲解了程序效能的分析以及如何进行单元测试,以Java、C++等为例子进行了简单分析,通过学习,掌握了单元测试的一些基本概念,但在看这些例子的时候,由于对C类、Java等程序语言的陌生,具体的代码看不太懂,后来学习了慕课里面有关这方面的视频,还是慕课听起来更加容易懂,而且举的例子基本上是python的,大部分情况都能明白。
(2)python代码规范里面的内容,比如其中的行长度、括号使用、缩进、空行、注释、函数等内容的编写规范基本能够明白,在使用过程中大部分情况能够按照规范编写,但也难以避免的出现不符合规范的情况。此外,有关类这一块的一些规范还迷迷糊糊,不太懂,尤其是类属性、self等的使用还没弄明白。
二、实践学习 1、完成慕课第二章编程练习。
题目:请用python3编写程序,它可以实现对一个大容量英文文献进行分词与分句,并且能够对该文献内容的全文单词位置进行检索。更具体地,对于一个含有以分隔符(逗号“,”、空格“ ”、分号“; ”、英文句号“.”等非英文字母)分隔开的若干单词的文本文献(其中单词可能重复),程序要读入和存储整个文本,并根据输入的若干个单词进行查询,返回每个单词出现的所有句子以及是句子中第几个单词。
编程思路:
(1)每次读入一行文件,用正则表达式分离后,存入列表;
(2)判断列表中是否有句号、问号、感叹号,有的话则从该句子中找出要查找的单词的位置,然后将这句话从列表中移除,列表中剩下的单词保持不变,然后读入下一行数据并放入列表中,如此循环至文件最后一行。
编写结果见 https://github.com/lxxlccly/rjgc2 下的mktest2.py文件。首先,将需要查找的文件document.txt的内容设为:
第二周任务完成情况
文章图片

将需要查找的单词文件query.txt的内容设为:
第二周任务完成情况
文章图片

得到的运行结果如下:
第二周任务完成情况
文章图片

此外,编写了两个.bat文件进行push和pull,双击即可提交/拉取,代码如下:
第二周任务完成情况
文章图片
第二周任务完成情况
文章图片

在pycharm中也进行了github账号配置,配置好之后点击下图中的√:
第二周任务完成情况
文章图片

就会弹出如下界面,勾选需要提交的文件,点击commit提交即可,最后进行push。
第二周任务完成情况
文章图片

2、在pycharm中进行代码规范检查和性能测试。
(1)代码规范性检查
首先用pip install pylint安装了代码规范性检查工具,然后参考 https://blog.csdn.net/suzyu12345/article/details/80323067 在pycharm中进行了pylint相关配置,最后采用pylint对mktest2.py进行了代码规范性检查,结果如下,存在很多不合理的地方。
第二周任务完成情况
文章图片

然后对检测出来的每一项进行了修正,最终消除了上面提示的不规范的代码,结果如下:
第二周任务完成情况
文章图片

(2)性能测试
见 https://github.com/lxxlccly/rjgc2 下的mktest2_performance_test.py文件。利用profile.run()函数对代码进行了性能测试,结果如下:
第二周任务完成情况
文章图片

可以看到lower()函数占用了很多时间,然后就想着从这个地方对代码进行优化。下图倒数第五行为lower函数使用的位置,可见其处于循环中,通过分析得到word1是需要查找的单词,word1.lower()使用的次数等于循环次数,若将其放在循环外,word1.lower()就只需要使用一次。
第二周任务完成情况
文章图片

于是就将word1.lower()调整至了下图倒数第三行所在位置word.lower(),只需要使用一次。
第二周任务完成情况
文章图片

调整后可以看到lower()的使用次数和运行时间都大大降低,如下图所示。
第二周任务完成情况
文章图片

以上程序都是一次查找一个单词,每次都要重新读取文件,于是对程序进行了修改,可以同时查找多个单词,大大提高了效率。修改后的程序见 https://github.com/lxxlccly/rjgc2 下的mktest2_optimization.py文件。
三、学习记录

学习时段 学习内容 收获及存在的问题
2020.2.25
15:00-17:30
讲义“个人开发技术”章节 掌握了单元测试的基本内容
2020.2.26
13:00-17:30
慕课《软件工程》第三章、第四章
2020.2.26
19:00-21:30
python代码编写规范
编写代码时仍存在很多不规范的地方,同时,刚接触编程,程序结构、算法、编程思想还有待改善
2020.2.27
13:00-18:00
慕课第二章作业编写查找单词程序
2020.2.28
8:00-11:30
练习代码规范性检查及性能测试
2020.3.1
10:00-11:00
对慕课第二章作业编写查找单词程序进行优化

    推荐阅读