数组左移k位输出与验证不匹配,请求排查代码问题
问题分析与解决
问题根源:你的
shift_left函数最终返回的是None,但单元测试unittest.output_test是将函数的返回值(即None)和期望的[40, 50, 60, 0, 0, 0]做对比,必然会判定错误。控制台能打印正确结果,是因为函数内部直接修改了传入的source数组本身,但单元测试并没有检测原数组,而是检测函数的返回值。修复方案:修改函数的返回语句,让它返回处理后的
source数组,而非None。
修改后的代码:
k=3 source = [10,20,30,40,50,60] def shift_left(source,k): length = len(source) for first in range(k): for second in range(0,length-1): source[second] = source[second+1] source[length-1] = 0 print(source) return source # 修改为返回处理后的数组 shift_left(source,k) print("/// Test 01: Shift Left k cell ///") source = [10,20,30,40,50,60] returned_value = shift_left(source,3) # 现在返回的是处理后的数组 unittest.output_test(returned_value, [40, 50, 60, 0, 0, 0])
补充说明:你的函数采用了原地修改原数组的方式,这种写法在部分场景下可能存在副作用,但当前单元测试逻辑明确期望函数返回处理后的结果,因此调整返回值即可解决问题。
内容的提问来源于stack exchange,提问作者Luke Bexhill
相关产品推荐
相关产品推荐

