Неверный номер for
. И вы сравниваете слова со словами: .join (отсортировано (слово)), которые являются одним и тем же. Это должно работать лучше:
def find_anagrams(a, b):
f = open(a, 'r')
for line in f:
word = line.strip()
wordsorted = ''.join(sorted(word))
if wordsorted == ''.join(sorted(b)):
print word
Теперь убедитесь, что вы закроете файл (или, лучше, используйте with
заявление).
Редактировать: о возврате сообщения, самое лучшее, что нужно сделать, это на самом деле вернуть список найденных анаграмм. Затем вы решаете, что делать со словами (либо печатать их, либо печатать сообщение, когда список пуст, или что угодно). Так что это может быть как
def find_anagrams(a, b):
anagrams = []
with open(a, 'r') as infile:
for line in f:
word = line.strip()
wordsorted = ''.join(sorted(word))
if wordsorted == ''.join(sorted(b)):
anagrams.append(word)
return anagrams
Затем вы можете использовать его в качестве
anagrams = find_anagrams('words.txt', 'axolotl')
if len(anagrams) > 0:
for anagram in anagrams:
print anagram
else:
print "no anagrams found"
Где вы можете использовать 'a' или' b'? –