2016-06-09 52 views
0

我的代碼在用戶輸入的列表中搜索由用戶輸入的元素的代碼始終顯示「找不到元素」,即使用戶在輸入的列表中輸入元素。什麼是錯誤? 另外,我的break語法有什麼問題嗎?Python中的線性搜索的邏輯錯誤

 x=eval(input("list : ")) 
     x=list(x) 
     n=len(x) 
     i=0 
     ele=input("enter element to be searched : ") 

     for i in range(0,n): 
      if(x[i]==ele): 
        print("element found at index number ",i) 
        break 

     else: 
      print("element not found") 

回答

0

作爲正確指出的@arewm有一個類型不匹配,而且這裏是具有乾淨的方式來實現從用戶輸入列表中的替代的解決方案:

strInput=input("list : ") 
x=strInput.split() 
x=[int(a) for a in x] 
n=len(x) 
i=0 
ele=input("enter element to be searched : ") 
ele=int(ele) 
for i in range(0,n): 
    if(x[i]==ele): 
     print("element found at index number ",i) 
     break 
    else: 
     print("element not found") 

輸出:

list :  1 2 3 4 
enter element to be searched :  1 
element found at index number 0 

編輯:另外,如果您想element not found出現只有一次在這裏是一個簡單的變化:

strInput=input("list : ") 
x=strInput.split() 
x=[int(a) for a in x] 
n=len(x) 
i=0 
ele=input("enter element to be searched : ") 
ele=int(ele) 
for i in range(0,n): 
    if(x[i]==ele): 
     print("element found at index number ",i) 
     break 
    if(i==n-1): 
     print("element not found") 

輸出繼電器:

list :  1 2 3 4 5 7 6 88 9 
enter element to be searched :  5 
element found at index number 4 
+0

感謝發現 元素,它的工作。 你能告訴我我的代碼出了什麼問題嗎? –

+0

我嘗試使用您的實現打印列表,似乎沒有按照您的預期轉換它。此外,類型不匹配是問題。 – PseudoAj

0

存在類型不匹配。由於評估列表,數字項目不會是字符串。然而,要搜索的元素是一個字符串。

在比較之前將元素轉換爲字符串可以解決此問題。

x=eval(input("list : ")) 
x=list(x) 
ele=input("enter element to be searched : ") 
i=0 

for e in x: 
    if str(e) == ele: 
     print("element found at index number ",i) 
     break 

    else: 
     print("element not found") 
    i+=1 
+0

我這樣做,..但它仍然顯示 「未找到要素」 四次,:::::: d:\ pcodes>蟒蛇linearsearch.py​​ 列表:要搜索1,4,2,3,6,5,7,8,9 輸入元素:未找到3 未找到要素 元素 元素沒有找到在索引號3 –