Python продолжает выводить "нет" - PullRequest
0 голосов
/ 24 октября 2011

Всякий раз, когда я пытаюсь запустить этот код:

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, но затем выдает «None» для следующих трех значений. Любая помощь очень ценится. Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Упс.

if (first == last):
    return isPalindrome(theSubListtest)
else:
    return False
1 голос
/ 24 октября 2011

Вы забыли возврат.Измените эти строки:

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

на

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

, и код будет работать должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...