数组中最大的子数组之和2
实验目的
1,以指定格式的文本文件形式输入数组。
2,数组由一维变为二维。
3,熟练使用git常用命令将作业签入代码版本控制平台。
4,给出单元测试/代码覆盖率的最终覆盖率的报告,撰写博客。
实验实现
一、代码思路
连续二维数组求和可以将每一列中的数的和看作一个整体,将连续二维数组看作连续的一维数组求和。
二、代码实现
将文件中的二维数组转换成列表
def tolist(listfile):
with open(listfile, "r",encoding='utf-8') as f:
lst=[]
for line in f.readlines():
data = line.split()
a=[]
for data1 in data :
d=data1.split(',')
for data2 in d:
if data2!="":
a.append(int(data2))
lst.append(a)
return lst
求一维数组的最大子数组
def maxSum(seq): n = len(seq) dp = [i for i in seq] for i in range(1, n): dp[i] = max(dp[i - 1] + seq[i], seq[i]) result = max(dp)
求二维数组的最大子数组
def max_sum(arr): l = len(arr) max_num = 0 for i in range(l): res1 = list(arr[i]) for j in range(i+1,l): res1 = list(map(lambda x : x[0] + x[1],zip(res1,arr[j])))#将数组与下面的数组相加 max_num = max(maxSum(res1),max_num)#取相加后与之前的一维数组的子数组的最大值 return max_num
代码测试
一、代码
import unittest
class MaxlistTest(unittest.TestCase):
def test1(self):
lst=tolist("a.txt")
maxs=max_sum(lst)
print(maxs)
def test2(self):
lst=tolist("b.txt")
maxs=max_sum(lst)
print(maxs)
def test3(self):
lst=tolist("c.txt")
maxs=max_sum(lst)
print(maxs)
def test4(self):
lst=tolist("d.txt")
maxs=max_sum(lst)
print(maxs)
def test5(self):
lst=tolist("e.txt")
maxs=max_sum(lst)
print(maxs)
if __name__ == '__main__':
unittest.main()
二、测试用例
测试用例1
测试用例2

测试用例3

测试用例4

测试用例5

三、测试结果

代码覆盖率
一、安装代码测试工具
Python代码覆盖率工具coverage.py

二、对实现代码进行覆盖率测试
将实现代码和测试用列放在san1.py文件中,在命令窗口中使用coverage工具进行测试

测试结果

输入coverage html生成测试报告

点击index.html查看实验报告

Stmts总的有效代码行数(不包含空行和注释行)
Miss未执行的代码行数(不包含空行和注释行)
Branch总分支数
BrMiss未执行的分支数
Cover代码覆盖率
Missing未执行的代码部分在源文件中行号
点击py文件查看具体的覆盖情况

绿色为覆盖的代码,红色为未覆盖的代码
总结
1.单元测试代码覆盖率作为一种度量方式,可以计算单元测试用例对于被测代码的覆盖程度,即:被执行的代码数量和代码总数量的比值统计代码覆盖率,经常在单元测试后再进行,可以为测试结果提供评判依据
2.Coverage 是用于统计 Python 代码覆盖率的工具,不仅支持分支覆盖率统计,生成 HTML 格式的统计报告,而且可以集成到 Jenkins 中使用.

浙公网安备 33010602011771号