字谜不匹配(字符串到列表),Python
我正在尝试制作一个脚本,在那里我可以输入任何单词的字谜,它会从字典中读取,看看是否有匹配 例如,estt返回:=取消单词拼写:test 如果有两个匹配项,它将写入 例如,estt返回:有多个匹配项:test,settassuming sett是一个单词lol 我甚至连一个匹配词都查不出来,总是不返回匹配词,即使我看了字典里的单词列表,我还是看到了这些单词 这是我到目前为止写的代码字谜不匹配(字符串到列表),Python,python,python-3.x,anagram,Python,Python 3.x,Anagram,我正在尝试制作一个脚本,在那里我可以输入任何单词的字谜,它会从字典中读取,看看是否有匹配 例如,estt返回:=取消单词拼写:test 如果有两个匹配项,它将写入 例如,estt返回:有多个匹配项:test,settassuming sett是一个单词lol 我甚至连一个匹配词都查不出来,总是不返回匹配词,即使我看了字典里的单词列表,我还是看到了这些单词 这是我到目前为止写的代码 def anagrams(s): if s =="": return [s] els
def anagrams(s):
if s =="":
return [s]
else:
ans = []
for w in anagrams(s[1:]):
for pos in range(len(w)+1):
ans.append(w[:pos]+s[0]+w[pos:])
return ans
dic_list = []
def dictionary(filename):
openfile = open(filename,"r")
read_file = openfile.read()
lowercase = read_file.lower()
split_words = lowercase.split()
for words in split_words:
dic_list.append(words)
def main():
dictionary("words.txt")
anagramsinput = anagrams(input("unjumble words here: "))
for anagram in anagramsinput:
if anagram in dic_list:
print(anagram)
else:
print("no match")
break
这就好像字谜不在dic_列表中一样。发生了什么事?在循环中执行一次检查后,您正在中断,请删除中断以获取所有的字谜:
def main():
dictionary("words.txt")
anagramsinput = anagrams(input("unjumble words here: "))
for anagram in anagramsinput:
if anagram in dic_list: # don't break, loop over every possibility
print(anagram)
如果不想打印“不匹配”,只需将其删除即可。如果您希望所有可能的字母排列,请使用itertools。排列:
def anagrams(s):
if s =="":
return [s]
else:
ans = []
for w in anagrams(s[1:]):
for pos in range(len(w)+1):
ans.append(w[:pos]+s[0]+w[pos:])
return ans # only return when both loops are done
输出:
unjumble words here: onaacir
aaronic
在字谜函数中,您在完成外循环之前返回,因此缺少许多排列:
def anagrams(s):
if s =="":
return [s]
else:
ans = []
for w in anagrams(s[1:]):
for pos in range(len(w)+1):
ans.append(w[:pos]+s[0]+w[pos:])
return ans # only return when both loops are done
现在,在两次更改之后,您的代码将正常工作我们可以看到单词了吗。txtI将其设置得非常小。您是否验证了dic_列表是否包含正确的值?您使用了什么输入字进行测试?anagramsinput应该是什么?我不认为你的字谜功能能达到你的预期,我不希望它打印5次不匹配,如果我输入一个可以被置乱5次的单词。如果我不休息,我还是会被拒绝match@Archie. 你在第一次迭代中打破了循环,不管是什么原因,也许我可以先把结果列出来。然后在之后执行另一个不匹配语句。我仍然无法让代码正常工作,它什么也得不到。我添加了使用置换功能运行它的输出。所以,如果在插入置换代码时它能正常工作,这意味着问题在于我的字谜:函数正确吗?我正在尝试修复它,而不是跳转到另一种方法。对不起,我还是个初学者。