0

我正在开发一个定义测试器(你输入单词、他们的词性和每个单词的同义词,它会测试你)。我遇到的问题是得到这个词的部分:

   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']. 如果有两个词(“狗”、“猫”),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?

这是我的程序唯一有问题的地方......如果我能就如何解决这个问题以及问题所在获得一些意见,我将不胜感激。谢谢!

4

2 回答 2

6

这是因为这条线:

words_list += word

+=on a list 用于添加另一个列表中的所有元素。碰巧的是,Python 字符串也像字符列表一样起作用,因此您将每个字符作为其自己的元素添加到列表中。

你要这个:

words_list.append(word)

这是用于在末尾添加单个元素。

于 2013-01-18T01:49:04.157 回答
0

在搞砸之后,我自己找出了问题所在,所以我想我应该把它放在这里给有类似情况的人:

而不是做words_list += word,它应该是:words_list.append(word)

或者,这就是我所做的,您可以这样做:words_list += [word]. 现在,word是一个list对象,因此它将添加到上一个列表中。

于 2013-01-18T01:48:47.877 回答