ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Ввод списка через split в Python

Автор: · Обновлено

Одна строка input может содержать несколько значений. Метод split разделяет её на строковые части, а каждую часть нужно преобразовать в число. Функция map применяет int ко всем элементам, а list собирает результаты.

Полный путь преобразования

parts = input('Числа: ').split()
numbers = list(map(int, parts))

print(numbers)
print('Сумма:', sum(numbers))

Для ввода 7 10 -2 вывод будет:

Числа: 7 10 -2
[7, 10, -2]
Сумма: 15

После split переменная parts равна ['7', '10', '-2']; только map(int, ...) создаёт числа. Запись в одну строку list(map(int, input().split())) делает то же самое, но раздельные шаги удобнее для отладки.

Пустой ввод и неверный токен

Пустая или пробельная строка превращается в пустой список, что допустимо для sum, но не для обращения numbers[0] и вызовов min/max. Токен 2.5 вызовет ValueError при int; если условие допускает дроби, используйте float. Запятая в вводе 1,2 не является пробелом и останется частью токена.

Типичная ошибка — забыть list и попытаться несколько раз использовать объект map. Он выдаёт элементы по мере чтения. В учебном коде явный список проще увидеть и проверить.

Проверка последовательности

Прочитайте целые числа одной строкой и выведите их количество, сумму, первый и последний элементы. Для пустого списка напечатайте «нет данных» вместо индексов. Проверьте «3 8 1», одно число и пустой ввод. Затем считайте числа через запятую, передав ',' в split, и объясните, почему строку «3, 8» полезно дополнительно очищать strip для каждого токена.

Контракт входной строки

Опишите три допустимых формата: числа через произвольные пробелы, числа через запятую и дробные значения. Для каждого выберите split и функцию преобразования. Проверьте ведущие и завершающие пробелы, двойной разделитель и неверный токен. Не объединяйте все варианты в один неясный обработчик: формат должен задаваться условием задачи. Затем напишите функцию parse_integers(text), возвращающую список или выбрасывающую ValueError с исходным проблемным токеном. Сравните пошаговую версию с коротким map и решите, какая удобнее при диагностике пользовательского ввода.

Практикум: валидация количества введённых чисел

Первая строка содержит n, вторая — числа через пробел. Преобразуйте их через split и map, затем проверьте, что длина совпадает с n. Протестируйте лишние пробелы, отрицательные значения, меньше и больше элементов, чем заявлено, а также текст вместо числа. Не начинайте вычисления до успешной валидации формата. После проверки найдите сумму и максимум. Сообщение об ошибке должно показывать ожидаемое и фактическое количество, не выдавая частичный ответ.

Контрольная точка

Почему split() без аргумента удобно обрабатывает несколько пробелов? Сравните промежуточный результат с split(" ") и найдите пустые элементы.

Частые вопросы

map возвращает готовый список?

В Python 3 map создаёт ленивый перебираемый объект. Если нужны длина, индексы или повторные проходы, результат обычно преобразуют в список. Для одного потокового прохода это необязательно.

Источники