сумма абсолютных значений элементов, расположенных до последнего нулевого элемента 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):])))
→ Ссылка