сумма абсолютных значений элементов, расположенных до последнего нулевого элемента pyton
в массиве состоящем из n веществ. элементов: определить сумму абсолютных значений элементов расположенных до последнего нулевого элемента
Ответы (3 шт):
Автор решения: CrazyElf
→ Ссылка
Да вроде бы всё просто:
- Идёте с конца массива к началу в поисках нулевого элемента
- Как найдёте, дальше складываете абсолютные значения всех попадающихся элементов всё так же идя от этого нулевого элемента к началу
- Выводите эту сумму
В случае, если можно по массиву идти только вперёд, алгоритм чуть сложнее:
- Идёте по массиву, накапливая сумму s1
- Встретив нулевой элемент, копируете s1 в s2
- Переход на первый шаг
- Когда кончается массив, выводите s2
Код сами напишете, на то и задание. Там будут ещё некоторые тонкости.
Автор решения: dresqd
→ Ссылка
Решение примерно такое:
def abs_sum(number_list):
if not (0 in number_list):
raise Exception("Входной массив не содержит нулей")
sum_counter = 0 # сумма чисел до последнего нуля
temp_counter = 0 # темповая сумма, которая добавляется к sum_counter в случае нахождения
for each in number_list:
if each == 0:
sum_counter += temp_counter
temp_counter = 0
else:
temp_counter += abs(each)
return sum_counter
inp_data = [1, 0, 5, 8, 99, -3, -10000, -4, 0 ,5 ,0 , 9999, 0 ,-99999 ]
print(abs_sum(inp_data))
Автор решения: Alexey Trukhanov
→ Ссылка
Переворачиваем список наоборот. Берем индекс первого нулевого элемента. Берем срез от этого индекса до конца перевернутого списка. Берем абсолютные значения всех элементов. Суммируем.
lst = [1,-2,3,0, 4,-5,6,7,0,8,9]
print(sum(map(abs, lst[::-1][lst[::-1].index(0):])))