Глиф Учебники

Как ввести несколько чисел в одной строке

Справочник · Python · 1 минута чтения

Два числа через пробел:

Python
a, b = map(int, input().split())
print(a + b)
Ввод
3 4
Вывод
7

Как это работает:

  1. input() читает строку "3 4";
  2. .split() режет её по пробелам на список ["3", "4"];
  3. map(int, …) применяет int к каждой части;
  4. a, b = … раскладывает два значения по двум переменным.

Для дробных чисел — map(float, input().split()).

Сколько угодно чисел — в список

Python
nums = list(map(int, input().split()))
print(nums, sum(nums))
Ввод
5 1 4
Вывод
[5, 1, 4] 10

split() без аргумента режет по любому количеству пробелов, поэтому лишние пробелы между числами не мешают.

Ошибки распаковки

Если количество чисел заранее неизвестно, читайте их в список, как выше.

Числа через запятую

Знак, по которому резать, передают в split. Пробелы после запятых не мешают: int сам их отбрасывает.

Python
nums = list(map(int, input().split(",")))
print(nums)
Ввод
1, 2, 3
Вывод
[1, 2, 3]

Сначала количество, потом числа по одному в строке

Частый формат в задачах: в первой строке — сколько будет чисел, дальше каждое число в своей строке.

Python
n = int(input())
nums = [int(input()) for _ in range(n)]
print(max(nums))
Ввод
3
7
2
9
Вывод
9

Весь ввод сразу

Если числа разбросаны по строкам как угодно, можно прочитать весь ввод целиком и разрезать на части:

Python
import sys

data = sys.stdin.read().split()
nums = list(map(int, data))
print(sum(nums))
Ввод
1 2
3
4 5
Вывод
15

Так часто читают ввод в олимпиадных задачах. Когда такую программу запускают из терминала и вводят числа с клавиатуры, конец ввода обозначают клавишами Ctrl+D в Linux и macOS или Ctrl+Z и Enter в Windows — иначе программа будет ждать ввода дальше.

Вывод через пробел

Обратная задача — вывести список чисел в одну строку через пробел. Звёздочка перед списком передаёт в print все его элементы по отдельности:

Python
nums = [5, 1, 4]
print(*nums)
print(*nums, sep=", ")
print(" ".join(map(str, nums)))
Вывод
5 1 4
5, 1, 4
5 1 4