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

Python从Stdin读取多行后输出存在换行间隙的问题解决

问题出在哪?

你的输出有空行间隙,大概率是两个原因:

  1. sys.stdin.readlines()会把每行末尾的换行符\n也读进来,要是处理的时候没去掉,生成的ans可能带多余换行,再加上print()默认会加个换行,俩换行叠一起就出空行了。
  2. ans在循环外面初始化,要是循环里没每次清空,上次的内容会留着,甚至越攒越多,输出自然乱套。
改法给你两种

第一种:逐行读逐行处理

直接遍历sys.stdin,读一行处理一行,顺便把末尾的换行符去掉:

import sys

for line in sys.stdin:
    # 去掉每行末尾的换行,其他空格保留
    line = line.rstrip('\n')
    ans = ""
    # 这里写你的处理逻辑,比如对line做操作生成ans
    print(ans)

第二种:先把输入整理干净

要是还想用readlines(),先把输入里的空行过滤掉,每行的换行也去掉,同时每次循环都重置ans:

import sys
# 过滤空行,并且去掉每行末尾的换行符
arr = [line.rstrip('\n') for line in sys.stdin if line.strip()]

for string in arr:
    ans = ""  # 每次循环都清空ans,别留上次的内容
    # 你的处理代码放这
    print(ans)

额外提醒

  • 要是题目要求输入空行就得输出空行,那把列表推导式里的if line.strip()删掉就行。
  • 要是想自己控制换行,用print(ans, end=''),但得确保你的ans里已经有必要的换行,不然所有输出会挤成一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:45:33