2017-01-02 6 views
0

Имейте программу bubblesort, которую я бы хотел, чтобы адреса электронной почты сортировались в алфавитном порядке. Однако, когда я запускаю программу со списком, я хотел бы сортироваться. Я получаю ошибку 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

вы не захватывая возвращаемое значение из 'функции BubbleSort'. Захватите возвращаемое значение и распечатайте его. – karthikr

ответ

2

С при условии, что ваш алгоритм пузырьковой сортировки работает правильно, ваша проблема в том, вы не можете присвоить элемент в tuple, когда пытаются logindata[count] = logindata[count+1], вы можете изменить logindata к list затем вернуть tuple из logindata, а также вы должны захватить вернулся 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=["[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)