Сравнение input() и sys.stdin
Почему обычный input() подводит на больших тестах
«Сравнение input() и sys.stdin» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.
Чему я научусь в уроке «Сравнение input() и sys.stdin»?
Почему обычный input() подводит на больших тестах Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Competitive Programming Academy?
Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Сравнение input() и sys.stdin»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Competitive Programming Academy?
Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сравнение input() и sys.stdin
- Разбор множества чисел в одной строке
- Правильный способ пакетного вывода
- Чтение N строк и крайние случаи