Почему программа не правильно считает элементы массива?

Задача: Дан одномерный массив (список), содержащий 20 элементов. Элементами массива являются случайные целые числа из от -10 до 10. Напишите программу, которая вычисляет сумму первых 10 элементов и произведение последних 10 элементов, а также вычисляет количество положительных элементов.

Мой код:

from random import randint
arrayLen20 = [randint(-10, 10) for i in range(20)]
halfLeftSum = 0
halfRightSum = 0
halfRightMult = 1
positiveNumbersCount = 0
for i, v in enumerate(arrayLen20):
    halfCount = (len(arrayLen20) / 2)
    if (i < halfCount):
    halfLeftSum += v
    if (i > halfCount):
    halfRightSum += v
    halfRightMult *= v
    if v > 0:
        positiveNumbersCount += 1
print(f"Весь массив: {arrayLen20}")
print(f"Сумма первой половины: {halfLeftSum}")
print(f"Сумма второй половины: {halfRightSum}")
print(f"Умножение второй половины: {halfRightMult}")
print(f"Количество положительных числа: {positiveNumbersCount}")

Проблемы:

  1. Сумму второй половины считает не правильно
  2. Умножение второй половины считает не правильно

Ответы (1 шт):

Автор решения: Виктор

В общем Ваш вариант полностью. Без второй суммы, в задаче её нет

from random import randint
arrayLen20 = [randint(-10, 10) for i in range(20)]
halfLeftSum = 0
halfRightMult = 1
positiveNumbersCount = 0

arr_mul = []
arr_sum = []
for i, v in enumerate(arrayLen20):
    halfCount = (len(arrayLen20) // 2)
    if (i < halfCount):
        halfLeftSum += v
        arr_sum.append(v)
    else: #if (i >= halfCount):
        halfRightMult *= v
        arr_mul.append(v)
    if v > 0:
        positiveNumbersCount += 1

# Test mul array
res_mul = 1
for x in arr_mul:
    res_mul = res_mul * x

print(f"Весь массив: {arrayLen20}")
print(f"Сумма первой половины:     {arr_sum} {sum(arr_sum)} == {halfLeftSum}")
print(f"Умножение второй половины: {arr_mul} {res_mul} == {halfRightMult}")
print(f"Количество положительных числел: {positiveNumbersCount}") 
→ Ссылка