所以,这已经是我的项目了很长时间,最终,我在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)
。
答案 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 = line
,ref
将等于"the\n"
(或"the\r\n"
)。您排序后的ref_list
然后变成['\n', 'e', 'h', 't']
但是,使用input()
从键盘读取的内容不包含换行符。您的word1_list
永远不会包含'\n'
,因此word1_list
和ref_list
永远不会相等。
修复:将ref = line
更改为ref = line.strip()
,以删除换行符。