数组中最大的子数组之和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 中使用.

posted @ 2021-03-31 16:27  浮梦RH  阅读(75)  评论(1)    收藏  举报