2

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

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 语句,我不知道为什么。

4

3 回答 3

4

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

我会尝试

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

作为第一关。

于 2012-07-09T00:33:05.050 回答
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

于 2012-07-09T00:37:11.477 回答
0
sum(word == word[::-1] for word in wordStr.read().split())
于 2012-07-09T05:24:54.713 回答