以下是一个更大的计划的一部分。
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语句,我无法弄清楚原因。
答案 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())