2017-01-05 9 views
0

電子メールをアルファベット順に並べ替えた後、バイナリ検索を使用してリストからユーザー入力の電子メールを検索しようとするコードがあります。しかし、私はこれを長続きする方法についていないし、私が得たエラーや解決方法については何の解決策も見つけられていない。ここに私のコードはバイナリ検索でリストを検索する

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) 

である私は現在、取得エラーです:

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

あなたはおそらく ' –

+1

' logindata [Midpoint] [0] '、私は想像していないでしょう –

+0

@PatrickHaugh Yep。あなたはおそらく' elif logindata [Midpoint] [0]修正されました。 –

答えて

2

あなたはユーザ名(例えば"[email protected]")と(例えば["[email protected]","Password1"])ユーザー名/パスワードのペアを比較しています。

これをItemSoughtと比較する前に、ユーザ名をlogindata[Midpoint]から抽出する必要があります。

+0

私はそれからユーザー名を抽出しましたが、実際にはコードが機能しませんでした。ユーザーが正しいメールを入力したときにユーザー名が見つかりませんでしたか? – Tom