Python 编写检查字符串是否为回文的函数
我需要编写一个函数来确定给定的字符串是否是回文。以下是我到目前为止写的内容:Python 编写检查字符串是否为回文的函数,python,Python,我需要编写一个函数来确定给定的字符串是否是回文。以下是我到目前为止写的内容: def isPalindrome(string): found = False for i in range(len(string)): if string[i] == string[len(string) - 1 - i]: found = True if found == True: print("Inserted string is
def isPalindrome(string):
found = False
for i in range(len(string)):
if string[i] == string[len(string) - 1 - i]:
found = True
if found == True:
print("Inserted string is a palindrome. ")
else:
print("Inserted string is not a palindrome. ")
return
我对字符串进行迭代,并检查向前和向后迭代是否给出相等的字符。但如果我通过执行isAlindrome(“hello”)来应用这个程序,它会说这是一个回文。它没有给我正确的输出。请有人指出我犯的任何错误,以便我可以从中吸取教训。当您找到任何与“镜像”字符相等的字符时,您将
found
设置为true。例如,对于一个字符数为奇数的单词,这总是正确的(中间字符等于中间字符),但其他单词也会生成错误匹配。以单词winner
为例,其中的两个n
s处于镜像位置,您的函数将宣布它为回文,而显然它不是
如果发现不匹配,请提前退出,而不是将found
设置为true:
所以你开始假设它是一个回文,当你发现相反的证据时,你就退出
请注意,在检查了一半字符串后,可以停止检查:
for i in range((len(string) + 1) // 2):
if string[i] != string[len(string) - 1 - i]:
found = False
break
或者您可以测试字符串是否等于其反面;[::-1]
为您提供反向字符串:
string == string[::-1]
检查字母是否不匹配。一旦发生这种情况,就断定它不是回文。如果有任何镜像字符对匹配,则将“发现”设置为True。相反,您希望所有镜像对都匹配。因此,将其初始化为True,然后在循环中,如果它们不匹配,则将其设置为False。谢谢。这是非常清楚的。
string == string[::-1]