字谜解算器不起作用

时间:2018-08-17 11:13:49

标签: python python-3.x file

所以,这已经是我的项目了很长时间,最终,我在python 3.4中制作了一个字谜解算器,只是应该为单词+一个随机字母找到字谜。我已经解决了所有错误消息,但是没有更多错误了,只是没有执行。所有帮助表示赞赏。我有很多有用的评论,但仍然无法正常工作。我已经更新了问题中的代码。(Here是我在字典中的所有单词在不同行上使用的文件,它确实很有帮助,而且我不得不几个月寻找类似的东西。)

file = open("C:\\my stuff\\brit-a-z.txt","r")
def anagram(word):
    for alpha in range(ord('a'), ord('z') + 1):
        newletter = chr(alpha)
        for line in file:
            ref = line.strip()
            
            word1 = list(word)
            list.append(newletter)
            word1_list.sort()
            ref_list = list(line)
            ref_list.sort()
            if word1_list == ref_list:
                print(line)
while True:
    inp = input()
    anagram(inp)

2 个答案:

答案 0 :(得分:1)

这应该可以满足您的需求。

with open("C:\\my_folders_are_in_here\\brit-a-z.txt", 'r') as f:
    check_list = [x.strip() for x in f.readlines()]

def anagram(word):
    for alpha in range(ord('a'), ord('z') + 1):
        newletter = chr(alpha)
        for line in check_list:
            word1_list = list(word + newletter)
            word1_list.sort()
            ref_list = list(line)
            ref_list.sort()
            if word1_list == ref_list:
                print(line)

while True:
    inp = input()
    anagram(inp)

我利用chr()ord()内置函数删除了long,如果long将alpha转换为newletter

答案 1 :(得分:1)

在Python中从文件读取行还包括换行符。 因此,例如,如果文件中的一行是单词"the",则分配ref = lineref将等于"the\n"(或"the\r\n")。您排序后的ref_list然后变成['\n', 'e', 'h', 't']

但是,使用input()从键盘读取的内容不包含换行符。您的word1_list永远不会包含'\n',因此word1_listref_list永远不会相等。

修复:将ref = line更改为ref = line.strip(),以删除换行符。