【发布时间】:2018-03-21 09:35:40
【问题描述】:
我的函数首先计算给定单词的所有可能的字谜。然后,对于这些字谜中的每一个,它会检查它们是否是有效单词,但会检查它们是否等于 wordlist.txt 文件中的任何单词。该文件是一个巨大的文件,一行一行地包含一堆单词。所以我决定只阅读每一行并检查每个字谜是否存在。但是,它出现空白。这是我的代码:
def perm1(lst):
if len(lst) == 0:
return []
elif len(lst) == 1:
return [lst]
else:
l = []
for i in range(len(lst)):
x = lst[i]
xs = lst[:i] + lst[i+1:]
for p in perm1(xs):
l.append([x] + p)
return l
def jumbo_solve(string):
'''jumbo_solve(string) -> list
returns list of valid words that are anagrams of string'''
passer = list(string)
allAnagrams = []
validWords = []
for x in perm1(passer):
allAnagrams.append((''.join(x)))
for x in allAnagrams:
if x in open("C:\\Users\\Chris\\Python\\wordlist.txt"):
validWords.append(x)
return(validWords)
print(jumbo_solve("rarom"))
如果已放入许多打印语句进行调试,并且传入的列表“allAnagrams”功能齐全。例如,输入“rarom”时,一个有效的字谜是单词“armor”,它包含在 wordlist.txt 文件中。但是,当我运行它时,由于某种原因它没有检测到。再次感谢,我'我对 Python 还是有点陌生,所以感谢所有帮助,谢谢!
【问题讨论】:
-
请注意,您的
perm1函数可以替换为对itertools.permutations()的调用。 -
您的解决方案具有非常高的复杂性,可以根据各种约束以多种方式降低......