• 曹宇轩-第二次作业


    1.《软件工程》慕课

    完成了慕课的视频课学习及课后习题

     

     2.构建之法讲义

    本节的构建之法主要强调了代码的性能测试。编写正确运行的代码只是完成整个软件工程的基础。如何在原有的基础上对代码进行进一步的更新改进,提高代码的质量也是值得注意的。

    3.利用Pycharm对Github进行操作

    由于网上相关的博客比较多,按照相关操作进行配置即可,不在此赘述。目前选用的git工具是Github提供的Github Deskop,省去了不少git命令。

     4.代码规范性。

    对于编程而言,首先是代码的规范性。Python语言主要规范是Google给出的。下载了Style guide进行了简要的学习,最主要还是动手编写,在实际中发现问题,将相应的规范烂熟于胸,潜移默化于编写的过程中。

      5.代码性能测试

    对代码性能进行测试可以清晰地看到代码运行主要花费的时间在哪,方便下一步的改进,一般而言,改进代码运行时间最多的地方可以有效地增加代码的质量。当然这并不是唯一的。对于比较复杂的代码,可以借助工具进行相应的分析。对简单的代码可以借助Pycharm中自带的memory_profiler进行相应测试。下面是计算器程序的一段代码,并借助自带的包进行测试。

    import profile
    import re
    #判断格式
    for j in range(len(formula)):
        if formula[j] in Operators and formula[j+1] in Operators:
            print('FORMAT ERROR')
        elif formula[j].isalpha():
            print('INPUT ERROR')
        elif formula[j] == '/' and formula[j+1] == '0':
            print('VALUE ERROR')
    
    #乘方计算
    def power(list,sign):
        a = list.index(sign)
        if sign == '^':
            b = str(float(list[a - 1])**float(list[a + 1]))
        else :
            return list
        del list[a]
        del list[a - 1]
        del list[a + 1]
        list.insert(a - 1, b)
        return list
    
    def md(l, x):
        a = l.index(x)
        if x == '*' and l[a + 1] != '-':
            k = float(l[a - 1]) * float(l[a + 1])
        elif x == '/' and l[a + 1] != '-':
            k = float(l[a - 1]) / float(l[a + 1])
        elif x == '*' and l[a + 1] == '-':
            k = -(float(l[a - 1]) * float(l[a + 2]))
        elif x == '/' and l[a + 1] == '-':
            k = -(float(l[a - 1]) / float(l[a + 2]))
        del l[a - 1], l[a - 1], l[a - 1]
        l.insert(a - 1, str(k))
        return l
    
    def fun(s):
        l = re.findall('([d.]+|/|-|+|*)', s)
        sum = 0
        while 1:
            if '*' in l and '/' not in l:
                md(l, '*')
            elif '*' not in l and '/' in l:
                md(l, '/')
            elif '*' in l and '/' in l:
                a = l.index('*')
                b = l.index('/')
                if a < b:
                    md(l, '*')
                else:
                    md(l, '/')
            else:
                if l[0] == '-':
                    l[0] = l[0] + l[1]
                    del l[1]
                sum += float(l[0])
                for i in range(1, len(l), 2):
                    if l[i] == '+' and l[i + 1] != '-':
                        sum += float(l[i + 1])
                    elif l[i] == '+' and l[i + 1] == '-':
                        sum -= float(l[i + 2])
                    elif l[i] == '-' and l[i + 1] == '-':
                        sum += float(l[i + 2])
                    elif l[i] == '-' and l[i + 1] != '-':
                        sum -= float(l[i + 1])
                break
        return sum
    
    
    def calculate(expression):
        ex = []
        ans = 0
        if '(' not in expression:
            ans = fun(expression)
            return ans
        for i in range(len(expression)):
            if expression[i] == '(':
                ex.append(i)  # ex=[6,7]
            elif expression[i] == ')':  # 14
                temp = 0
                sub = expression[ex[len(ex) - 1] + 1:i]
                temp = fun(sub)
                expression = expression[0:ex[len(ex) - 1]] + str(temp) + expression[i + 1:len(expression) + 1]
                ex.pop()
                return calculate(expression)
    #性能测试
    profile.run("calculate()")

     可能是因为计算器的程序调用的次数少,并不能完全显示代码性能。代码性能测试

     

     6.学习记录

    学习时段

    内容

    收获

    2.24 10:00-11:30

    慕课《软件工程》视频课

    初步了解代码测试

    2.25 10:00-11:30

    慕课《软件工程》视频及部分习题

    巩固单元测试的相关概念

    2.26  10:00-11:30

    《构建之法》

     “个人开发技术”

    2.27 10:00-11:30  14:00-16:30

    《Python编程无师自通》

    第四章“函数”,

    第五章“容器”

    2.28 10:00-11:30 14:30-15:30

    《Python编程无师自通》

    第六章“字符串操作”、第七章“循环”

    2.29 10:00-11:30

    《Python编程无师自通》

    第八章“循环”

    3.1 10:00-11:30

    《Python编程无师自通》

    第九章“文件”

  • 相关阅读:
    八、springboot 简单优雅的通过docker-compose 构建
    【并发编程】ThreadLocal其实很简单
    计算机网络
    相似度
    不同激活函数的区别
    快速排序+归并排序
    xgboost
    c++面试
    PCA算法和SVD
    各种排序算法的时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/cyx293777/p/12384833.html
Copyright © 2020-2023  润新知