私は基本的には、Pythonの3.xの中で、私はセットをとる関数(best_words(ltr_set,word_file)
)を定義しなければなりません...与えられた文字セットで形成できる単語のファイルをチェックしてください:strange result?
のpythonに非常に新たなんだと確実に起因する私の部分の基本的なエラーに、いくつかの奇妙な結果を取得しています(文字のリスト)を検索し、それらの文字で形成できる単語の.txtファイル(1行に1語)を検索します。
私は最初に与えられた単語が与えられた文字の組から作ることができるかどうかを調べる関数を定義しました。それは(LSTB)可能な文字セットと照合することができますので、チェックする語は、文字(lsta)のリストとしてこの関数に供給されなければならない:
def can_make_lsta_wrd_frm_lstb(lsta,lstb):
result = True
i = 0
while i < len(lsta) and result == True:
if lsta[i] in lstb:
lstb.remove(lsta[i])
i+=1
else:
result = False
return result
私はまた、いずれかを取る関数を定義しました文字列を与えられ、それの文字のリストに変換:
def lst(string):
ls = []
for c in string:
ls.append(c)
return ls
メインbest_words
機能の背後にある考え方はして、文字の特定のセットを取り、言葉のファイル内のすべての行に上記の関数を適用することです利用可能な文字から作成できるものだけにフィルタリングするという目的です。
def best_words(ltr_set, word_file):
possible_words = []
f = open(word_file)
lines = f.readlines()
i = 0
while i < len(lines):
lines[i] = lines[i].strip('\n')
i+=1
for item in lines:
if can_make_lsta_wrd_frm_lstb(lst(item),ltr_set):
possible_words.append(item)
return possible_words
はしかし、私は、それがあるべきように、ループが継続されていないかのように例えば
...、予期しない結果を得続ける:
AA
AAS
ABACA
ABACAS
ABACOST
ABACOSTS
ABACULE
ABACULES
ABAISSA
ABAISSABLE
や関数を呼び出す:
best_words([‘A’,’C’,’B’,’A’,’S’,’A’], “short_dictionnary.txt”)
possible_wordsリストは、単に「AA」から構成されている... AAS、アバカとABACASもfとすることができながら、 ormed ...
誰かが何が起こっているかを見ることができれば、彼らの入力は非常に高く評価される!
あなたを」 'lstb'を渡し、' lstb.remove'を呼び出すと、 'can_make ... 'の中のリストは' letter_set'と同じリストになります。 'lstb.remove'を呼び出すたびに' letter_set'を縮小します。 –
'lstb.remove(lsta [i])'で文字のリストを変更しています。したがって、次回に関数を呼び出すと、前の単語のすべての文字が欠落しています。 – Barmar
また、リストを渡しているにもかかわらず、一連の文字を渡す必要があると指定しました。違いがあります。 –