Вычисление количества положительных, отрицательных элементов и нулей

введите сюда описание изображения

Сделал всё, кроме вычисления количества положительных, отрицательных элементов и нулей. Проблема такова, что выводятся сами числа, а не их количество. Подскажите, где ошибка в коде. Готовые функции sum использовать нельзя.

сам код:

import random
res = [random.randrange(-2000, 5000) for i in range(10)]
print("рандомный списочек чисел: " + str(res))
max1 = res[0]
for ele in res:
    if ele > max1:
        max1 = ele
print("максимальное число: ", max1)
min1 = res[0]
for ele in res:
    if ele < min1:
        min1 = ele
print("минимальное число: ", min1)
i = 0
for i in res:
    if i > 0:
        i += 0
        print(i)
for j in res:
    if j < 0:
        j -= 0
        print(j)
for k in res:
    if k == 0:

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

Автор решения: ionchik

В вашем коде очень много ненужной фигни. Эта задача запросто решается с помощью встроенных функций python.

Но, насколько я понял, Вы хотите решить задачу через циклы.

ход решения:

Во-первых, Вам не нужно три раза пробегаться циклом по списку, так как это займет больше времени. Все, что Вам нужно завести три переменных, а затем в одном цикле пройтись по элементам и смотреть: если число больше нуля, то к переменной, которая отвечает за количество положительных чисел прибавить единицу; если число меньше нуля, то прибавить единицу к переменной, отвечающей за количество отрицательных чисел; аналогичная ситуация и с числами, равными нулю.

P.S. не люблю решать задачи обучения за кого-то, но думаю, что этого хватит, чтобы решить задачу.

→ Ссылка
Автор решения: Alexey Trukhanov

Все операции можно сделать в одном цикле и прибавлять к переменным-счетчикам сразу булевы значения.

import random

res = [random.randrange(-2000, 5000) for i in range(10)]
print("рандомный списочек чисел: " + str(res))
maximum = minimum = res[0]
positives = negatives = zeros = 0
for ele in res:
    if ele > maximum:
        maximum = ele
    if ele < minimum:
        minimum = ele
    positives += ele > 0
    negatives += ele < 0
    zeros += not ele

print(f'Максимум: {maximum}, '
      f'минимум: {minimum}, '
      f'положительных: {positives}, '
      f'отрицательных: {negatives}, '
      f'нулей: {zeros}')
→ Ссылка
Автор решения: CrazyElf

Чисто по приколу вариант кода для подсчёта положительных, отрицательных и нулей с минимумом дублирования собственно кода:

import random

res = [random.randrange(-2000, 5000) for i in range(10)]
print("рандомный списочек чисел: " + str(res))

count = {(1, 0): 0, (0, 1): 0, (0, 0): 0}
for i in res:
    count[(i<0,i>0)] += 1

for name, val in (('Отрицательные', (1, 0)), ('Положительные', (0, 1)), ('Нули', (0, 0))):
    print(f'{name}: {count[val]}')

Пример вывода:

рандомный списочек чисел: [1409, 2509, 4351, 3923, -377, 477, 4803, 2920, 3450, -676]
Отрицательные: 2
Положительные: 8
Нули: 0
→ Ссылка