Palindrome
Ben Finney
bignose-hates-spam at and-benfinney-does-too.id.au
Thu Nov 13 18:28:55 EST 2003
On Thu, 13 Nov 2003 23:16:50 GMT, Andrew Dalke wrote:
> Gerrit Holl
>> Are you looking for:
>> 20:58:42:232:0 >>> def ispalindrome(s):
>> 20:58:42:232:0 ... return s == s[::-1]
>
> No. The OP wanted to strip special characters and normalize case, so
> that A man, a plan, a canal -- Panama! would be allowed as a
> palindrome.
Here's mine.
I have yet to try this on the world's longest palindrome:
<http://www.norvig.com/palindrome.html>
=====
#!/usr/bin/env python
""" Module for palindrome determination
"""
import string
def is_palindrome( str ):
""" Determine if str is a palindrome
"""
# Assume false until proven otherwise
is_pal = False
# Remove punctuation and whitespace
passthrough_tbl = string.maketrans( '', '' )
remove_chars = string.whitespace + string.punctuation
str = string.translate( str, passthrough_tbl, remove_chars )
# Remove capitalisation
str = string.lower( str )
# Determine if massaged string matches its reverse
is_pal = ( str == str[::-1] )
return is_pal
if( __name__ == '__main__' ):
candidates = [
"",
"Foo",
"FooF",
"Foof",
"Foxof",
"Madam, I'm Adam.",
"Ten animals I slam in a net.",
"Lapses? Order red roses, pal.",
"A man, a plan, a canal -- Panama!",
"Satan, oscillate my metallic sonatas.",
"Eva, can I stack Rod's sad-ass, dork cats in a cave?",
]
for str in candidates:
print ( "'%s':" % str ),
print is_palindrome( str )
=====
--
\ "I wish I had a dollar for every time I spent a dollar, because |
`\ then, yahoo!, I'd have all my money back." -- Jack Handey |
_o__) |
Ben Finney <http://bignose.squidly.org/>
More information about the Python-list
mailing list