我正在尝试用Python创建一个找到字谜的程序。这是我目前的代码:
def anagram(word,checkword):
for letter in word:
if letter in checkword:
checkword = checkword.replace(letter, '')
else:
return False
return True
while True:
f = open('listofwords.txt', 'r')
try:
inputted_word = input('Word? ')
for word in f:
word = word.strip()
if len(word)==len(inputted_word):
if word == inputted_word:
continue
elif anagram(word, inputted_word):
print(word)
#try:
#if word == 1:
#print ('The only anagram for', user_input, 'is', word)
#elif word > 1:
#print ('The anagrams for', user_input, 'are', word)
#except TypeError:
#pass
except:
break
我无法输出字谜。字谜应该在一行中,措辞应该反映出找到的字谜的数量。比如...
“只有一个(插入字谜)(插入输入的单词)”
“(插入字输入)”(插入字谜)“
“没有字谜(插入输入的单词)”
“(插入输入的单词)不在字典中”)
答案 0 :(得分:2)
以下是一些提示:
首先,如果你必须在打印任何字谜之前打印字谜的数量,你需要在循环时保持它们的列表。像这样:
anagrams = []
for word in f:
word = word.strip()
if len(word)==len(inputted_word):
if word == inputted_word:
continue
elif anagram(word, inputted_word):
anagrams.append(word)
现在你必须根据anagrams
列表中的内容,弄清楚如何在最后打印正确的文本。
至于你的尝试:
#try:
#if word == 1:
#print ('The only anagram for', user_input, 'is', word)
#elif word > 1:
#print ('The anagrams for', user_input, 'are', word)
#except TypeError:
#pass
这不可行。首先,word
是一个单词,因此它不可能等于1
或大于1
。另外,如果你只是通过了字典中的前20个单词,并找到了第一个字谜,你怎么知道这是唯一的字谜?在字典的其余部分可能有1000个。在完成整本字典之前,你无法决定要打印哪个句子。
同时,请注意你有“只有一个”与“不在字典中”的不同情况。因此,您需要某种标记“在词典中找到的entered_word”,您可以在if
语句中设置。或者,也许,你可以把特殊情况留下 - 例如,最后,如果你有0结果,你知道它不在字典中。这取决于您是想在结束时还是在循环内部获得更多逻辑。