这是我到目前为止所拥有的。
from itertools import permutations
original = str(input('What word would you like to unscramble?: '))
for bob in permutations(original):
print(''.join(bob))
inputFile = open(dic.txt, 'r')
compare = inputFile.read()
inputFile.close()
基本上,我尝试做的是通过让Python找到字符串的所有可能重新排列然后只打印实际单词的重新排列来创建一个单词解密器,这可以通过运行每个重新排列来找到字典文件(在本例中为dic.txt)以查看是否存在匹配项。我正在运行Python 3.3,如果这很重要的话。为了将重新排列与字典文件进行比较,我需要添加什么?
答案 0 :(得分:2)
您可以将排列存储在列表中,将字典添加到另一个列表中,然后选择两个列表中的字典...
例如这样:
from itertools import permutations
original = str(input('What word would you like to unscramble?: '))
perms = []
for bob in permutations(original):
perms.append(''.join(bob))
inputFile = open(dic.txt, 'r')
dict_entries = inputFile.read().split('\n')
inputFile.close()
for word in [perm for perm in perms if perm in dict_entries]:
print word
(假设字典每行包含一个单词......)
答案 1 :(得分:1)
逐行将字典文件读入列表,遍历每个重新排列并检查它是否在字典中如下:
if word in dict_list:
...
答案 2 :(得分:0)
虽然这为处理输入文件提供了更多的前期工作,但是一旦你构建了word_dict
,查找单词的排序形式而不是构建和检查所有单词的效率要高得多排列:
def get_word_dict(filename):
words = {}
with open(filename) as word_dict:
for line in word_dict:
word = line.strip()
key = sorted(word)
if key not in words:
words[key] = []
words[key].append(word)
return words
word_dict = get_word_dict('dic.txt')
original = input("What word would you like to unscramble: ")
key = sorted(original)
if key in word_dict:
for word in word_dict[key]:
print(word)
else:
print("Not in the dictionary.")
如果您想要查找多个单词,这将特别有用 - 您可以处理该文件一次,然后重复参考word_dict
。