Найти тему

Задача: Генерация списка 2.0

Оглавление

Задача

Сложность: ★✩✩✩✩ / ★★★★★

Пользователь вводит число n.

Сгенерировать список data вида [1, 0, 1, 0, ...] в котором будет ровно n элементов.

Примеры

Решение

Необходимо выполнить действие

<добавить 1, добавить 0 в список> n//2 раз.

Оператор // - целочисленное деление
A // B - деление A на B без остатка (сколько в числе А числа B, например 8 // 3 = 2, сколько троек в восьмерке?)
A, B - целые числа - A // B - всегда целое число
-2

Программа корректно работает со всеми четными числами - 2, 4, 6, …

Но при тесте, например, n = 5 получим [1, 0, 1, 0]

При n = 7 получим [1, 0, 1, 0, 1, 0]

При нечетных n всегда получаем n-1 элементов в списке, причем не хватает всегда единицы (так как последний добавляемый элемент - 0)

Усовершенствуем решение так, чтобы оно покрывало все тесты

Оператор % - остаток от деления
A % B - остаток от деления A на B.
10 % 3 = 1, 10 % 5 = 0
A, B - целые числа - A % B - всегда целое число
С помощью % легко првереить четность числа.
Если N % 2 == 0 -> N - четное, иначе - нечетное
Также если A % B == 0, то A делится на B, иначе - нет
-3

Такое решение проходит все тесты

Решение с помощью цикла while

-4

Решение с помощью list comprehension

-5

Предлагайте свои решения в комментарии :)