我嘗試編寫一個python腳本來搜索txt文件(英文字典)中的anagrams。我有這三項功能:python for循環未執行
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
如果我所說的find_all_anagrams函數:
fin = open ('words.txt')
print find_all_anagrams(fin)
第一循環結束後程序停止,只是給了我
{('a', 'a'): ['aa']}
爲何不繼續並處理第二行words.txt? btw words.txt文件是Moby Project的一個文件,可以在這裏下載(http://thinkpython.com/code/words.txt)
它看起來像這樣工作。但奇怪的是,find_anagrams函數在沒有readlines方法的情況下可以完美地工作。這是爲什麼? –