Ввод данных: input(), split() и map() в Python для ЕГЭ/ОГЭ: шпаргалка и примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Все разборы Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый синтаксис Время: 5-10 мин input split map sys.stdin

Ввод данных: input(), split() и map()

Тема: Чтение чисел, строк, списков и чтение до конца файла (EOF)
Чтение данных из стандартного ввода и приведение типов — фундаментальный навык для ОГЭ (Задание 6, 15.2) и олимпиадного программирования.

1. Как работает input()

Функция input() всегда считывает ровно одну строку до нажатия Enter и возвращает её как строку (str). Чтобы работать с ней как с числом, необходимо явное приведение типов: int(input()) или float(input()).

2. Чтение нескольких чисел из одной строки: split() + map()

Если во входных данных числа записаны через пробел (например, 10 25 300):

  1. input().split() разбивает строку по пробелам на список строк: ['10', '25', '300'].
  2. map(int, ...) применяет функцию int к каждому элементу.
  3. Распаковываем в отдельные переменные: a, b, c = map(int, input().split()) или превращаем в список: numbers = list(map(int, input().split())).

Разновидности и прототипы задания на экзамене

1. Одно число / строка на строке
Чтение n = int(input()) или s = input().strip().
2. Несколько чисел в одной строке
Распаковка через map(int, input().split()).
3. Массив чисел фиксированной длины
Чтение a = [int(input()) for _ in range(n)].
4. Потоковый ввод до конца файла (sys.stdin)
Чтение неизвестного количества строк через sys.stdin.read().split().

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
Боевой шаблон решения на Python
# === Шпаргалка: Все паттерны ввода данных в Python ===
import sys

# 1. Чтение двух чисел в одной строке (ОГЭ 6, 15.2):
# Входная строка: "15 40"
s, k = map(int, input().split())

# 2. Чтение N строк, в каждой по одному числу:
# n = int(input())
# a = [int(input()) for _ in range(n)]

# 3. Чтение последовательности до нуля (признак окончания — 0):
# sequence = []
# while True:
#     x = int(input())
#     if x == 0:
#         break
#     sequence.append(x)

# 4. Быстрое чтение всего потока данных разом (для больших объемов):
# data = list(map(int, sys.stdin.read().split()))

Типичные ошибки

✕ Не так
# ❌ Ошибка: Попытка сложить числа без приведения int()
a = input() # '10' b = input() # '20' print(a + b) # Выведет '1020' вместо 30!
✓ Так
# ✅ Правильно: Приводить к int():
a = int(input()) b = int(input()) print(a + b) # Выведет 30
✕ Не так
# ❌ Ошибка: Попытка распаковать несовпадающее число переменных
a, b = map(int, input().split()) # Если в строке 3 числа -> ValueError: too many values to unpack
✓ Так
# ✅ Правильно: Сохранять в список, если количество чисел переменно:
arr = list(map(int, input().split()))
ГРОБ

ЛОВУШКА: Пустые строки и лишние пробелы во входных данных

При вызове input().split(' ') подряд идущие пробелы создадут пустые строки '', и int('') выдаст ошибку ValueError.

Как обойти
Вызывайте input().split() без аргументов! По умолчанию он группирует любые последовательности пробелов и табуляций.

Лайфхаки на экзамене

  1. Метод .strip() убирает невидимые пробелы и символы перевода строки по краям: s = input().strip().
  2. Для чтения огромных файлов быстрее использовать sys.stdin.read().split() вместо сотен тысяч вызовов input().
Все разборы заданий Открыть в тренажере СмартКИМ