2017-01-05 3 views
0

Ich habe einen Code, der zuerst die E-Mails in alphabetischer Reihenfolge sortiert und dann versucht, die binäre Suche zu verwenden, um eine vom Benutzer eingegebene E-Mail aus einer Liste zu suchen. Ich habe jedoch schon so lange daran festgemacht, wie das zu tun ist, und habe keine Lösungen für den Fehler gefunden, den ich bekomme und wie ich ihn beheben kann. Hier ist mein CodeBinäre Suche, um eine Liste zu suchen

def BubbleSort(logindata): 
    NoSwaps = 1 
    N = len(logindata) 
    logindata = list(logindata) 
    while NoSwaps == 1: 
     Count = 1 
     NoSwaps = 0 
     for Count in range(N-1): 
      if logindata[Count] > logindata[Count+1]: 
       temp = logindata[Count] 
       logindata[Count] = logindata[Count+1] 
       logindata[Count+1]=temp 
       NoSwaps=1 
    return tuple(logindata) 

def BinarySearch(logindata,ItemSought): 
    First=0 
    Last=len(logindata)-1 
    ItemFound = False 
    SearchFailed = False 
    while ItemFound == False or SearchFailed == False: 
     Midpoint = (First + Last) // 2 
     if logindata[Midpoint] == ItemSought: 
      ItemFound = True 
      print("Item Found") 
      break 

     elif logindata[Midpoint] > ItemSought: 
      Last = Midpoint - 1 
     else: 
      First = Midpoint + 1 

if __name__ == "__main__": 
    logindata=["[email protected]","Password1"],["[email protected]","Password2"],["[email protected]","Password3"] 
    logindata=BubbleSort(logindata) 
    print(logindata) 
    ItemSought=input("Enter username") 
    BinarySearch(logindata,ItemSought) 

Der Fehler, den ich zur Zeit erhalten ist:

elif logindata[Midpoint] > ItemSought: 
TypeError: unorderable types: list() > str() 
+1

Wahrscheinlich möchten Sie 'elif logindata [Mittelpunkt] [0]> ItemSought:' –

+1

'logindata [Mittelpunkt] [0]', nicht 1 würde ich mir vorstellen –

+0

@PatrickHaugh Yep. korrigiert. –

Antwort

2

Du vergleichst ein Benutzername/Passwort-Paar (z ["[email protected]","Password1"]) mit einem Benutzernamen (z "[email protected]").

Sie müssen den Benutzernamen von logindata[Midpoint] extrahieren, bevor Sie ihn mit ItemSought vergleichen.

+0

Ich habe den Benutzernamen von ihm extrahiert, aber der Code funktioniert nicht, es findet nicht den Benutzernamen, wenn der Benutzer die richtige E-Mail eingibt? – Tom