0Pricing
Competitive Programming Academy · 课时

input() 与 sys.stdin 对决

了解为什么普通 input() 会在大型测试中拖慢程序

input() 与 sys.stdin 对决 是 CoddyKit 上的免费 Competitive Programming Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Competitive Programming Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Competitive Programming Academy 课程共包含 4 节课。

input() 的隐性成本

每次调用 input() 都会在后台执行额外工作。读取几行时这完全没问题,但比赛可能会向您提供成千上万行数据。⏱️

为什么开销会累积

变慢的原因是每次调用的开销:提示、刷新和编码检查会在您读取每一行时重复执行。

认识 sys.stdin

更快的路径是从原始输入流 sys.stdin 中读取。它跳过了 input() 为您添加的那些便利功能。

import sys
data = sys.stdin

快速读取一行

使用 sys.stdin.readline() 快速获取一行。它的行为类似于 input(),但每次调用的开销要小得多。

import sys
line = sys.stdin.readline()

注意换行符

readline() 会保留末尾的换行符。请调用 .strip() 在解析数值前将其移除。

n = int(sys.stdin.readline().strip())

一次性读取全部内容

要实现最快的读取,可以使用 sys.stdin.read() 一次性获取全部输入,然后自行处理文本。

data = sys.stdin.read()

切分整个数据块

调用 read() 后,使用 .split() 将所有标记转换成一个扁平列表。空白和换行符会被统一处理。

tokens = sys.stdin.read().split()

重新绑定 input 以提升速度

一种常见技巧是让 input 指向 readline,这样旧代码无需改动,运行速度却会更快。

import sys
input = sys.stdin.readline

什么时候 input() 完全够用

如果题目只读取少量行,直接使用 input() 就完全够用。大规模输入时再使用快速路径。

Print 也有开销

输出也是同样的道理:调用许多次 print() 会很慢。我们将在之后关于批量处理的课程中解决这个问题。

选择合适的工具

经验法则是:输入规模小,使用 input();输入规模大,切换到 sys.stdin。让工具匹配 N,可以帮助您避免丢分。

快速检查

快速直觉检查一下读取速度。

回顾:快速读取

您已经认识了 sys.stdin,它是 input() 的快速替代方案:逐行使用 readline(),或使用 read().split() 读取全部内容。请根据输入规模选择工具。⚡

常见问题解答

「input() 与 sys.stdin 对决」课时是免费的吗?

是的 — 「input() 与 sys.stdin 对决」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Competitive Programming Academy 课程的其余内容,请升级到 CoddyKit PRO。 Competitive Programming Academy 课程共包含 4 节课。

「input() 与 sys.stdin 对决」这节课中我会学到什么?

了解为什么普通 input() 会在大型测试中拖慢程序 你通过在浏览器中直接运行的动手代码来练习 Competitive Programming Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Competitive Programming Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Competitive Programming Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「input() 与 sys.stdin 对决」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Competitive Programming Academy 课中编写并运行代码吗?

能。每节 Competitive Programming Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. input() 与 sys.stdin 对决
  2. 解析同一行中的多个数字
  3. 正确进行批量输出
  4. 读取 N 行并处理边界情况
← 返回 Competitive Programming Academy