2015-10-28 2 views
1

Привет Я пытаюсь заставить эту программу работать без использования функций обратной или сортировки в python 3. Это просто предполагается проверить на палиндромы. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю индекс вне диапазона каждый раз, когда я его запускаю. Есть ли способ обойти это?Проверка палитронда в python, обход за пределами диапазона обход

def is_palindrome(word): 
    if len(word) <= 1: 
     return True 
    else: 
     left = 0 
     right = len(word) - 1 
     while left < right: 
      if word[left] == word[right]: 
       left += 1 
       right += 1 
      else: 
       return False 
     return True 

is_palindrome("mom") 
is_palindrome("root") 
is_palindrome("racecar") 

ответ

2

right += 1 должен быть right -= 1.

+0

Спасибо, эта небольшая ошибка стоила мне много времени. – kvax12v

0

Вы можете написать это немного более лаконично.

>>> def is_palin(w): 
...  return len(w) <= 1 or (w[0] == w[-1] and is_palin(w[1:-1]))    
... 
>>> is_palin("xax") 
True 
>>> is_palin("xaax") 
True 
>>> is_palin("xaab") 
False