Как ввести несколько чисел в одной строке
Два числа через пробел:
a, b = map(int, input().split())
print(a + b)3 47Как это работает:
input()читает строку"3 4";.split()режет её по пробелам на список["3", "4"];map(int, …)применяетintк каждой части;a, b = …раскладывает два значения по двум переменным.
Для дробных чисел — map(float, input().split()).
Сколько угодно чисел — в список
nums = list(map(int, input().split()))
print(nums, sum(nums))5 1 4[5, 1, 4] 10split() без аргумента режет по любому количеству пробелов, поэтому лишние пробелы между числами не мешают.
Ошибки распаковки
ValueError: too many values to unpack— чисел в строке больше, чем переменных слева от=;ValueError: not enough values to unpack— чисел меньше, например все числа набраны в разных строках, а программа ждёт их в одной.
Если количество чисел заранее неизвестно, читайте их в список, как выше.
Числа через запятую
Знак, по которому резать, передают в split. Пробелы после запятых не мешают: int сам их отбрасывает.
nums = list(map(int, input().split(",")))
print(nums)1, 2, 3[1, 2, 3]Сначала количество, потом числа по одному в строке
Частый формат в задачах: в первой строке — сколько будет чисел, дальше каждое число в своей строке.
n = int(input())
nums = [int(input()) for _ in range(n)]
print(max(nums))3
7
2
99Весь ввод сразу
Если числа разбросаны по строкам как угодно, можно прочитать весь ввод целиком и разрезать на части:
import sys
data = sys.stdin.read().split()
nums = list(map(int, data))
print(sum(nums))1 2
3
4 515Так часто читают ввод в олимпиадных задачах. Когда такую программу запускают из терминала и вводят числа с клавиатуры, конец ввода обозначают клавишами Ctrl+D в Linux и macOS или Ctrl+Z и Enter в Windows — иначе программа будет ждать ввода дальше.
Вывод через пробел
Обратная задача — вывести список чисел в одну строку через пробел. Звёздочка перед списком передаёт в print все его элементы по отдельности:
nums = [5, 1, 4]
print(*nums)
print(*nums, sep=", ")
print(" ".join(map(str, nums)))5 1 4
5, 1, 4
5 1 4