我编写了以下程序来确定字符串是否是使用递归的回文。我的问题是我不知道如何添加一个print语句,告诉我该字符串是否是回文。我意识到还有其他代码可以做同样的事情,但我想知道我的推理是否正确。
import re
s= raw_input( " Enter a string to check if it is a palindrome ")
newstring = re.sub('\W', '', s)
newstring =newstring.lower()
def Palind(newstring):
if newstring[0] != newstring[-1]:
#print 'The given string is not a palindrome'
return False
else:
s_remain = newstring[1:-1]
if s_remain == '':
return True
elif len(s_remain) == 1 :
return True
else:
return Palind(s_remain)
if Palind(newstring):
print 'Yes'
else:
print 'No'
答案 0 :(得分:1)
首先,正确缩进代码,并正确地小写输入:
import re
s= raw_input( " Enter a string to check if it is a palindrome ")
newstring = re.sub('\W', '', s)
newstring = newstring.lower()
def Palind(newstring):
if newstring[1] != newstring[-1]:
#print 'The given string is not a palindrome'
return False
else:
s_remain = newstring[1:-1]
return Palind(s_remain)
然后实际调用你的函数并处理结果:
if Palind(newstring):
print ('Yes')
else:
print ('No')
这就是你打印函数结果的方式..
但是当你进入回文时会遇到问题,因为你从未真正回归真实。你需要通过检查你是否已经到达字符串的末尾而不返回false来解决这个问题。
答案 1 :(得分:1)
你的逻辑大致是对的,但是你错过了一些东西。
字符串中的第一个字符是string[0]
而非string[1]
,因此您要比较错误的字符。
您需要调用Palind()以及def
。
如果你纠正了这些问题,你每次都会在字符串的每一边都写一个字母,它会越来越短 - 下一个有趣的事情就是你要么得到一个字符,要么你跑了没有人物。你应该寻找那个州。