2017-01-02 2 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

. 반환 값을 캡처하여 인쇄하십시오. – karthikr

답변

2

, 나만의 문제는 list-logindata은 다음 tuplelogindata의를 반환 변경할 수 logindata[count] = logindata[count+1]을하려고 할 때, 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) 
관련 문제