2016-06-09 4 views
0

Mein Code für die Suche nach einem vom Benutzer eingegebenen Element in der vom Benutzer eingegebenen Liste zeigt immer "Element nicht gefunden", auch wenn der Benutzer ein Element in die Liste eingibt. Was ist der Fehler? auch, stimmt etwas mit meiner Break-Syntax nicht?logischer Fehler in der linearen Suche in 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") 

Antwort

0

Wie zu Recht von @arewm wies darauf hin, gibt es einen Typenkonflikt aber auch hier ist eine alternative Lösung, die saubere Art und Weise hat die Liste von Benutzereingaben zu implementieren:

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

Ausgang:

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

Edit: auch wenn Sie element not found möchte nur einmal erscheinen hier ist eine einfache Änderung:

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

Ouput:

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

Danke, es hat funktioniert. können Sie mir sagen, was in meinem Code falsch gelaufen ist und wo? –

+0

Ich habe versucht, Liste mit Ihrer Implementierung zu drucken und scheint es nicht zu konvertieren, wie Sie es erwarten. Auch die Typabweichung war ein Problem. – PseudoAj

0

Es gibt einen Typenkonflikt. Da die Liste ausgewertet wird, sind numerische Elemente keine Zeichenfolgen. Das zu suchende Element ist jedoch eine Zeichenfolge.

Die Umwandlung des Elements in eine Zeichenfolge vor dem Vergleich kann dies beheben.

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

ich dies tat, .. aber es zeigt immer noch viermal "Element nicht gefunden", :::::: D: \ pcodes> Python linearsearch.py ​​ Liste: 1,4,2,3,6,5,7,8,9 Element eingeben, das gesucht werden soll: 3 Element nicht gefunden Element nicht gefunden Element nicht gefunden Element gefunden bei Index Nummer 3 –

Verwandte Themen