0

このコードを実行しようとするたびに:

def isPalindrome( theSubList ):
    theSubListtest = theSubList[0:]
    if len(theSubListtest) <= 1:
        return True
    elif len(theSubListtest) == 2:
        x = theSubListtest[0]
        y = theSubListtest[1]
        if (x == y):
            return True
        else:
            return Falsefirst == theSubListtest.pop(0)
    elif len(theSubListtest) > 2:
        first = theSubListtest.pop(0)
        last = theSubListtest.pop()
        if first == last:
            isPalindrome(theSubListtest)
        else:
            return False

candidatePs = [ 
    [1,], 
    range(8), 
    range(4) + range(3,-1,-1), 
    range(4) + [0] + range(3,-1,-1),
    range(3) + range(4) + [0] + range(3,-1,-1),
]

for p in candidatePs :
    print p, isPalindrome( p )

p の最初の 2 つの値に対しては正しく実行されますが、次の 3 つの値に対しては "None" が出力されます。どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

4

おっと。

if (first == last):
    return isPalindrome(theSubListtest)
else:
    return False
于 2011-10-23T23:38:52.303 に答える
1

あなたはリターンを忘れました。これらの行を変更します。

if (first == last):
    isPalindrome(theSubListtest)

if (first == last):
    return isPalindrome(theSubListtest)

コードは期待どおりに機能します。

于 2011-10-23T23:43:23.237 に答える