python-3.x def Palindrome()不返回Palyndrom

e4eetjau  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(81)

我面对这个问题,不知道解决它的方法。代码工作良好,但无论如何,它回答说,'消息'不是palyndrom,即使它真的palindrom。但是当我用一个词修改它时,它就去了。谢谢!

import string

def MultiplePalyndrome():
    isPalyndrome = True
    message = input('Your message\n').lower()
    punct = set(string.punctuation)
    gap = set(string.whitespace)
    message_revis = ''.join(x for x in message if x not in punct or x not in gap)
    i = 0
    while i < len(message_revis) / 2 and isPalyndrome:
        if message_revis[i] != message_revis[len(message_revis) - i - 1]:
            isPalyndrome = False
        i = i + 1
    if isPalyndrome:
        print("It's palyndrome! Yeah.")
    else:
        print("Nope. It's NOT palyndrome!")

MultiplePalyndrome()

我真的不知道是什么问题。

mwngjboj

mwngjboj1#

if x not in punct or x not in gap

总是为真,因为每个字符都是 * 非空格 * 或 * 非标点符号 *。您可能需要:

if x not in punct and x not in gap

它通过DeMorgan's Law转换为:

if not (x in punct or x in gap)

相关问题