首页 > 解决方案 > 当for循环不产生任何结果时如何返回结果

问题描述

嗨,我正在尝试将单词与单词数据进行比较,并检查输入单词是否为回文。例如,抽屉是一个回文,因为它的反向奖励也是一个真词。

我有以下代码-

words = sorted({line.strip().lower() for line in open('words.txt', 'r')})
# words is a standard English dictionary

def signature(word):
    return ''.join(reversed(word))
def find_palindrom(myword):
    mysig = signature(myword)
    
    for word in words:
        if mysig == word:
            print(myword)
            print(mysig)
            print("It is a palindrome")

因此,find_palindrome(drawer) 将给出以下输出 - 抽屉奖励 它是回文

但是,如果我检查 find_palindrome(post),它不会输出任何内容,因为 tsop 不是有效单词。如何,我可以更新代码,以便如果单词(如帖子)不是回文,它会给出一个输出 -

post
tsop
Not a palindrome

标签: pythonfor-loop

解决方案


这是elseon a loop 的典型用法。有关详细信息,请参阅任何有关循环的中级教程。

for word in words:
    if mysig == word:
        print(myword)
        print(mysig)
        print("It is a palindrome")
        break
else:
    print(myword)
    print(mysig)
    print("It is NOT a palindrome")

注意仔细的缩进:else匹配for,而不是if

或者,您只需设置一个标志:

is_palindrome = False

for word in words:
    if mysig == word:
        is_palindrome = True
        break

# Do your printing here; test the flag to choose the last line of output.

推荐阅读