2017-11-15 11 views
0

요약 : 교과서에서 질문하는대로 프로그램을 작성하여 '버블 정렬'에 대한 숙련도와 실력을 시험해 보도록 권했습니다. 이 문제는 "문자열 배열에 20 개의 이름을 입력 할 수있는 프로그램을 작성하라. 배열을 오름차순 (알파벳 순서)로 정렬하고 그 내용을 표시하십시오." 초기 코드가 작동했지만 만족스럽지 못했고 나중에 코드 변경 시도가 실패했습니다. 실행 가능한 솔루션을 찾지 못했습니다. 버블 정렬 알고리즘 | 'str'객체가 항목 할당을 지원하지 않습니다 - Python

문제

: I는 처음에 사용자 입력에 대한 값 20 20 개 각 개별 입력을 허용하기 위해 20 회 반복 처리 루프 ( for listInput in range(20):)의 경우와 friendInput 함수를 썼다. 이 작업이 진행되는 동안 사용자 관점, 특히 20 개의 범위에서 입력을 계속하고 반환을 누르고 20 개의 값을 반복해야한다는 것은 매우 지루하다고 생각합니다.

원래 코드 :

def friendInput():            
    friendList = []            
    for listInput in range(20):         
     friendList.append(input("Please enter a friends name: "))  
    print("You added these to the list: "+' | '.join(friendList)) 
    return friendList 

시도 코드를 다시 쓰기 : 나는 몇 가지 연구를하고 .split() 기능을 포함하여 많은 것을 배웠하고이를 구현하기 위해 노력

def friendInput(): 
    friendList = [] 
    separator = "," 
    friendList = input("Please enter friend's names, separated with commas: ") 
    print("You added these to the list:",friendList.split(separator)) 
    return friendList 

, 실패했다. 버블 정렬 알고리즘 :

def bubbleSort(friendList): 
    for friends in range (0, len(friendList) - 1): 
     for x in range (0, len(friendList) - 1 - friends): 
      if friendList[x] > friendList[x+1]: 
       friendList[x], friendList[x+1] = friendList[x+1], friendList[x] 
    return friendList 

오류 메시지 : 디버거가 TypeError: 'str을'개체가 항목 할당을 지원하지 않습니다 다시 던졌다까지 다, 내 머리에서 논리적 보였다. TypeError:bubbleSort 기능의 일부를 인용에 간다 - friendList[x], friendList[x+1] = friendList[x+1], friendList[x], 저 좀 도와주세요

: 나는 가정 오류가 정말 그냥 액세스하고 명백하게 허용되는 문자열을 변경하기 위해 노력하고있어 말하는되어, 그것은 변함이 없다. 명확하고 간결하며 사용자에게 부담을주지 않는 코드 변경을 찾기 위해 고심하고 있습니다.

이 오류를 해결하기 위해 친절하게 제안 할 수 있습니까?

+0

당신의 입력 기능 사용에'friendList = friendList.split (분리)', 당신은 작동하지 않는 문자열의 일부에 할당을하려고 노력하고 있습니다. 지금 당장 문자열 목록이 아닌 문자열을 반환하는 것입니다 (참고로 이것은 다시 쓰는 것을 의미합니다). –

+0

빠른 반응과 대단히 감사합니다. 내가 해결책에 가까웠다 고 말하는 것이 공평 할까? – William

+0

[왜 파이썬 문자열 split()이 분할되지 않는가]의 가능한 복제본 (https : // stackoverflow.com/questions/12238517/why-is-python-string-split-not-splitting) –

답변

0

다시 읽어이 라인 :

friendList = input("Please enter friend's names, separated with commas: ") 
print("You added these to the list:",friendList.split(separator)) 
return friendList 

당신은 문자열 friendList = input를 작성하는 ... 그리고 당신은 문자열 (return friendList)을 반환한다. 목록을 작성한 다음 목록을 리턴합니다.

대신을 시도해보십시오

friendList = input("Please enter friend's names, separated with commas: ") 
friendList = friendList.split(separator) 
print("You added these to the list:",friendList) 
return friendList 
+0

감사합니다. – William