Answer

Answer

t.me/python_tesst

Ответ:

[0, -4, 1, -5, 0, -4, -2, 0, -3, 4]

[0, 1, 0, 0, 4]

Объяснение:

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

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

Если же элемент не отрицательный, то надо перейти к следующему элементу, т.е. увеличить индекс и при этом не уменьшать длину массива.

Код:

from random import random
a = []
for i in range(10):
  n = int(random()*10) - 5
  a.append(n)
print(a)
i = 0
m = 10
while i < m:
  if a[i] < 0:
    del a[i]
    m -= 1
  else:
    i += 1
print(a)


Report Page