Напишите функцию, которая будет принимать список целых чисел и возвращать сумму положительных или отрицательных чисел из этого списка или же количество нулей в списке — смотря по тому, какая из сумм будет больше в абсолютном выражении.
Например, если передан список [1, 2, 3, 4, 0, 0, -3, -2], функция вернет 10, потому что:
- сумма положительных чисел = 1 + 2 + 3 + 4 = 10
- сумма отрицательных чисел = (-3) + (-2) = -5
- количество нулей = 2
- 10 > 5 и 10 > 2
Исходим из того, что пустых списков не будет, а числа всегда будут целыми.
Примеры
major_sum([1, 2, 3, 4, 0, 0, -3, -2]) ➞ 10 major_sum([-4, -8, -12, -3, 4, 7, 1, 3, 0, 0, 0, 0]) ➞ -27 major_sum([0, 0, 0, 0, 0, 1, 2, -3]) ➞ 5 # Потому что -3 < 1+2 < 5 # (5 - количество нулей)
Варианты решения
def major_sum(lst): pos, neg, zero = 0, 0, 0 for n in lst: if n > 0: pos += n elif n < 0: neg += n else: zero += 1 return max(pos, neg, zero, key=abs)
def major_sum(lst): pos = sum([i for i in lst if i > 0]) neg = sum([i for i in lst if i < 0]) zero = lst.count(0) if abs(neg) > pos and abs(neg) > zero: return neg else: return max(pos, zero)