SmartQueryРазбор по существуРежимы по кругу: Система, Светлая, Тёмная. Enter или пробел переключают режим. Стрелки выбирают соседний, Home — Система, End — Тёмная.
Языки и платформы

Ввод через пробел в Python: split, числа и ошибки

В Python input() возвращает строку без завершающего перевода строки. Чтобы получить отдельные значения, вызовите split(), а затем явно преобразуйте нужные элементы в числа. Разделение строки само по себе не проверяет её смысл.

Содержание статьи
  1. Что именно считает разделителем split
  2. Завершённый пример: ровно три целых числа
  3. Когда пробел не подходит

Что именно считает разделителем split

text = "  12   7\t-3  "
print(text.split())
# ['12', '7', '-3']
print("a  b".split(" "))
# ['a', '', 'b']

Без аргумента split() объединяет серии пробельных символов, включая табуляцию, и убирает пустые элементы по краям. При явном разделителе " " два соседних пробела создают пустую строку. Для обычного ввода чисел первый вариант удобнее.

Завершённый пример: ровно три целых числа

def read_three_integers(line):
    tokens = line.split()
    if len(tokens) != 3:
        raise ValueError("Нужно ровно три целых числа")
    try:
        return [int(token) for token in tokens]
    except ValueError as exc:
        raise ValueError("Допустимы только целые числа") from exc

try:
    values = read_three_integers(input("Три числа: "))
except (ValueError, EOFError) as exc:
    print("Ввод не принят:", exc)
else:
    print("Сумма:", sum(values))

Для строки 12 7 -3 получится список [12, 7, -3] и сумма 16. Пустая строка, две величины или 1 2.5 3 не проходят проверку. EOFError означает, что источник ввода закончился, а не что пользователь ввёл пустую строку.

Когда пробел не подходит

  • Имя вроде «Анна Мария» нельзя надёжно прочитать обычным split как одно поле. Для таких данных заранее определите формат, например CSV с кавычками.
  • Для дробных чисел выберите float или Decimal и задайте допустимый формат десятичного разделителя.
  • В сетевом сервисе ограничивайте размер входа до разбора. input — удобный пример для терминала, а не готовая схема HTTP-валидации.
  • Не используйте eval для превращения введённого текста в числа: это исполняет выражение вместо проверки данных.

Документация