✅ Решения заданий

⚡ Решения в двух словах

  • Ответы на вопросы: 1 — b, 2 — b и c, 3 — d, 4 — a.
  • Уникальные элементы: добавлять число в результат только если его там ещё нет.
  • Выше среднего: посчитать sum(numbers) / len(numbers), затем отфильтровать.
  • Повторы: использовать count(), enumerate() и кортеж обработанных значений.

Ответы на вопросы

  • 1 — b: индекс 2 указывает на третий элемент, то есть 3.
  • 2 — b и c: (5,) и tuple([5]) создают кортеж из одного элемента.
  • 3 — d: будет ошибка, потому что элементов три, а переменных две.
  • 4 — a: enumerate() по умолчанию начинает счётчик с 0, а end=" " печатает всё в одну строку.

Решение задачи 1: кортеж уникальных

📄 task_01_unique_tuple.py
numbers = (1, 2, 3, 2, 1, 4, 5, 3, 6)
unique_numbers = tuple()

for number in numbers:
    if number not in unique_numbers:
        unique_numbers += (number,)

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

Логика: начинаем с пустого кортежа. Каждый элемент исходного кортежа проверяем через not in. Если такого элемента ещё нет, создаём новый кортеж с добавленным значением.

Решение задачи 2: кортеж выше среднего

📄 task_02_above_average.py
numbers = (10, 15, 20, 25, 30)
average = sum(numbers) / len(numbers)
greater_than_average = tuple()

for number in numbers:
    if number > average:
        greater_than_average += (number,)

print("Элементы больше среднего:", greater_than_average)

Логика: среднее равно 20. В итоговый кортеж попадают только элементы строго больше среднего: 25 и 30.

Решение ДЗ 1: прогрессия увеличения

📄 hw_01_increasing_progression.py
numbers = (3, 7, 2, 8, 5, 10, 1)
result = (numbers[0],)
max_value = numbers[0]

for number in numbers[1:]:
    if number > max_value:
        result += (number,)
        max_value = number

print("Кортеж по возрастанию:", result)

Логика: первый элемент добавляем сразу, потому что перед ним нет предыдущих значений. Дальше переменная max_value хранит наибольшее значение из уже пройденных. Если текущий элемент строго больше текущего максимума, он становится новым рекордом и добавляется в результат.

Решение ДЗ 2: повторяющиеся элементы

📄 hw_02_repeated_indexes.py
numbers = (1, 2, 3, 4, 2, 5, 3, 6, 4, 2, 9)
processed = tuple()

for number in numbers:
    if numbers.count(number) > 1 and number not in processed:
        indexes = tuple()

        for index, current in enumerate(numbers):
            if current == number:
                indexes += (index,)

        processed += (number,)
        print(f"Индексы элемента {number}:")
        print(*indexes)

Логика: numbers.count(number) > 1 оставляет только повторяющиеся элементы. Кортеж processed не даёт вывести один и тот же элемент повторно. Внутренний цикл с enumerate() собирает все индексы текущего повторяющегося значения.

Проверить по документации: в рабочих проектах для задачи повторов часто используют словари или collections.defaultdict, но в этом уроке решение намеренно ограничено кортежами, циклами и уже знакомыми операциями.