改善这种回文检查

时间:2013-05-11 14:17:12

标签: python python-2.7

这段代码说的是从右到左从左到右读取的一个词:

def isPalindrome(s):

    def toChars(s):
        s = s.lower()
        ans = ''
        for c in s:
            if c in 'abcdefghijklmnopqrstuvwxyz':
                ans = ans + c
        return ans

    def isPal(s):
        if len(s) <= 1:
            return True
            #print(s +' is a palindrome.')
        else:
            return s[0] == s[-1] and isPal(s[1:-1])
            #print(s +' is not a palindrome.')
    return isPal(toChars(s))

s=raw_input('Enter a word: ')
print isPalindrome(s)

为了改善它,我希望代码返回的是一个回文'或者不是回文',视情况而定:) 但是如果我把这些打印语句放在返回之下,它就什么都不做。

我怎么能这样做?

提前致谢

1 个答案:

答案 0 :(得分:1)

def isPalindrome(s):
    if s == s[::-1]:
        return s + ' is a palindrome'
    return s + ' is not a palindrome'

s = raw_input('Enter a word: ')
# s = ''.join(filter(str.isalpha, s))
print(isPalindrome(s))

但你应该使用布尔值作为你的功能的返回值(真或假)并且只打印程序正文中的英文句子:

def isPalindrome(s):
    return s == s[::-1]

s = raw_input('Enter a word: ')

if isPalindrome(s):
    print(s + ' is a palindrome')
else:
    print(s + ' is not a palindrome')