为什么呢? 它返回:
if word[0] != word[-1]:
IndexError: list index out of range
如果我改变"打印" Palindrome"" to"返回True"和"返回False"它根本不会返回任何内容。
import sys
exstring = "f"
data = list(exstring)
def palindrome(word):
if len(word) < 2:
print "Palindrome"
if word[0] != word[-1]:
print "Not Palindrome"
return palindrome(word[1:-1])
palindrome(data)
答案 0 :(得分:1)
首先,你需要一个像Hypnic Jerk那样的elif。其次,你需要在打印后返回。
工作代码:
import sys
exstring = "radar"
data = list(exstring)
def palindrome(word):
if len(word) < 2:
print "Palindrome"
return True
elif word[0] != word[-1]:
print "Not Palindrome"
return False
return palindrome(word[1:-1])
palindrome(data)
答案 1 :(得分:0)
你想要做的是:
def palindrome(word):
if len(word) < 2:
return True
if word[0] != word[-1]:
return False
return palindrome(word[1:-1])
在这种情况下你不需要elif。这只是一种很好的做法。除非第一个是假的,否则将不会达到第二个if语句。更“正确”(但仍然完全等效)是:
def palindrome(word):
if len(word) < 2:
return True
elif word[0] != word[-1]:
return False
else
return palindrome(word[1:-1])
此外,最好只让函数决定它是否是回文,而不是打印它。相反,你应该像这样使用它:
if palindrome(word):
print "Palindrome"
else
print "Not palindrome"
除非你有充分的理由,否则不要混合功能。