在Python中创建返回布尔值的回文函数

在Python中创建返回布尔值的回文函数,python,Python,我目前正在学习Python课程,目前正在努力完成我家庭作业的一部分 问题是要我们构造一个函数来检查字符串是否是回文。我遇到的问题是,对于我的导师提供的一个测试,回文中包含空格的从不为奇数或偶数。空格导致我的函数失败,因为它不只是使用短语中的字母 我目前的代码是: def is_palindrome(phrase): return phrase == phrase[::-1] 她正在测试代码: assert is_palindrome("Never odd or even") 任何帮

我目前正在学习Python课程,目前正在努力完成我家庭作业的一部分

问题是要我们构造一个函数来检查字符串是否是回文。我遇到的问题是,对于我的导师提供的一个测试,回文中包含空格的从不为奇数或偶数。空格导致我的函数失败,因为它不只是使用短语中的字母

我目前的代码是:

def is_palindrome(phrase):

    return phrase == phrase[::-1]
她正在测试代码:

assert is_palindrome("Never odd or even")

任何帮助都将不胜感激!谢谢。

我想这就是你想要的:- _回文是奇数还是偶数.replace、.lower

如果要更改函数,则函数如下所示:

def is_palindrome(phrase):
    phrase=phrase.replace(" ","").lower()
    return phrase == phrase[::-1]   

你可以用is_palindromeNever奇数或偶数,先去掉空格,然后使用递归,只检查第一个和最后一个字符是否相同,在内部递归

def is_palindrome(x):
    x = "".join(x.split()).lower()
    if (len(x) <= 1): return True
    if x[0] != x[-1]: return False
    return is_palindrome(x[1:-1])

实际上,您的代码不关心大小写或空格。你是如何解释这些的?删除所有空格并将所有内容转换为相同的大小写,然后进行测试。我不确定如何编辑我的代码来解释这一点。是否必须将字符串转换为列表?有关如何删除空格的信息,请参阅。有关如何转换为相同大小写的信息,请参阅。您不需要将字符串转换为列表。iterable字符串实际上只是隐藏的字符数组这不太可能比简单地反转整个字符串更有效,因为您在每次递归调用上都有效地复制了creting新字符串对象x[1:-1]是一个具有低内存的新字符串。