Базовый синтаксис
Время: 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):
input().split()разбивает строку по пробелам на список строк:['10', '25', '300'].map(int, ...)применяет функциюintк каждому элементу.- Распаковываем в отдельные переменные:
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() без аргументов! По умолчанию он группирует любые последовательности пробелов и табуляций.Лайфхаки на экзамене
- Метод
.strip()убирает невидимые пробелы и символы перевода строки по краям:s = input().strip(). - Для чтения огромных файлов быстрее использовать
sys.stdin.read().split()вместо сотен тысяч вызововinput().