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

CodeWars Strip Comments代码PyCharm正常但在线控制台输出异常求助

问题根源与解决方案

核心问题:错误使用repr()函数

你代码里的strng = repr(strng)[1:-1]是导致在线输出异常的直接原因。

  • repr()函数的作用是返回字符串的字面量表示形式,它会把原字符串中的实际换行符\n转换成转义后的\\n(也就是两个字符:反斜杠+n)。
  • 本地测试时,你可能误将经过repr()处理的字符串作为输入,所以输出看起来正常;但CodeWars在线环境传入的是原生带实际换行符的字符串,经过repr()处理后,换行符被转义成\\n,最终输出自然会出现\\ngrapes\\n这类内容。

代码逻辑的其他隐患

除了repr()的问题,你的代码还存在逻辑漏洞:

  • 使用solution.replace(solution[start:i], "")会替换所有匹配的子串,而非仅当前标记对应的目标片段,容易引发意外修改。
  • 嵌套循环中直接修改i的值,会干扰外层循环的索引逻辑,增加越界和逻辑混乱的风险。

修正后的实现

以下是符合Kata要求的简洁可靠代码:

def strip_comments(strng, markers):
    lines = strng.split('\n')
    for i in range(len(lines)):
        for marker in markers:
            if marker in lines[i]:
                lines[i] = lines[i].split(marker)[0].rstrip()
                break
    return '\n'.join(lines)

逻辑说明:

  1. 将输入字符串按换行符分割为行列表,逐行处理。
  2. 对每行检查是否存在注释标记,若找到则从标记处截断内容,再用rstrip()清除行尾多余空格。
  3. 最后将处理后的所有行用换行符拼接返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:32:43