Напишите программу для вывода суммы всех элементов массива размера N, где N может быть любым целым числом от 1 до 100. (1 \le N \le 100)
Инструкции:
Вы должны взять входную переменную N, обозначающую количество элементов массива. Затем вам нужно ввести элементы массива в одну строку. Мы предоставили код для получения ввода для элементов массива. Вы должны написать логику для добавления элементов массива. Распечатайте сумму. Пример ввода Пример вывода 3 1 2 3 6 Объяснение примера ввода/вывода
Н = 3 Массив = 1 2 3
1 + 2 + 3 = 6
N = int(input())
nums = input()
# Get the input
numArray = map(int, input(),nums.split())
sum_integer = 0
# Write the logic to add these numbers here
for i in range(0,N):
sum_integer = sum_integer[i]
# Print the sum
print (sum_integer)
получение ошибки
Traceback (последний последний вызов): Файл "main.py", строка 7, в numArray = карта (целое, ввод(), nums.split()) EOFError: EOF при чтении строки
что я сделал не так? вопрос от: https://www.codingal.com/competitions/codewars-2021-all-problems/problems/4/
сделано сейчас, что я должен сделать
это сработает?
Тогда вам нужно sum_integer += numArray[i]
, То, что у вас в петле, не имеет смысла.
Да, ваш вариант тоже подойдет.
@TimRoberts все та же ошибка Traceback (последний последний вызов): файл «main.py», строка 12, в <module> sum_integer += numArray[i] TypeError: объект «карта» не может быть подписан
map
метод принимает два аргумента: первый, один из которых является lambda
методом для преобразования одного типа данных в другой тип данных, а второй является iterable
, когда будет выполняться операция первого метода.
перед преобразованием в int
введите, используя filter
, чтобы удалить данные, такие как пробелы
filter(lambda data:len(data.strip(), __iterables__)
После этой операции вызов map(int, __iterables__)
, который преобразует данные из str
в int
для всех значений в __iterables__
, а list(map(...))
преобразует map
в list
.
N = int(input())
# Get the input
nums = input()
numArray = list(map(int,filter(lambda data:len(data.strip())>0,nums.split(' '))))
#print(numArray)
sum_integer = 0
# Write the logic to add these numbers here
for i in range(len(numArray)):
sum_integer += numArray[i]
# Print the sum
print (sum_integer)
~
$ python test.py
3
1 2 3
6
Или что-то вроде этого:
input()
print(sum( list(map(int, filter(lambda data:len(data.strip())>0, input().split(' '))))))
Вы можете объяснить часть карты?
Прочтите его изнутри. Сначала вызовите input
, чтобы прочитать строку ввода, а затем разбейте ее на слова. Затем мы передаем это filter
; цель этого состоит в том, чтобы избавиться от любых пустых строк, если они должны были ввести пробел в начале (" 1 2 3")
. Это оставляет нам список строк. Затем мы передаем его в map
, который будет вызывать int
для каждого string и возвращает набор целых чисел, которые мы преобразуем в список и передаем в sum
.
Я думаю, что этот подход должен работать
arrlen = int(input());#length of the array
ele = [int(x) for x in input().split(' ')];
sumR = 0;
#This loop can be replaced by a simple sumR = sum(ele)
for i in range(arrlen):
sumR+=ele[i];
print(sumR);
Удалите
input(),
из звонкаmap
. Это первый шаг.