一、理论学习
(一)慕课学习
本周完成了《软件工程》慕课的第三章单元测试的学习,学习截图如下:
(二)讲义阅读
本周阅读了《构建之法》讲义中的“个人开发技术”。
(三)规范学习
本周主要熟悉了Google的Python语言规范和PEP8语言规范。
Google规范链接: https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
PEP8链接:https://legacy.python.org/dev/peps/pep-0008/
二、实践学习
(一)代码上传
本人码云仓库链接:https://gitee.com/luyao92/fourline
可利用Pycharm将代码上传至码云,过程如下:
首先安装Git,然后打开PyCharm 进入File--->Settings里进行下载gitee,并重启Pycharm。
打开码云仓库,复制https链接。
之后到VCS--->Checkout from Version Control--->Git,把刚刚在码云上复制的链接粘贴到URL 进行测试。
最后按以上步骤对要上传的文件进行commit,push等操作。
(二)代码规范性检查
在Pycharm中采用了AutoPEP8来进行代码规范检查,过程如下:
用Pycharm的Terminal来安装AutoPEP8。
安装好了之后我们需要将它添加到我们的External Tools(File ---> Settings----->Tools ---->External Tools)。
设置参数如下:
Name :autopep8;Program :autopep8
Arguments :--in-place --aggressive --aggressive $FilePath$
Working directory :$ProjectFileDir$
Output filters :$FILE_PATH$\:$LINE$\:$COLUMN$\:.*
当我们的代码格式有不正常的,右键 ---> External Tools ---> AutoPEP8,便会帮我们自动调整格式。
(三)性能测试
首先按照上面的方法,通过AutoPEP8对英文单词检索程序的代码进行了规范,然后进行下面的工作。
程序代码:
import sys
def read_query_words(query_file):
query_words = []
with open(query_file, 'r') as f:
lines = f.readlines()
for word in lines:
query_words.append(word.strip().strip('\n').lower())
return query_words
def read_document(document_file):
with open(document_file, 'r') as f:
return f.read().lower()
def extract_sentence(document):
sentences = []
words = []
word = ''
for letter in document:
if letter == '.' or letter == '?' or letter == '!':
if word != '':
words.append(word)
word = ''
sentences.append(words)
words = []
continue
if not letter.isalpha() and word != '':
words.append(word)
word = ''
continue
word = word + letter
return sentences
def build_search_model(sentences):
size = 80
model = [[] for _ in range(size)]
i = 0
for sentence in sentences:
i = i + 1
j = 0
for word in sentence:
j = j + 1
index = hash(word) % size
word_models = model[index]
word_model = None
k = -1
for m in word_models:
k = k + 1
if m.startswith(word):
word_model = m
break
is_new = False
if word_model is None:
word_model = word
is_new = True
word_model = '%s,%d/%d' % (word_model, i, j)
if is_new:
word_models.append(word_model)
else:
word_models[k] = word_model
return model
def search_word_by_model(word, model):
size = 80
index = hash(word) % size
word_models = model[index]
if len(word_models) == 0:
print('None')
return
word_model = None
for model in word_models:
if model.startswith(word):
word_model = model
break
if word_model is None:
print('None')
return
print(word_model[word_model.find(',') + 1:])
def main():
document_file = sys.argv[1]
query_file = sys.argv[2]
query_words = read_query_words(query_file)
document = read_document(document_file)
sentences = extract_sentence(document)
model = build_search_model(sentences)
for word in query_words:
search_word_by_model(word, model)
if __name__ == '__main__':
main()
三个样例的运行截图:
性能测试截图:
三、工作记录
学习时段 | 学习内容 | 主要收获 | 存在问题 |
2.23 1830~2100 |
理论学习 慕课《软件工程》 (清华大学 刘强) 第3章视频、测验题 |
了解单元测试的意义和方法流程。 | 还不会独立编写测试用例。 |
2.24 1900~2100 |
理论学习 慕课《Python语言程序设计》 (北京理工大学 嵩天) 【第2周】Python基本图形绘制 |
学习了使用turtle库进行图形绘制。 | 对复杂图形的绘制还需要练习。 |
2.25 1830~2100 |
实践学习 慕课《软件工程》 (清华大学 刘强) 第2章作业题 |
查阅资料,学习了一些模块和函数。 | 由于Python的学习还很浅,很多模块和函数不知道如何运用,独立编写代码较困难。 |
2.26 1830~2100 |
实践学习 慕课《软件工程》 (清华大学 刘强) 第2章作业题 |
学习了对代码进行规范性检查、性能测试。 | 对讲义中的有的程序实例还看不太懂。 |
2.28 1500~1700 |
理论学习 《构建之法》讲义 第2章 |
了解并学习了单元测试的标准、要求以及重要性。 | 无 |
3.1 1500~1730 |
实践学习 慕课《软件工程》 (清华大学 刘强) 第2章作业题 |
熟悉代码规范,对代码进行了修改优化。 | Python编程能力还是很薄弱。 |
四、总结
本周由于工作的原因,学习所用时间和精力较上周来说更少,大多数时间都花在了实践学习了,代码编写过程中一边查资料一边由舍友指导。后续将重点提高Python语言独立编写代码的能力。
附录:
宿舍里的学习环境