Python 需要为回文导出一个函数

Python 需要为回文导出一个函数,python,palindrome,Python,Palindrome,我需要导出一个函数,它接受一个字符串并返回该字符串是否为回文,如果不考虑空格,我的函数应该在回文字符串上返回True(因此应该说“一个人计划一条运河巴拿马”或“我看到的是eliots厕所”都是回文),但它不需要考虑资本化或标点符号的变化(因此,它可能会在‘一个人,一个计划,一条运河——巴拿马’上返回错误的答案,‘我看到的是爱略特的厕所’)。 我试过了 def palindrome(s): return len(s) < 2 or s[0] == s[-1] and palindro

我需要导出一个函数,它接受一个字符串并返回该字符串是否为回文,如果不考虑空格,我的函数应该在回文字符串上返回True(因此应该说“一个人计划一条运河巴拿马”或“我看到的是eliots厕所”都是回文),但它不需要考虑资本化或标点符号的变化(因此,它可能会在‘一个人,一个计划,一条运河——巴拿马’上返回错误的答案,‘我看到的是爱略特的厕所’)。 我试过了

def palindrome(s):
    return len(s) < 2 or s[0] == s[-1] and palindrome(s[1:-1])
def回文:
返回len(s)<2或s[0]==s[-1]和回文(s[1:-1])

def ispalindrome(word):
如果len(word)<2:返回True
如果单词[0]!=word[-1]:返回False
返回ispalindrome(字[1:-1])
但两者都不起作用。有什么建议吗?我正在使用python 3.3

Outline
>>> text = 'a man a plan a canal panama'
>>> x = ''.join(text.split())
>>> x == x[::-1]
True
如果第i个字符与第len-i个字符相同,则短语为回文。因为这个系列是一个镜像,所以你只能走到中间

要获得想要的效果,可以在计算字符串是否为回文之前对空格、标点符号和字符串大小写进行规范化

代码 您还可以使用
zip
reversed
对字母进行成对迭代:

def is_palindrome(s):
    return all(a == b for a, b in zip(s, reversed(s)))
当然,这并不是在中间停止。

试验 你的代码 至于你的原件,我认为是正确的:

>>> s = "able was I ere I saw Elba".lower()
>>> def ispalindrome(word):
...     if len(word) < 2: return True
...     if word[0] != word[-1]: return False
...     return ispalindrome(word[1:-1])
... 
>>> ispalindrome(s)
True
>>> s = "a man a plan a canal panama"
>>> ispalindrome(s)
False
>>> ispalindrome(s.replace(" ",""))
True
>>s=“在我看到厄尔巴之前我是能干的”。lower()
>>>def ispalindrome(word):
...     如果len(word)<2:返回True
...     如果单词[0]!=word[-1]:返回False
...     返回ispalindrome(字[1:-1])
... 
>>>ispalindrome(s)
真的
>>>s=“一个人计划巴拿马运河”
>>>ispalindrome(s)
假的
>>>ispalindrome(s.replace(“,”))
真的
大纲 如果第i个字符与第len-i个字符相同,则短语为回文。因为这个系列是一个镜像,所以你只能走到中间

要获得想要的效果,可以在计算字符串是否为回文之前对空格、标点符号和字符串大小写进行规范化

代码 您还可以使用
zip
reversed
对字母进行成对迭代:

def is_palindrome(s):
    return all(a == b for a, b in zip(s, reversed(s)))
当然,这并不是在中间停止。

试验 你的代码 至于你的原件,我认为是正确的:

>>> s = "able was I ere I saw Elba".lower()
>>> def ispalindrome(word):
...     if len(word) < 2: return True
...     if word[0] != word[-1]: return False
...     return ispalindrome(word[1:-1])
... 
>>> ispalindrome(s)
True
>>> s = "a man a plan a canal panama"
>>> ispalindrome(s)
False
>>> ispalindrome(s.replace(" ",""))
True
>>s=“在我看到厄尔巴之前我是能干的”。lower()
>>>def ispalindrome(word):
...     如果len(word)<2:返回True
...     如果单词[0]!=word[-1]:返回False
...     返回ispalindrome(字[1:-1])
... 
>>>ispalindrome(s)
真的
>>>s=“一个人计划巴拿马运河”
>>>ispalindrome(s)
假的
>>>ispalindrome(s.replace(“,”))
真的

您可以存储没有特殊字符和空格的字符串,然后检查它是否是回文

def isPalindrome(s: str) -> bool:
    mystring = s.lower()
    mystring2 = ""
    for i in mystring:
        if i.isalnum():
            mystring2 += i

    return (mystring2 == mystring2[::-1])

您可以存储没有特殊字符和空格的字符串,然后检查它是否为回文

def isPalindrome(s: str) -> bool:
    mystring = s.lower()
    mystring2 = ""
    for i in mystring:
        if i.isalnum():
            mystring2 += i

    return (mystring2 == mystring2[::-1])

要用这个实现函数吗?要用这个实现函数吗?