不知道如何启动该计划

时间:2016-02-16 19:55:45

标签: python

我正在上一个python类,其中一个问题是

  

编写一个Python函数,如果True是回文(向前或向后读取),则返回aString,否则返回False。不要使用Python的内置reverse函数或aString[::-1]来反转字符串。

     

此函数接受一个字符串并返回一个布尔值。

def isPalindrome(aString):
    '''
    aString: a string
    '''

我不确定这个问题是否要求我启动一个函数或创建一个循环,然后当它为假时它会突破循环。

4 个答案:

答案 0 :(得分:1)

问题没有指明如何来执行此操作。它只是希望你编写一个函数,以便有人可以说isPalindrome(aString)并得到正确的答案。如何反转字符串有一些限制,但它并没有告诉你如何编写你的函数。

答案 1 :(得分:0)

我不确定你的困惑在哪里,但你的任务是创建一个你已经完成的Python函数,可以从你程序的其他地方调用(“启动”?)。鉴于您的限制,您的教师可能希望您在isPalindrome函数中使用循环。一个好的方法确实是:

  

创建一个循环,然后当它为假时它会跳出循环

祝你好运!

答案 2 :(得分:0)

根据老师的愿望,你可以做一些事情。

  • 纯粹而简单的字符串。 “赛车”将失败,但“赛车”不会因为“R”!=“r”
  • 不区分大小写的。 “赛车”将通过。 “不,它可以评估一个行动。”会失败。
  • 不计算空格/标点符号。 “不,它可以评估一个行动。”将通过

第一个:

def isPalindrone(aString):
    return aString == aString[::-1]

第二个:

def isPalindrone(aString):
    return aString.lower() == aString[::-1].lower()

第三个:

def isPalindrone(aString):
    aString = filter(lambda x: x.isalnum(), aString)
    return aString.lower() == aString[::-1].lower()

使用第三个作为标准,因为它可能是最好的,我们可以创建一个不使用[:: - 1]或反转的递归方法:

def reverseString(aString):
    if len(aString) <= 1:
        return aString
    else
        return isPalindrone(aString[1:] + aString[0])

def isPalindrone(aString):
    aString = filter(lambda x: x.isalnum(), aString)
    return aString.lower() == reverseString(aString).lower()

这仍然使用切片,所以如果你不必这样做,你可以做类似的事情:

def isPalindrone(aString):
    aString = filter(lambda x: x.isalnum(), aString)
    original = aString
    aString = ''.join([aString[i] for i in xrange(len(aString)-1, -1, -1)])
    return aString.lower() == original.lower()

这会回答你的问题吗?

答案 3 :(得分:0)

我实际上意识到问题在于什么 如果你仔细阅读,我想要做一个没有反向功能和反向字符串的Palindrome,所以我做了aString[-1-i],这也扭转了它。 感谢其他方式做palindrone。