嗨,我有一个关于python的问题,我是一个菜鸟:
我有一个文本文件,其中包含按字母顺序排列的单词列表(大约23000个),就像一个小字典 每一行都是该文本文件中的一个单词
我必须制作一个程序,询问用户九个字母,然后该程序应该重新排列这些字母,并找到文本文件中与这九个字母组匹配的所有单词
我有点陷入这个程序的编码,我想要一些帮助
这就是我所做的
Nian = raw_input ("Type in nine letters :")
filename = "dictionary.txt"
fil = open(filename, "r")
lines = fil.read()
tx4 = lines.strip()
a = Nian[0]
b = Nian[1]
c = Nian[2]
d = Nian[3]
e = Nian[4]
f = Nian[5]
g = Nian[6]
h = Nian[7]
i = Nian[8]
for w in lines[0:23005]:
if a or b or c or d or e or f or g or h or i in lines:
print w
答案 0 :(得分:2)
所以,如果它与这9个字母完全匹配,我们在这里可能会有点棘手。不是创建所有这些排列并检查每个排列,而是使用python内置sorted
函数(doc)将单词排序为字母顺序,并比较结果。
这里的“诡计”是意识到你正在寻找这9个字母的字谜。例如, 'terse'和'reset'是彼此的字谜,但是如果你对它们进行排序,它们都会变成'eerst'。
即使您没有寻找完全匹配,您仍然可以使用此技巧进行优化。
至于程序的其余部分,如果你找一些关于用python读取文本文件的基础教程,我相信你将能够完成剩下的工作。祝你好运!
答案 1 :(得分:0)
以下是如何继续:
'\n'
对象的readlines()
方法,请不要忘记在行尾删除file
。 join
的{{1}}方法很有帮助。您知道有str
个排列吗?
答案 2 :(得分:0)
首先出现在我脑海中的是集合。
这可能不是理想的解决方案,但应该做好工作:
match_letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}
for line in file:
line = line.strip()
line_letters = set(line)
# test whether any letter from match_letters is in line_letters
if line_letters & match_letters:
print(line)
或,如果我误解并且您正在寻找包含所有九个字母的字词:
if line_letters >= match_letters:
print(line)
或,如果您要查找包含仅这九个字母的字词:
if line_letters <= match_letters:
print(line)