Принятие нескольких входов в логике python - PullRequest
0 голосов
/ 26 мая 2020
if __name__ == '__main__':
n = int(input())

arr = list(map(int, input().rstrip().split()))

Это мой приведенный выше код, который просит меня ввести n числа элементов в массиве.

Однако источник путаницы в том, что, поскольку я новичок в python , Я не могу понять, почему без использования циклов for я могу предоставить несколько значений массивам? Я знаю, что списки используются здесь для преобразования, input () - для получения значения, но это не кажется логичным, что только один оператор ввода может позволить мне ввести 5-6 значений массива! Я знаю, что map используется для перебора изменяемого объекта данной функции!

Другой источник путаницы для меня заключается в том, что если я удалю отсюда rstrip () и split (), я получу ошибку компиляции! Почему так?

arr = list(map(int, input()))

это ошибка:

   ValueError: invalid literal for int() with base 10: ' '

Разве этого количества кода не достаточно для получения целочисленных значений массива? Почему я должен использовать здесь эти строковые методы?

(Примечание: - я знаю, что numpy поддерживает массивы! Здесь используется слово массива, чтобы сообщить вам, о какой проблеме задается)

1 Ответ

2 голосов
/ 26 мая 2020

split разделит ваш ввод на пробельный символ и вернет список, например, для "1 2 3 4 5" вы вернетесь ['1', '2', '3', '4', '5']. Затем этот список используется в map и list, чтобы преобразовать его в список целых чисел, который в конечном итоге сохраняется в arr.

Если вы не используете split, int завершится ошибкой, поскольку int('1 2') не может быть проанализировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...