2013-01-18 8 views
0

나는 정의 테스터 (말로 입력하고, 연설문과 각각 동의어를 입력하고 테스트 해 본다.)에 대해 공부하고있다. 내가 가진 문제는 단어를 얻는 부분입니다 :Python : 목록에 추가하기

def get_word(): # this is in another function, that's why it is indented 
     import easygui as eg 
     word_info = eg.multenterbox(msg = 'Enter in the following information about each word.' 
           , title = 'Definition Tester' 
           , fields = ['Word: ', 'Part of Speech: ', 'Synonyms (separated by spaces): '] 
           , values = [] 
           ) 
     return word_info 
    for i in range(n): 
     my_list = get_word() 
     print my_list # for testing 
     word, pOS, synonyms = my_list[0], my_list[1], my_list[2] 
     word = word.capitalize() 
     synonyms = synonyms.split(', ') 
     words_list += word 
     print word # for testing 
     test_dict[word] = [pOS, synonyms] 
    print words_list # for testing 

그러나, words_listlist(word) 기능이 적용된 후 단어 (들) 인 끝 --- 나는 이유를 모르겠어요.

예 : 단어가 'word'인 경우 words_list['w', 'o', 'r', 'd']으로 나타납니다. 두 단어 ('개', '고양이')가있는 경우 words_list['d', 'o', 'g', 'c', 'a', 't']입니다. 입력 내용은 다음과 같습니다 (get_word()). 단어 : 'myword', 품사 : 'n', 동의어 : '동의어, 정의'. 나는이 어떤 잘못을 수정하는 방법에 대한 몇 가지 입력을 얻을 수 있다면

['myword', 'n', 'synonym, definition'] 
Myword 
['M', 'y', 'w', 'o', 'r', 'd'] # Why does this happen? 

이것은 ... 내 프로그램 문제있는 유일한 것은, 그것은 많은 것 :

이 출력 내가 얻을입니다 고맙습니다. 감사!

+0

'word_info'를 인쇄 할 수 있습니까? –

+0

'my_list'는'get_word()'함수가'word_info'를 리턴하고'my_list'가 리턴하는 것이 무엇이든 ('my_list = get_word()') 설정되어 있기 때문에'my_list'는'word_info'와 같습니다. –

답변

6

이 때문에이 라인의의 : 목록에

words_list += word 

+= 다른 목록에 모든 요소를 ​​추가하는 것입니다. 이런 식으로 파이썬 문자열은 문자 목록처럼 작동하므로 각 문자를 목록에 자체 요소로 추가합니다.

당신이 원하는 :

끝에 하나의 요소를 추가하는 것입니다
words_list.append(word) 

.

0

그것으로 장난 후에, 나는 문제 나 자신을 생각, 그래서 내가 비슷한이 사람이 여기 넣어한다고 생각 :

대신 words_list += word을하는

, 그것이 있어야를 : words_list.append(word).

또는 내가 한 일은 다음과 같습니다. words_list += [word]. 이제 wordlist 개체이므로 이전 목록에 추가됩니다.

+0

'words_list + = [word]'는별로 Pythonic하지 않습니다. '.append()'는 이유가 존재합니다. Eevee의 대답을 받아 들여야합니다. – That1Guy

+0

하지만 작동합니다. 그것이 파이썬이든 아니든 상관없이 효과적으로 작업을 수행하고'list + = [element]'또는'list.append (element)'사이에서 메모리 나 계산 속도에 큰 차이를 가져 오지 않습니다. –

관련 문제