Palindrome

Ron Adam radam2 at tampabay.rr.com
Fri Nov 14 06:51:02 EST 2003


On Thu, 13 Nov 2003 17:32:06 +0000, Alan Kennedy <alanmk at hotmail.com>
wrote:

>
>I'm not too happy with it though. There must be some way to have a
>single fixed regular expression that can be used to test every
>palindrome.
>
>regards,


Thought I'd give it a try too.   This is what I came up with.  I used
the regular expression re.sub() function to remove the punctuation and
spaces.    

The really hard part was trying to come up with a palindrome that has
the word python in it.  :-)

_Ron Adam


"""
Test if a string is a palindrome.
"""
import re

def palindrome_test(p):
    p = p.lower()
    p = re.sub(r'\W','',p)
    while p:
        if p[:1] == p[-1:]:
            p = p[1:-1]
        else:
            break
    if (len(p) <= 1):
        return True
    else:
        return False

palindrome_list = ["Bolton",
                   "No 'H' type, mate. No spot stops one tame
python!",
                   "A man, a plan, a cat, a ham, a yak, a yam, a hat,
a canal--Panama!",
                   "Was it a car or a cat I saw?",
                   "This is not a palindrome!"]

for p in palindrome_list:
    print '"'+p+'"',
    if palindrome_test(p):
        print 'is a palindrome.'
    else:
        print 'is not a palindrome.'






More information about the Python-list mailing list