On 27/08/2010 09:53, Baba wrote:
level: beginner

the following code looks ok to me but it doesn't work. I would like
some hints as to where my reasoning / thought goes wrong

def i_palindrome(pal):
  while len(pal)>1:
   if pal[0] == pal[-1]:
    pal=pal[1:-1]
  return True

print i_palindrome('annab')

If you want to or must  do it recursively.
(Shown in pseudo code to make the logic clearer)

def isPalindrome(pal)
    ''' test pal (a list) is a palindrome '''
    if length of pal = 1
        return True # all one letter strings are palindromes.
    if first equals last
        # pal could be a palindrome
        #  so test inner part
        p = pal with first and last removed
        return  isPalendrome(p)   #  and true - implied
    else
        return False # it can't be

Of course, the simpler way is to use the definition of a Palindrome as the same backwards and forwards.

def isPalindrome(pal)
    return pal == pal.reverse



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to