Как я могу попросить n и набрать n чисел только в одной строке - PullRequest
0 голосов
/ 11 ноября 2018

Обычный способ ввода n чисел - сначала запросить n, а затем ввести n чисел в разных строках.

n = int(input())
for i in range(n):
    x = int(input())

Как я могу попросить n и набрать n чисел только в одной строке.

Примерно так:

>> 4 1 2 3 4

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Возможно, вы можете попробовать обработать весь ввод в виде строки. Затем преобразовать их в целые числа. В этом случае вам также не нужно указывать значение n.

>>> x = [int(y) for y in input().split()]
1 2 3 4
>>> x
[1, 2, 3, 4]

Затем вы можете работать со значениями, просматривая список. Если вам нужно значение n, просто получите длину списка.

>>> n = len(x)
>>> n
4
0 голосов
/ 11 ноября 2018

Как я могу попросить n и набрать n чисел только в одной строке.

Вам не нужно запрашивать n , если из входных данных, разделенных пробелами, очевидно, сколько у вас целых чисел.

Однако, если формат входной строки не подлежит обсуждению, вы можете разделить последовательность распаковкой:

n, *num_list = map(int, input().split())

Например, при вводе '4 1 2 3 4' вы получите следующий результат:

print(n, num_list)

4 [1, 2, 3, 4]

Чтобы понять вышеуказанную логику:

  1. input().split() разбивает строку ввода по пробелам в список.
  2. map(int, X) возвращает повторяемость из int, примененную к каждому элементу в X.
  3. 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'
0 голосов
/ 11 ноября 2018
space_separated_numbers = input()
num_list = [int(x) for x in space_separated_numbers.split()]

Хитрость заключается в том, чтобы сразу взять весь ввод в виде строки, а затем разбить его самостоятельно.

РЕДАКТИРОВАТЬ: Если вас интересует только получение первого числа, просто получите первое значение.

space_separated_numbers = input()
num = space_separated_numbers.split()[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...