Вычисление количества положительных, отрицательных элементов и нулей
Сделал всё, кроме вычисления количества положительных, отрицательных элементов и нулей. Проблема такова, что выводятся сами числа, а не их количество. Подскажите, где ошибка в коде. Готовые функции 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 шт):
В вашем коде очень много ненужной фигни. Эта задача запросто решается с помощью встроенных функций python.
Но, насколько я понял, Вы хотите решить задачу через циклы.
ход решения:
Во-первых, Вам не нужно три раза пробегаться циклом по списку, так как это займет больше времени. Все, что Вам нужно завести три переменных, а затем в одном цикле пройтись по элементам и смотреть: если число больше нуля, то к переменной, которая отвечает за количество положительных чисел прибавить единицу; если число меньше нуля, то прибавить единицу к переменной, отвечающей за количество отрицательных чисел; аналогичная ситуация и с числами, равными нулю.
P.S. не люблю решать задачи обучения за кого-то, но думаю, что этого хватит, чтобы решить задачу.
Все операции можно сделать в одном цикле и прибавлять к переменным-счетчикам сразу булевы значения.
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}')
Чисто по приколу вариант кода для подсчёта положительных, отрицательных и нулей с минимумом дублирования собственно кода:
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
