我正在上一个python类,其中一个问题是
编写一个Python函数,如果
True
是回文(向前或向后读取),则返回aString
,否则返回False
。不要使用Python的内置reverse
函数或aString[::-1]
来反转字符串。此函数接受一个字符串并返回一个布尔值。
def isPalindrome(aString): ''' aString: a string '''
我不确定这个问题是否要求我启动一个函数或创建一个循环,然后当它为假时它会突破循环。
答案 0 :(得分:1)
问题没有指明如何来执行此操作。它只是希望你编写一个函数,以便有人可以说isPalindrome(aString)
并得到正确的答案。如何反转字符串有一些限制,但它并没有告诉你如何编写你的函数。
答案 1 :(得分:0)
我不确定你的困惑在哪里,但你的任务是创建一个你已经完成的Python函数,可以从你程序的其他地方调用(“启动”?)。鉴于您的限制,您的教师可能希望您在isPalindrome
函数中使用循环。一个好的方法确实是:
祝你好运!创建一个循环,然后当它为假时它会跳出循环
答案 2 :(得分:0)
根据老师的愿望,你可以做一些事情。
第一个:
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。