python中的回文迭代检查器

2024-10-06 11:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个回文迭代方法,它返回正确的结果,除非字符串是arena或taxicat。在必须返回false的情况下,它会返回true

def palIterative(n):
    for i in range(0, int(len(n)/2)):
        if n[i] != n[len(n) - i - 1]:
            return False
            break
        return True

Tags: 方法字符串infalsetrueforlenreturn
3条回答

def Pallindrome检测器(a): 如果a==a[:-1]: 打印(“真实”) 其他: 打印(“假”)

pallindromechecker(“IamaI”)

试试上面的代码。这是鉴别帕林罗马的一个简单方法

return False语句之后不需要break。Return将从函数中中断。但问题是return True语句的制表符太多。return True语句应该在for循环完成之后

您的return True行在第一次迭代时退出循环。因此,对于首字母和末字母相同的任何单词,函数都将返回True。另外,break语句是不必要的,因为它上面的返回行将在到达break之前退出整个函数

最后,为了更具python风格,应该避免使用索引遍历数组。尝试对值使用迭代

例如:

def isPalindrome(n):
    for forward,backward in zip(n,reversed(n)):
        if forward != backward:
            return False
    return True

请注意,如果您正在寻找编写解决方案的最短方法,您甚至不需要循环return n == n[::-1]就可以了。它本质上是迭代的(与递归相反),因为==比较将遍历列表,反之亦然,以比较元素(您不必告诉它有多明确)。您还可以将其视为只执行一次迭代

出于比较目的,递归解决方案如下所示:

def isPalindrome(A):
    return not A or A[0]==A[-1] and isPalindrome(A[1:-1])

相关问题 更多 >