Python从Stdin读取多行后输出存在换行间隙的问题解决
问题出在哪?
你的输出有空行间隙,大概率是两个原因:
sys.stdin.readlines()会把每行末尾的换行符\n也读进来,要是处理的时候没去掉,生成的ans可能带多余换行,再加上print()默认会加个换行,俩换行叠一起就出空行了。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
相关产品推荐
相关产品推荐

