确定字符串是否为回文序列

时间:2014-03-26 00:46:01

标签: python python-2.7

我编写了以下程序来确定字符串是否是使用递归的回文。我的问题是我不知道如何添加一个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'  

2 个答案:

答案 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)

你的逻辑大致是对的,但是你错过了一些东西。

  1. 字符串中的第一个字符是string[0]而非string[1],因此您要比较错误的字符。

  2. 您需要调用Palind()以及def

  3. 如果你纠正了这些问题,你每次都会在字符串的每一边都写一个字母,它会越来越短 - 下一个有趣的事情就是你要么得到一个字符,要么你跑了没有人物。你应该寻找那个州。