Palindrome功能在Python中不起作用

时间:2012-07-09 00:28:27

标签: python python-2.7

以下是一个更大的计划的一部分。

wordStr = open("words.txt",'rU')

def isPalindrome(wordStr):
    palindromeCount = 0
    for word in wordStr:
        if word == word[::-1]:
            palindromeCount += 1
    print palindromeCount

isPalindrome(wordStr)

words.txt包含数千个单词,它与程序位于同一个文件夹中。有了这个功能,我试图通过计算文本文件中回文词(拼写相同的正面和背面)的单词数。它每次只返回0,甚至从未进入if语句,我无法弄清楚原因。

3 个答案:

答案 0 :(得分:4)

for word in wordStr将遍历wordStr中的。可能每一行都有一个行尾标记,类似于\n。如果你print repr(word),你可能会看到它。

我会尝试

for word in wordStr:
    print repr(word)
    word = word.strip()
    [etc]

作为第一关。

答案 1 :(得分:2)

您需要从各行中删除额外的换行符,并让您的函数返回一个值:

wordFile = open("words.txt",'rU')

def PalindromeCount(wordFile):
    palindromeCount = 0
    for word in wordFile:
        word = word.strip()
        if word == word[::-1]:
            palindromeCount += 1
    return palindromeCount

当我在这个数据上运行时:

meatloaf
radar
ardra
fish

我得到了这个结果:2

答案 2 :(得分:0)

sum(word == word[::-1] for word in wordStr.read().split())