我的函数首先计算给定单词的所有可能的字谜。然后,对于每一个这些字谜,它检查它们是否是有效的词,但检查它们是否等于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"))
如果已经放入许多print语句进行调试,并且传入的列表“allAnagrams”功能齐全。例如,输入“rarom”时,一个有效的anagram是单词“armor”,它包含在wordlist.txt文件文件。但是,当我运行它时,它不会检测到是否出于某种原因。再次感谢,我对Python还是有点陌生,所以非常感谢所有的帮助,谢谢!你知道吗
您以错误的方式使用了以下代码:
相反,请尝试以下代码,它应该可以解决您的问题:
你错过了一个很小但很重要的方面:
这将逐行搜索文件,就像使用
open(...).readlines()
一样,并尝试将整行与'\n'
匹配,最后。实际上,任何需要在open(...)
上迭代的操作都像readlines()
。你知道吗你需要
x+'\n' in open("C:\\Users\\Chris\\Python\\wordlist.txt")
如果文件是一个单独行上的单词列表,则可以通过此操作修复现有的内容,但在每个函数调用上执行此操作效率很低。最好做一次:
如果文件是以
'\n'
分隔的单词列表,这将创建一个单词列表。请注意,您可以使用而不是
read().split('\n')
,但这将保持\n
在每个单词上,就像你有,你需要包括在你的搜索中,如我上面所示。现在您可以将列表用作全局变量或函数参数。你知道吗注:Graphier在评论中提出了一项重要建议。一套:
它比列表更适合于单词查找,因为它是O(单词长度)。你知道吗
因此,将所有建议放在一起,您的代码可以简单到:
相关问题 更多 >
编程相关推荐