🏠 Домашнее задание: кортежи

⚡ Кратко

Домашнее задание состоит из двух задач. Первая собирает кортеж элементов, которые больше всех предыдущих значений. Вторая выводит индексы всех повторяющихся элементов.

  • Для первой задачи храните текущий максимум в max_value.
  • Для второй задачи используйте count(), enumerate() и кортеж уже обработанных значений.
  • Не называйте переменную max, чтобы не перекрывать встроенную функцию.

Полный текст задания из LMS

1. Прогрессия увеличения

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

numbers = (3, 7, 2, 8, 5, 10, 1)

Пример вывода:

Кортеж по возрастанию: (3, 7, 8, 10)

2. Повторяющиеся элементы

Напишите программу, которая находит индексы элементов кортежа, встречающихся более одного раза. Вывести сами элементы и их индексы.

numbers = (1, 2, 3, 4, 2, 5, 3, 6, 4, 2, 9)

Пример вывода:

Индексы элемента 2:
1 4 9
Индексы элемента 3:
2 6
Индексы элемента 4:
3 8

Подготовка окружения в VS Code

  1. Создайте папку lesson_24_homework.
  2. Откройте её в VS Code.
  3. Создайте файлы task_01_progression.py и task_02_repeated_indexes.py.
  4. Запускайте каждый файл командой python task_01_progression.py или кнопкой Run Python File.

Задача 1: план решения

  1. Создать исходный кортеж numbers.
  2. Положить первый элемент в результат: он не имеет предыдущих значений.
  3. Запомнить первый элемент как текущий максимум.
  4. Перебирать элементы со второго.
  5. Если текущий элемент больше max_value, добавить его в результат и обновить максимум.
📄 task_01_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)

Проверка задачи 1

Кортеж по возрастанию: (3, 7, 8, 10)

Если результат содержит 2, 5 или 1, значит проверка сравнивает элемент не с максимумом предыдущих значений, а только с соседним элементом.

Задача 2: план решения

  1. Создать исходный кортеж numbers.
  2. Создать пустой кортеж processed для элементов, которые уже выводились.
  3. Для каждого числа проверить, встречается ли оно больше одного раза.
  4. Если число повторяется и ещё не обработано, собрать все его индексы через enumerate().
  5. Вывести число и индексы, затем добавить число в processed.
📄 task_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)

Проверка задачи 2

Индексы элемента 2:
1 4 9
Индексы элемента 3:
2 6
Индексы элемента 4:
3 8

Если один и тот же элемент выводится несколько раз, проверьте, что после вывода вы добавляете его в processed.

Что отправлять

  • Код обеих задач.
  • Скриншот или текст вывода из терминала.
  • Краткое пояснение, как вы используете max_value, count() и enumerate().