简单线性搜索测试(python)

2024-06-16 10:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

问题是修复故意不正确的代码,以便可以执行pyUnit测试。代码中的错误将通过测试找到,然后更正。我上一次测试在代码中生成了一个错误,但我无法发现它!在

给定代码(带错误)

def linear( target, list ):
""" returns the position of target,
if not found returns -1"""
position = 0
if len(list)==0:
    return -1

else:
    while position <= (len(list)+1):
        if target == list[position]:
            return position
        position += 1
return -1

我的测试:

^{pr2}$

生成我的错误的测试是最后一个测试:“test iu isNotInList(self)”,这是一个索引越界错误…应该足够简单,但我只需要一点帮助。在


Tags: ofthe代码targetlenreturnifdef
1条回答
网友
1楼 · 发布于 2024-06-16 10:49:10

在上一个测试中,函数访问list[5],这超出了范围。这将导致IndexError。在不引发异常的情况下,您可以访问的最大索引小于列表的长度。您可以通过修改while循环的条件来解决此问题:

while position < len(list):

或者更好的方法是直接迭代列表,使用enumerate确定位置:

^{pr2}$

相关问题 更多 >