Python中仅对字符串进行操作的回文

Python中仅对字符串进行操作的回文,python,string,palindrome,Python,String,Palindrome,我正在尝试用Python编写一个程序,它将检测用户给出的单词是否是回文 这是我的代码-我只对字符串进行操作-我的解决方案与我在这里或任何地方看到的其他解决方案完全不同,因此我希望您-StactOverFlow用户;)-检查其正确性 我不必说我不是专家,我有相当基础的知识。 不过,如果有人花时间给我一些反馈,我会很高兴 # a palindrome string = input('word: ') if(len(string) % 2 != 0): left = string.lower()[

我正在尝试用Python编写一个程序,它将检测用户给出的单词是否是回文

这是我的代码-我只对字符串进行操作-我的解决方案与我在这里或任何地方看到的其他解决方案完全不同,因此我希望您-StactOverFlow用户;)-检查其正确性

我不必说我不是专家,我有相当基础的知识。 不过,如果有人花时间给我一些反馈,我会很高兴

# a palindrome
string = input('word: ')
if(len(string) % 2 != 0):
  left = string.lower()[0:int((len(string)-1)/2)]
  right = string.lower()[int((len(string)-1)/2 + 1): ]
  if left == right[::-1]:
    print('{} is a palindrome'.format(string.lower()))
  else:
    print('{} is not a palindrome'.format(string))
else:
  left = string.lower()[0:int((len(string)/2))]
  right = string.lower()[int(len(string)/2):]
  if left == right[::-1]:
    print('{} is a palindrome'.format(string.lower()))
  else:
    print('{} is not a palindrome'.format(string.lower()))

这里有一条打印回文的单行线:

print ([v for v in palindromes_test if (len(v) % 2 == 0 and v[0:len(v)//2] == v[len(v)//2:][::-1]) or (len(v) % 2 != 0 and v[0:len(v)//2] == v[len(v)//2+1:][::-1])])
否则:

palindromes_test = ['ABCDCBA','EVE','ABCABC']

for elem in palindromes_test:
    if len(elem) % 2 == 0 and elem[0:len(elem)//2] == elem[len(elem)//2:][::-1]:
        print ("%s palindrome" % elem)
    elif len(elem) % 2 != 0 and elem[0:len(elem)//2] == elem[len(elem)//2+1:][::-1]:
        print ("%s palindrome" % elem)
    else:
        print ("%s not palindrome" % elem)
输出:

ABCDCBA palindrome
EVE palindrome
ABCABC not palindrome
    

要检测回文,只需检查反向字符串是否等于原始字符串

palindromes_test = ['ABCDCBA','EVE','ABCABC']

print ([v for v in palindromes_test if (v == (v[::-1]))])
输出

 ['ABCDCBA', 'EVE']

你是在问这个代码是否有效吗?如果是这样的话,我相信你可以自己编译。否则,您可能会寻找代码审查,这可能更适合Ok,我写了这段代码,所以它没有语法错误,并且在这个意义上工作。问题是:如果这背后的逻辑是正确的。它比它需要的复杂得多……你的意思是这是一个正确的解决方案,即。E这个想法本身?我想这可以用一种更简单的方法来完成,但即使这一行更复杂,它也是正确的,对吗?谢谢你,用一行代码来编写整个解决方案真是太神奇了;)对于你的“测试字符串”,我的解决方案和你的一样有效,我想这表明我的复杂代码是正确的。这就是你理解基本逻辑的方式。如果我的回答有帮助,您仍然可以验证它;)(答案左上角灰色勾号)我觉得太复杂了:)哈哈,真有趣。你回答的时候有没有抄过我的密码?!至少你用了示例序列啊哈。很好的示例集!回答不好哈哈,伙计们,谢谢你们的关注;)你们中没有人明确指出这是正确的,但使用这三个“测试字符串”会给出与第一个答案相同的结果。我知道这太复杂了——多亏了你;)然而,在一开始,当一个代码工作时,它是美妙的。所以,再次感谢各位,我会接受这两个答案。