列表未按 BubbleSort 排序

List not being sorted by BubbleSort

有一个冒泡排序程序,我希望将电子邮件按字母顺序排序。但是,当我 运行 带有我想排序的列表的程序时,我收到错误 TypeError: 'tuple' object does not support item assignment。 这是代码:

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=["tom@gmail.com","Password1"],["Harry","Password2"],["Jake","Password3"]
    BubbleSort(logindata)
    print(logindata)

程序对没有 'Passwords' 的列表进行排序。我如何将代码获取到 运行 并成功对其进行排序。

此代码将 运行 并对列表进行排序。但是我不知道这是不是你想要的方式。

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)

假设您的冒泡排序算法工作正常,您的问题是您无法在 tuple 中分配项目,当尝试 logindata[count] = logindata[count+1] 时,您可以将 logindata 更改为 list 然后 return tuplelogindata ,你还应该捕获 returned logindata 然后打印它,整个代码如下所示:

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=["tom@gmail.com","Password1"],["Harry","Password2"],["Jake","Password3"]
    logindata = BubbleSort(logindata)
    print(logindata)
    #(['Harry', 'Password2'], ['Jake', 'Password3'], ['tom@gmail.com', 'Password1'])