Напишите программу, которая переставляет все нулевые элементы в конец массива, при этом сохраняя порядок ненулевых

Напишите программу, которая переставляет все нулевые элементы в конец массива, при этом сохраняя порядок ненулевых элементов. Введите размер массива в первой строке. Во второй строке введите элементы массива, разделенные пробелами. Гарантируется, что размер массива будет больше 0 и не превышать 10000. Выведите все элементы получившегося массива, разделенные пробелами. Примеры: Введите 6 в первой строке, а затем 1 0 2 0 3 4 во второй строке. Выведите 1 2 3 4.
Юлия

Юлия

Хорошо! Давайте решим эту задачу пошагово.

1. Первым шагом нам нужно получить размер массива. Давайте считаем эту информацию с помощью функции `input()` и сохраняем ее в переменной `n`.

\[
\text{{n}} = \text{{int}}(\text{{input}}())
\]

2. Затем, мы будем принимать элементы массива в виде строки и разделить их по пробелу. Сохраним эти значения в переменную `arr`.

\[
\text{{arr}} = \text{{list}}(\text{{map}}(\text{{int}}, \text{{input}}().\text{{split}}()))
\]

3. Создадим пустой список `non_zero`, в который будем добавлять ненулевые элементы массива.

\[
\text{{non\_zero}} = []
\]

4. Проходимся по каждому элементу `el` в массиве `arr`.

\[
\text{{for}} \ \text{{el}} \ \text{{in}} \ \text{{arr}}:
\]

5. Если `el` не равен нулю, добавляем его в список `non_zero`.

\[
\text{{if}} \ \text{{el}} \neq 0:
\]
\[
\quad \text{{non\_zero.append}}(\text{{el}})
\]

6. Наконец, добавляем нулевые элементы в конец списка `non_zero`.

\[
\text{{non\_zero.extend}}([0] * \text{{arr.count}}(0))
\]

7. Выводим получившийся массив через пробел.

\[
\text{{print}}(*\text{{non\_zero}})
\]

Вот полная программа, реализующая описанное решение:

python
n = int(input())
arr = list(map(int, input().split()))

non_zero = []
for el in arr:
if el != 0:
non_zero.append(el)

non_zero.extend([0] * arr.count(0))

print(*non_zero)


Пожалуйста, проверьте код и дайте мне знать, если у вас возникнут вопросы!
Знаешь ответ?
Задать вопрос
Привет!
hello