Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要用python编程单词查找器的帮助吗_Python_List Manipulation - Fatal编程技术网

需要用python编程单词查找器的帮助吗

需要用python编程单词查找器的帮助吗,python,list-manipulation,Python,List Manipulation,嗨,我有一个关于python的问题,我是一个新手: 我有一个文本文件,它包含一个按字母顺序排列的单词列表(大约23000个),就像一本小字典 该文本文件中的每一行都是一个单词 我必须制作一个程序,要求用户输入九个字母,然后该程序应该重新设置这些字母的范围,并在文本文件中找到与这组九个字母匹配的所有单词 我有点困在这个节目的编码中,我想得到一些帮助 这就是我所做的 Nian = raw_input ("Type in nine letters :") filename = "dictionary

嗨,我有一个关于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 

以下是如何继续:

  • 将文件读入set()对象,如果使用
    文件
    对象的
    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! = 这是一个非常大的数字,算法将花费很长时间,但这个解决方案仍然可以很好地工作。