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']。2 つの単語 (「犬」、「猫」) がある場合は、words_listになります['d', 'o', 'g', 'c', 'a', 't']。これが私の入力 (へget_word()の) です: 単語: 'myword'、品詞: 'n'、類義語: 'synonym, definition'。

これは私が得る出力です:

['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]wordlistオブジェクトなので、前のリストに追加されます。

于 2013-01-18T01:48:47.877 に答える