Почему программа не правильно считает элементы массива?
Задача: Дан одномерный массив (список), содержащий 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 шт):
Автор решения: Виктор
→ Ссылка
В общем Ваш вариант полностью. Без второй суммы, в задаче её нет
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}")