【发布时间】:2016-06-23 03:52:08
【问题描述】:
目前,此代码从用户那里获取一个字符串,并将其与存储了许多单词的文本文件进行比较。然后它输出包含与字符串完全匹配的所有单词。 (例如“otp = opt,top,pot)当前,当我输入字符串时,它仅将字符串与重新排列顺序中具有完全相同字母的单词匹配。
我的问题是我如何才能输入多余的字母但仍然输出包含的所有单词?例如:输入“orkignwer”,即使有多余的字母,程序也会输出“working”。
words = []
def isAnAnagram(word, user):
wordList= list(word)
wordList.sort()
inputList= list(user)
inputList.sort()
return (wordList == inputList)
def getAnagrams(user):
lister = [word for word in words if len(word) == len(user) ]
for item in lister:
if isAnAnagram(item, user):
yield item
with open('Dictionary.txt', 'r') as f:
allwords = f.readlines()
f.close()
for x in allwords:
x = x.rstrip()
words.append(x)
inp = 1
while inp != "99":
inp = input("enter word:")
result = getAnagrams(inp)
print(list(result))
【问题讨论】:
-
您可能想要使用
Counter,然后检查输入单词是否包含所有相同的字母 (a.keys() == b.keys()),以及每个字母的计数是否高于或相等b[k] > v for k, v in a.items()。跨度> -
旁白:记住使用
with时不需要close文件。