print("Из n чисел положительных и отрицательных одинаково.") Программа получает случайные числа, модуль которых не превышает 1000. Как только выпадет 0, надо подвести итог в следующем формате:
Из n чисел ... больше чем ... на k.
или
Из n чисел положительных и отрицательных одинаково.
while (m := randint(-1000, 1000)) != 0:
k1 += m < 0
k2 += m > 0
n += 1
if k1 != k2:
k = abs(k1 - k2)
print(f"Из {n} чисел {('положительных', 'отрицательных')[k1 > k2]} {max(k1, k2)} больше чем {min(k1, k2)} на {k}.")
else:
print(f"Из {n} чисел положительных и отрицательных одинаково.")
while m != 0:
if m < 0:
k1 += 1
else:
k2 += 1
n += 1
m = randint(-1000, 1000)
if k2 > k1:
k = k2 - k1
print(f"Из {n} положительных чисел {k2} больше чем {k1} на {k}.")
elif k1 > k2:
k = k1 - k2
print(f"Из {n} отрицательных чисел {k1} больше чем {k2} на {k}.")
else:
print(f"Из {n} чисел положительных и отрицательных одинаково.")
Исправления включают в себя использование форматирования строк (f-строк) для более читаемого вывода, а также замену if-elif-else для более эффективной проверки условий.
from random import randint
n = k = 0
m = randint(-1000, 1000)
while m:
k += 1 - 2 * (m < 0)
m = randint(-1000, 1000)
n += 1
if k:
r = ['отрицательных', 'положительных']
print(f"Из {n} чисел {r[k > 0]} больше чем {r[k < 0]} на {abs(k)}")
else:
print('Из n чисел положительных и отрицательных одинаково')