Ввод списка через 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 создаёт ленивый перебираемый объект. Если нужны длина, индексы или повторные проходы, результат обычно преобразуют в список. Для одного потокового прохода это необязательно.