[英]Palindrome Iterative checker in python
我写了一个回文迭代方法,它返回正确的结果,除非字符串是 arena 或tax cat。 它在必须返回 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
在return False
语句之后不需要break
。 返回将突破 function。 但问题是您的return True
语句有一个太多的选项卡。 return True
语句应该在 for 循环完成之后。
def pallindromechecker(a): if a == a[::-1]: print("True") else: print("False")
pallindromechecker("IamaI")
试试上面的代码。 这是一种识别回纹的简单方法
您的return True
行在第一次迭代时退出循环。 因此 function 将为任何具有相同首尾字母的单词返回 True。 此外,该 break 语句是不必要的,因为它上面的返回行将在到达 break 之前退出整个 function
最后,为了更加 Pythonic,您应该避免通过数组使用 go 的索引。 尝试对值使用迭代。
例如:
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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.