软件工程第二周作业(陆遥)

一、理论学习

(一)慕课学习

        本周完成了《软件工程》慕课的第三章单元测试的学习,学习截图如下:

(二)讲义阅读

        本周阅读了《构建之法》讲义中的“个人开发技术”。

软件工程第二周作业(陆遥)_第1张图片

 

(三)规范学习

        本周主要熟悉了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将代码上传至码云,过程如下:

软件工程第二周作业(陆遥)_第2张图片

首先安装Git,然后打开PyCharm 进入File--->Settings里进行下载gitee,并重启Pycharm。

 

软件工程第二周作业(陆遥)_第3张图片

打开码云仓库,复制https链接。

 

软件工程第二周作业(陆遥)_第4张图片

之后到VCS--->Checkout from Version Control--->Git,把刚刚在码云上复制的链接粘贴到URL 进行测试。

 

软件工程第二周作业(陆遥)_第5张图片

软件工程第二周作业(陆遥)_第6张图片

软件工程第二周作业(陆遥)_第7张图片

最后按以上步骤对要上传的文件进行commit,push等操作。

 

(二)代码规范性检查

        在Pycharm中采用了AutoPEP8来进行代码规范检查,过程如下:

用Pycharm的Terminal来安装AutoPEP8。

 

        安装好了之后我们需要将它添加到我们的External Tools(File  ---> Settings----->Tools ---->External Tools)。

 

软件工程第二周作业(陆遥)_第8张图片

 设置参数如下:

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()

 

        三个样例的运行截图:

         性能测试截图:

软件工程第二周作业(陆遥)_第9张图片

三、工作记录 

学习时段 学习内容 主要收获 存在问题

 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语言独立编写代码的能力。

附录:

软件工程第二周作业(陆遥)_第10张图片

宿舍里的学习环境

 

你可能感兴趣的:(软件工程第二周作业(陆遥))