需要用python编程单词查找器的帮助吗
嗨,我有一个关于python的问题,我是一个新手: 我有一个文本文件,它包含一个按字母顺序排列的单词列表(大约23000个),就像一本小字典 该文本文件中的每一行都是一个单词 我必须制作一个程序,要求用户输入九个字母,然后该程序应该重新设置这些字母的范围,并在文本文件中找到与这组九个字母匹配的所有单词 我有点困在这个节目的编码中,我想得到一些帮助 这就是我所做的需要用python编程单词查找器的帮助吗,python,list-manipulation,Python,List Manipulation,嗨,我有一个关于python的问题,我是一个新手: 我有一个文本文件,它包含一个按字母顺序排列的单词列表(大约23000个),就像一本小字典 该文本文件中的每一行都是一个单词 我必须制作一个程序,要求用户输入九个字母,然后该程序应该重新设置这些字母的范围,并在文本文件中找到与这组九个字母匹配的所有单词 我有点困在这个节目的编码中,我想得到一些帮助 这就是我所做的 Nian = raw_input ("Type in nine letters :") filename = "dictionary
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
以下是如何继续:
文件
对象的readlines()
方法,请不要忘记删除行尾的'\n'
李>
str
的join
方法很有帮助你知道有
9!=362880
排列 因此,如果这9个字母完全匹配,我们可能会有点棘手。与其创建所有这些排列并检查每个排列,不如使用python内置的sorted
函数()将单词按字母顺序排序,然后比较结果
这里的“诀窍”是意识到你正在寻找这9个字母的字谜。例如
“简洁”和“重置”是彼此的字谜,但如果你对它们进行排序,它们都会变成“eerst”
即使您没有寻找精确匹配,您仍然可以使用此技巧进行优化
至于本程序的其余部分,如果您想了解一些关于使用python阅读文本文件的基本教程,我相信您将能够完成其余部分。祝你好运 我首先想到的是场景 这可能不是理想的解决方案,但应该可以做到:
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)
或,如果您正在查找仅包含这九个字母的单词:
if line_letters >= match_letters:
print(line)
if line_letters <= match_letters:
print(line)
如果你写过代码了吗?这是一个“教你钓鱼,而不是卖给你鱼”类型的网站。首先,在python中,查看生成置换之类的实用函数的itertools
包。只需对它们进行排序,对每个单词的字母进行排序,然后进行比较。如果你能使用少于9个,比较起来会有点困难,但不会太多。@ericcoo:编辑你的问题,将你刚才写的内容包括在内。@ericcoo:另外,在整理你的问题时,请在每个句子的开头使用大写字母。用大写的“I”来指代你自己。标准良好的英语写作确实很有帮助。生成所有排列是一种效率极低的查找字谜的方法。看我上面的评论。好吧,谢谢,但这不是我的主意。是的,这是最简单、最有效的方法。生成所有排列并不是一个好办法。如果你有20封信呢?20! = 这是一个非常大的数字,算法将花费很长时间,但这个解决方案仍然可以很好地工作。