我想写一个Python函数,它返回true一个字符串s是一个回文,即它等于它的反向。例如'racecar'和'abba'是回文。到目前为止,这是我不成功的尝试。递归函数无法返回布尔型
def ispalindrome(s):
if len(s) == 1:
return s
else:
reverse = s[-1] + ispalindrome(s[:-1])
我没有问题,当我告诉我的函数返回相反,但是,我很困惑,我应该怎么做才能返回一个布尔比较。
def ispalindrome(s):
if len(s) == 1:
return s
else:
reverse = s[-1] + ispalindrome(s[:-1])
return a == reverse
使用上述函数创建以下错误
>>>ispalindrome('racecar')
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
ispalindrome('racecar')
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
TypeError: Can't convert 'bool' object to str implicitly
现在我完全理解为什么上述错误产生。这是因为一些递归函数返回一个布尔值并尝试将其添加到一个字符串;但我不能做的是如何避免这个错误。
为什么不直接测试第一个和最后一个字符,并在递归之前将它们关闭? – 2015-02-12 03:29:32
我可以,但我正在寻找一种方法,我可以使用生成的“反向”。 – TheValars 2015-02-12 03:32:25