2024-10-06 11:24:29 发布
网友
我编写了一个回文迭代方法,它返回正确的结果,除非字符串是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
def Pallindrome检测器(a): 如果a==a[:-1]: 打印(“真实”) 其他: 打印(“假”)
pallindromechecker(“IamaI”)
试试上面的代码。这是鉴别帕林罗马的一个简单方法
在return False语句之后不需要break。Return将从函数中中断。但问题是return True语句的制表符太多。return True语句应该在for循环完成之后
return False
break
return True
您的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]就可以了。它本质上是迭代的(与递归相反),因为==比较将遍历列表,反之亦然,以比较元素(您不必告诉它有多明确)。您还可以将其视为只执行一次迭代
return n == n[::-1]
出于比较目的,递归解决方案如下所示:
def isPalindrome(A): return not A or A[0]==A[-1] and isPalindrome(A[1:-1])
def Pallindrome检测器(a): 如果a==a[:-1]: 打印(“真实”) 其他: 打印(“假”)
pallindromechecker(“IamaI”)
试试上面的代码。这是鉴别帕林罗马的一个简单方法
在
return False
语句之后不需要break
。Return将从函数中中断。但问题是return True
语句的制表符太多。return True
语句应该在for循环完成之后您的
return True
行在第一次迭代时退出循环。因此,对于首字母和末字母相同的任何单词,函数都将返回True。另外,break语句是不必要的,因为它上面的返回行将在到达break之前退出整个函数最后,为了更具python风格,应该避免使用索引遍历数组。尝试对值使用迭代
例如:
请注意,如果您正在寻找编写解决方案的最短方法,您甚至不需要循环
return n == n[::-1]
就可以了。它本质上是迭代的(与递归相反),因为==比较将遍历列表,反之亦然,以比较元素(您不必告诉它有多明确)。您还可以将其视为只执行一次迭代出于比较目的,递归解决方案如下所示:
相关问题 更多 >
编程相关推荐