Ответы на вопросы
- 1 —
b: индекс2указывает на третий элемент, то есть3. - 2 —
bиc:(5,)иtuple([5])создают кортеж из одного элемента. - 3 —
d: будет ошибка, потому что элементов три, а переменных две. - 4 —
a:enumerate()по умолчанию начинает счётчик с0, аend=" "печатает всё в одну строку.
Решение задачи 1: кортеж уникальных
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: кортеж выше среднего
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: прогрессия увеличения
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: повторяющиеся элементы
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, но в этом уроке решение намеренно ограничено кортежами, циклами и уже знакомыми операциями.