✅ Решения

⚡ Кратко

Сначала сравните своё решение с идеей, а не с каждой строкой.

Если код отличается, проверьте поведение на тех же входных данных.

Решение считается хорошим, если оно понятно, проходит пример и не зависит от случайного порядка вывода.

Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.

Решение 1. Список квадратов

end = 20
squares = [number ** 2 for number in range(1, end + 1) if number % 2 == 0]
print(squares)

Фильтр оставляет только чётные числа.

Решение 2. Фильтрация по символу

words = ["apple", "cherry", "kiwi", "banana", "orange"]
excluded_char = "r"
filtered_words = [word for word in words if excluded_char not in word]
print(filtered_words)

Проверка not in работает для строк.

Решение 3. Группы слов

words = ["apple", "banana", "kiwi", "cherry", "pear", "grape", "melon"]
groups = []

for length in sorted({len(word) for word in words}, reverse=True):
    group = sorted([word for word in words if len(word) == length])
    groups.append(group)

print("Группы слов:", groups)

set длин убирает повторяющиеся ключи группировки.

Решение 4. Сравнение матриц

matrix1 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
matrix2 = [
    [1, 0, 3],
    [0, 5, 0],
    [7, 0, 9],
]

n = len(matrix1)
main_equal = all(matrix1[i][i] == matrix2[i][i] for i in range(n))
secondary_equal = all(matrix1[i][n - 1 - i] == matrix2[i][n - 1 - i] for i in range(n))

print("Совпадают ли главные диагонали:", main_equal)
print("Совпадают ли побочные диагонали:", secondary_equal)

Индексы диагоналей вычисляются от i.

Решение 5. Охота за сокровищами

chest1 = {"золото", "серебро", "рубины", "алмазы"}
chest2 = {"серебро", "рубины", "изумруды", "сапфиры"}

print("Только в первом сундуке:", chest1 - chest2)
print("Общее в обоих сундуках:", chest1 & chest2)
print("Все уникальные драгоценности:", chest1 | chest2)

Операторы множеств напрямую выражают условия задачи.

Решение 6. Уникальные по порядку

numbers = [4, 1, 7, 6, 2, 6, 8, 1, 5, 4]
seen = set()
unique_numbers = []

for number in numbers:
    if number not in seen:
        seen.add(number)
        unique_numbers.append(number)

print("Уникальные:", unique_numbers)

set ускоряет проверку, список сохраняет порядок.

Решение 7. Очередь заказов

from collections import deque

orders = deque(["Pizza", "Burger", "Pasta"])
first_order = orders.popleft()

print("Первый заказ:", first_order)
print(f"Осталось {len(orders)} заказов:")
for order in orders:
    print("-", order)

В интерактивной версии orders заполняется в цикле input(), но логика очереди та же.