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 wordStrwordStrのを繰り返し処理します。おそらく、各行には、のような行末マーカーがあります\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 に答える