Python自定义查找列表最小值函数调用缺少参数报错求助
报错直接原因
findMin函数定义时要求传入2个位置参数L、startIndx,你调用时仅传入了列表参数,缺少第二个起始索引参数,所以触发参数缺失类型错误。
可通过两种方式修复该报错:
- 调用时补传起始索引参数:比如要从列表第0位开始查找,就写
findMin([8,2,11,0,5], 0) - 给函数的
startIndx参数设置默认值0:修改函数定义为def findMin(L, startIndx=0):,不传该参数时默认从列表开头查找。
函数逻辑错误修复
即使解决参数问题,你的函数运行结果也不符合预期,存在两处逻辑错误:
- 判断条件错误:你写的
if i < m是拿索引值和列表元素值比大小,逻辑完全不成立,应该改为判断当前元素x小于已记录的最小值m - 索引赋值逻辑写反:你写的
i = index是把旧索引赋值给循环变量,没有任何意义,应该改为把当前符合要求的索引i赋值给记录用的index变量
修改后可正常运行的完整代码
def findMin(L, startIndx=0): m = L[startIndx] index = startIndx for i in range(startIndx, len(L)): x = L[i] if x < m: m = x index = i return (m, index) a,b = findMin([8,2,11,0,5]) print(a,b)
运行输出结果为:0 3
即列表最小值为0,对应索引为3,符合预期。
内容的提问来源于stack exchange,提问作者Or Zemer Tov
相关产品推荐
相关产品推荐

