我正在研究定义测试人员(你输入单词,他们的演讲部分和每个人的同义词,并对它们进行测试)。我遇到的问题是得到这个词的部分:
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_list
最终成为list(word)
函数应用于它们之后的单词 - 我不知道为什么。
例如:如果唯一的字词是'word',则words_list
原来是['w', 'o', 'r', 'd']
。如果有两个单词('dog','cat'),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 :(得分:6)
这是因为这一行:
words_list += word
列表中的 +=
用于添加另一个列表中的所有元素。碰巧,Python字符串也像字符列表一样工作,因此您将每个字符添加到列表中作为其自己的元素。
你想要这个:
words_list.append(word)
用于向末尾添加单个元素。
答案 1 :(得分:0)
在搞乱之后,我自己想出了问题,所以我想我应该把它放在任何有类似事情的人身上:
而不是words_list += word
,它应该是:words_list.append(word)
。
或者,就是我所做的,你可以这样做:words_list += [word]
。现在,word
是list
对象,因此它将添加到上一个列表中。