基本的に私はいくつかの文字を取り、それらのすべての組み合わせを取得し、それが実際の単語かどうかを確認するスクリプトをPythonで持っています。同じ言葉私はそれを行うにはしたくない複数回、スクリプトは次のようになります。スクリプトは同じ値を複数回返します
with open("dictionary.txt") as word_file:
english_words = set(word.strip().lower() for word in word_file)
def is_english_word(word):
return word.lower() in english_words
print is_english_word("ham")
print is_english_word("zz")
a = raw_input("Please enter first letter: ")
b = raw_input("Please enter second letter: ")
c = raw_input("Please enter third letter: ")
d = raw_input("Please enter fourth letter: ")
e = raw_input("Please enter fifth letter: ")
check =[a,b,c,d,e]
def get_combos(list):
import itertools
count = len(list)
got = []
combos =[]
while count > 0:
for a in itertools.permutations(list,count):
if a in got:
got.append(a)
else:
got.append(a)
combos.append(a)
count = count - 1
for a in combos:
strip_combos(a)
def strip_combos(list):
count = ''
words = []
for entry in list:
count = count + entry
words.append(count)
check_combo(words)
def check_combo(list):
words = []
got = []
for entry in list:
if is_english_word(entry):
if entry not in words:
print entry
words.append(entry)
get_combos(check)
今、私はあまりにもそれを意図としては、辞書にあるだけ印刷言葉で動作しますが、それは同じ単語を印刷します例えば、文字が:
a、c、e、s
これはリストに表示されるすべての機会に返されますが、got_and単語リストを持つことによってcheck_comboプロシージャで何度も同じ結果が省略されていることがわかります
私はこの問題は、whileループのget_combosプロシージャのどこかで発生する可能性がありますが、私は役に立たないようにすべてを修正しようとしましたが、私は自分自身よりも知識が豊富な人に助けを求めています。
をいくつかのドキュメンテーション文字列/コメントは役立つかもしれません。 strip_combosが何をすべきかなどは明確ではありません。 – weronika
文字列はすでに反復可能です。それをリストに変換する必要はありません。 'check = raw_input(" 5文字の単語を入力してください: ")' –