2016-02-11 55 views
-1

我寫此代碼爲簡單的線性搜索:線性搜索的列表?

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

以供將來參考,對於列出了內置的「指數」的方法可以爲你做到這一點。例如,[4,8,15,16,23,42] .index(15)return 2. –

回答

2

您正在打印出索引值,即array[i]而不是i

+0

Geez,我不敢相信我沒有看到。非常感謝! – Breelin

0

您正在索引而不是索引本身打印數組的值。這解決了它。還要考慮返回而不是打印聲明。

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 
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)