List未被Bubb排序

2024-04-26 18:44:44 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个气泡排序程序,我想电子邮件被按字母顺序排序。但是,当我用我想要排序的列表运行程序时,我得到一个错误TypeError:“tuple”对象不支持项分配。 代码如下:

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)

该程序排序不带“密码”的列表。如何让代码运行并成功排序。你知道吗


Tags: 程序列表if排序顺序电子邮件count错误
2条回答

此代码将运行并对列表排序。但是我不知道你是不是想这样做。你知道吗

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,然后返回logindatatuple,还应该捕获返回的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'])

相关问题 更多 >