我写了一个字谜求解算法,它不起作用。
for word in wordlist: #Checking for equal length
if sorted(word.replace("\n", "")) == sorted(anagram):
possible.append(word)
我需要使用len(word)-1来除去这个。
最佳答案
(1)我不明白你第一个循环中“len(word)-1”中的“-1”。
(2)第二个循环有几个问题:
它不检查字母是否相同,而是检查字谜中的每个字母是否在单词中你没有使用计数信息,所以你无法区分bok和book您还将从迭代的序列中移除,这将导致意外行为。
就我而言,我只是用
sorted_anagram = sorted(anagram)
possibles = [word for word in wordlist if sorted(word) == sorted_anagram]
而不是显式的for循环。
请注意,对单词进行排序是一种规范化过程——它确保任何两个互为anagrams的单词都将采用相同的格式另一种确定两个事物是否为anagrams的方法是确保字母计数相同:
>>> from collections import Counter
>>> Counter('book')
Counter({'o': 2, 'k': 1, 'b': 1})
>>> Counter('obko')
Counter({'o': 2, 'k': 1, 'b': 1})
>>> Counter('bok')
Counter({'k': 1, 'b': 1, 'o': 1})
>>>
>>> Counter('book') == Counter('boko')
True
>>> Counter('book') == Counter('bok')
False
关于python - 字谜解决错误python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8864451/