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

Python input()函数截断长输入的编程竞赛解决方案问询

解决Python控制台超长输入截断问题

问题原因

input()函数默认按行读取输入,且受限于终端输入缓冲区大小(通常为16KB左右),当粘贴的超长输入超过缓冲区容量时,会被截断,剩余内容无法通过后续input()调用获取。

解决方案

直接读取标准输入的全部内容,而非逐行读取,同时可实现类似Java Scanner的next()功能。所有方案均基于Python标准库,无需额外安装依赖。

1. 读取全部输入内容

使用sys.stdin.read()一次性获取所有控制台输入,不受缓冲区限制:

import sys

full_input = sys.stdin.read()
print(f"输入总长度: {len(full_input)}")

2. 逐字符处理输入

遍历读取到的全部输入内容,实现逐字符处理:

import sys

for char in sys.stdin.read():
    # 这里添加你的字符处理逻辑
    print(char, end='')

3. 实现类似Java Scanner的next()功能

按空白符(空格、换行、制表符等)分割输入,逐个获取token:

import sys

# 分割所有输入为token列表
all_tokens = sys.stdin.read().split()

# 逐个获取token,模拟next()
for token in all_tokens:
    print(f"当前token: {token}")

或者用生成器实现按需获取,节省内存:

import sys
import itertools

def scanner_next():
    # 逐行读取并分割,链式生成所有token
    tokens = itertools.chain.from_iterable(line.split() for line in sys.stdin)
    yield from tokens

# 使用示例
scanner = scanner_next()
while True:
    try:
        token = next(scanner)
        print(f"获取到token: {token}")
    except StopIteration:
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:02:46