我为简单的线性搜索编写了这段代码:
def floor(array, target):
i = 0
while i < len(array):
if array[i] == target:
print("The target value can be found at index: " + str(array[i]))
break
else:
i = i + 1
floor([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14], 5)
我遇到的问题是它没有返回我想要的值。由于某种原因,它不会从0开始计数,所以当我创建目标1时,它告诉我索引是1.同样,如果我使目标4,它将在索引4处给我第二个值4比索引3的那个更好。即使目标是一个更高的数字,它似乎只计算一次的值4。我不确定我做错了什么,有人可以提供一些建议吗?
答案 0 :(得分:2)
您要在索引处打印出值array[i]
而不是i
。
答案 1 :(得分:0)
您在索引处打印数组的值而不是索引本身。这解决了它。还要考虑返回而不是print语句。
def floor(array, target):
i = 0
while i < len(array):
if array[i] == target:
print("The target value can be found at index: " + str(i))
return i
else:
i = i + 1
four_ind = floor([1, 2, 3, 4, 4, 5, 6, 7, 8, 9], 4) # returns 3
答案 2 :(得分:0)
试试这个:
def floor(array, target):
for i, value in enumerate(array):
if value == target:
print('target is in:', i)
floor([1,2,3,4,5, 4, 4,6], 4)