2017-01-02 12 views
0

電子メールをアルファベット順にソートしたいと思っています。しかし、リストを使ってプログラムを実行するとソートしたいのですが、TypeErrorというエラーが出ます: 'tuple'オブジェクトはアイテムの割り当てをサポートしていません。リストがBubbleSortでソートされていない

def BubbleSort(logindata): 
    NoSwaps = 1 
    N = len(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 logindata 

if __name__ == "__main__": 
    logindata=["[email protected]","Password1"],["Harry","Password2"],["Jake","Password3"] 
    BubbleSort(logindata) 
    print(logindata) 

プログラムは、[パスワード]せずにリストを並べ替え: は、ここでは、コードです。どのようにしてコードを実行し、それを正常にソートするか

+1

。戻り値を取得して印刷します。 – karthikr

答えて

2

あなたのバブルソートアルゴリズムが正しく動作することを想定して、あなたの問題は、あなたがlogindata[count] = logindata[count+1]をしようとするとき、あなたはlogindatatupleを返し、その後listlogindataを変更することができ、また、あなたがキャプチャする必要があり、tupleでアイテムを割り当てることはできませんですlogindataを返され、その後、それを印刷し、全体のコードは次のようになります。あなたが `BubbleSort`関数からの戻り値をキャプチャされていません

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) 

if __name__ == "__main__": 
    logindata=["[email protected]","Password1"],["Harry","Password2"],["Jake","Password3"] 
    logindata = BubbleSort(logindata) 
    print(logindata) 
    #(['Harry', 'Password2'], ['Jake', 'Password3'], ['[email protected]', 'Password1']) 
0

このコードは、リストを実行して並べ替えます。しかし、私はこれがあなたがそれをしたい方法であるかどうかは分かりません。

def BubbleSort(logindata): 
    NoSwaps = 1 
    N = len(logindata) 

    while NoSwaps == 1: 
     Count = 1 
     NoSwaps = 0 

     for Count in range(N-1): 
      if logindata[Count][0] > logindata[Count+1][0]: 
       temp = logindata[Count][0] 
       logindata[Count][0] = logindata[Count+1][0] 
       logindata[Count+1][0] =temp 
       NoSwaps=1 
       temp = logindata[Count][1] 
       logindata[Count][1] = logindata[Count+1][1] 
       logindata[Count+1][1] =temp 
    return logindata 

if __name__ == "__main__": 
    logindata=["Adam","Password1"],["Harry","Password2"],["Cake","Password3"] 
    BubbleSort(logindata) 
    print(logindata) 
関連する問題