You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MultiplePalyndrome函数无法正确识别多词回文问题求助

问题分析与解决

你的代码问题出在标点和空格的过滤逻辑上:
原代码里的message_revis = ''.join(x for x in message if x not in punct or x not in gap)用了or,这会导致空格(不在标点集合)、标点(不在空格集合)都被保留下来——等于根本没过滤掉这些干扰字符,所以带空格/标点的回文会因为残留的特殊字符对比失败。

修复后的代码

import string

def MultiplePalyndrome():
    isPalyndrome = True
    message = input('Your message\n').lower()
    # 合并标点和空格集合,一次性过滤
    unwanted_chars = set(string.punctuation + string.whitespace)
    message_revis = ''.join(x for x in message if x not in unwanted_chars)
    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()

说明

  1. 把标点和空格合并成一个unwanted_chars集合,简化过滤逻辑
  2. 过滤条件改为x not in unwanted_chars,确保所有干扰字符都被移除
  3. 处理后的字符串只保留有效字符,对比回文时就不会出错了

内容的提问来源于stack exchange,提问作者Dmitry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:49:59