这段代码说的是从右到左从左到右读取的一个词:
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)
为了改善它,我希望代码返回的是一个回文'或者不是回文',视情况而定:) 但是如果我把这些打印语句放在返回之下,它就什么都不做。
我怎么能这样做?
提前致谢
答案 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')