Как я могу попросить n и набрать n чисел только в одной строке.
Вам не нужно запрашивать n , если из входных данных, разделенных пробелами, очевидно, сколько у вас целых чисел.
Однако, если формат входной строки не подлежит обсуждению, вы можете разделить последовательность распаковкой:
n, *num_list = map(int, input().split())
Например, при вводе '4 1 2 3 4'
вы получите следующий результат:
print(n, num_list)
4 [1, 2, 3, 4]
Чтобы понять вышеуказанную логику:
input().split()
разбивает строку ввода по пробелам в список.
map(int, X)
возвращает повторяемость из int
, примененную к каждому элементу в X
.
n, *num_list = map(...)
повторяет объект map
и разделяет его на первый и остальные.
Более идиоматично было бы вычислить n
самостоятельно:
num_list = list(map(int, input().split()))
n = len(num_list)
Например, при вводе '1 2 3 4'
вы получите следующий результат:
print(n, num_list)
4 [1, 2, 3, 4]
Единственной целью явного ввода числа является предоставление чека. Это возможно с помощью оператора assert
:
n, *num_list = map(int, input().split())
assert n == len(num_list), f'Check failed: {n} vs {len(num_list)} provided does not match'