私はanagramsのためのtxtファイル(英語辞書)を検索するpythonスクリプトを書こうとします。私はfind_all_anagrams関数を呼び出す場合python for-loopが実行されていません
def is_anagram(a,b):
a_ = list(a)
a_.sort()
b_ = list(b)
b_.sort()
if a_ == b_ and a != b:
return True
else:
return False
def find_anagrams(word,t):
_res=[word]
for line in t:
check = line.strip()
if is_anagram(check,word):
_res += [check]
return _res
def find_all_anagrams(f):
res = {}
void = []
for line in f:
word = line.strip()
_list = list(word)
_list.sort()
key = tuple(''.join(_list))
if key not in res and key not in void:
if find_anagrams(word,f) == []:
void += [key]
res[key] = find_anagrams(word,f)
return res
:私はこれらの3つの機能を持っている
fin = open ('words.txt')
print find_all_anagrams(fin)
プログラムは、最初のループの後に停止し、それをしない理由だけで
{('a', 'a'): ['aa']}
が私に与えます続けてwords.txtの2行目を処理しますか? Btw words.txtファイルはMoby Projectのもので、ここからダウンロードできます(http://thinkpython.com/code/words.txt)
このように動作するようです。しかし、不思議なことに、find_anagrams関数はreadlinesメソッドと完全に機能します。何故ですか? –