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

Python stdin/stdout输出异常:函数括号换行问题排查

问题分析与修复

核心问题是输入行末尾的换行符未被处理,导致生成的结果中包含换行,使得()被打印到下一行。

具体原因

当通过sys.stdin读取每行输入时,行末尾会自带换行符\n。例如测试输入的第一行C;M;mouse pad实际读取后是C;M;mouse pad\n:

  • line[4:]得到的内容是mouse pad\n
  • 调用combine函数时,line.split(" ")会分割出['mouse', 'pad\n']
  • 处理第二个元素时,得到Pad\n
  • 最后追加(),拼接后的结果为mousePad\n(),输出时\n会让括号跳到下一行

修复方案

在读取每行输入后,先移除末尾的换行符。修改读取循环部分的代码:

res = []
for line in sys.stdin:
    line = line.rstrip('\n')  # 移除行末的换行符
    action = line[0]
    inputType = line[2]

    if action == 'S':
        word = split(line[4:], inputType)
        res.append(word)
    else:
        word = combine(line[4:], inputType)
        res.append(word)

# 输出时每个结果后添加换行,确保多行输入对应多行输出
for i in res:
    sys.stdout.write(i + '\n')

另外,原输出部分使用writelines不会自动添加换行,若需要每行结果单独占一行,建议改用write并追加\n,避免多个结果连在一起。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39