Неизменяемость кортежей

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом уроке мы подробно разберем одну из ключевых особенностей кортежей (tuples) в Python — их неизменяемость. Вы узнаете, почему кортежи нельзя редактировать так же, как списки, что происходит при попытке изменить элемент, и какие существуют обходные пути для "обновления" данных в кортеже. Мы также рассмотрим нюансы работы с вложенными изменяемыми объектами внутри кортежей. Эти знания помогут вам писать более безопасный и предсказуемый код, избегая распространенных ошибок `TypeError`.

Список тем

Создание кортежа с одним элементом

id: 40014_task_tuple_1

Чтобы Python распознал переменную как кортеж, а не как число в скобках, при создании кортежа из одного элемента необходимо поставить специальный знак. Допишите код.

Заполните пропуски
# Это просто число
num = (50) 

# А это должен быть кортеж
my_tuple = (50 input1S )

print(type(my_tuple))
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что произойдет при попытке изменения?

id: 40014_task_tuple_2

Мы создали кортеж `numbers`. Проанализируйте код, где происходит попытка присвоить новое значение одному из элементов. Что выведет программа?

Выберите правильный вариант ответа
numbers = (1, 2, 3)
numbers[1] = 99
print(numbers)
Сообщения
Проверить
Показать подсказку

Операции с кортежами

id: 40014_task_tuple_3

Распределите строки кода на две группы: те, что выполнятся успешно, и те, что вызовут ошибку из-за неизменяемости кортежей. Представьте, что `t = (1, 2, 3)`.

Перетяните элементы в соответствующие блоки
Допустимо
Вызовет ошибку
print(t[0])
t[0] = 5
del t[1]
new_t = t + (4,)
t.append(4)
x = len(t)
t.sort()
Сообщения
Проверить
Показать подсказку

Исправьте ошибку добавления элемента

id: 40014_task_tuple_4

У кортежей нет метода `.append()`. Чтобы "добавить" элемент, нужно создать **новый** кортеж, объединив старый с новым элементом. Исправьте строку с ошибкой.

Найдите ошибку и исправьте
colors = ('red', 'green')
colors.append('blue')
print(colors)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Изменяемое внутри неизменяемого

id: 40014_task_tuple_5

Кортежи неизменяемы, но если внутри кортежа лежит список, можно ли изменить этот список? Посмотрите на код и выберите правильный вывод.

Выберите правильный вариант ответа
# Кортеж содержит число и список
box = (100, ['A', 'B'])

# Пытаемся изменить список внутри кортежа
box[1].append('C')

print(box)
Сообщения
Проверить
Показать подсказку

Обходной путь: изменение через список

id: 40014_task_tuple_6

Чтобы добавить элемент или изменить значение в кортеже, часто используют конвертацию в список и обратно. Расставьте строки кода в правильном порядке, чтобы заменить `'cat'` на `'lion'` в кортеже `zoo`.

Расставьте строки в правильном порядке
temp_list = list(zoo)
temp_list[1] = 'lion'
zoo = tuple(temp_list)
zoo = ('dog', 'cat', 'bird')
print(zoo)
Сообщения
Проверить
Показать подсказку

Методы кортежей

id: 40014_task_tuple_7

Так как кортежи неизменяемы, у них очень мало методов. Сопоставьте методы и функции с их описанием.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Возвращает количество вхождений элемента в кортеж
Возвращает индекс первого вхождения элемента
Возвращает количество элементов в кортеже (функция)
.count()
.index()
len()
Сообщения
Проверить
Показать подсказку

Защита данных от изменений

id: 40014_task_tuple_8

Соберите код, который использует кортеж для хранения настроек программы (чтобы их случайно не изменили). Если настройки пытаются изменить, код должен перехватить ошибку. Одна строка лишняя (с неправильным синтаксисом обработки ошибок).

Перетяните в правильном порядке строки из одного блока в другой
except TypeError:
settings = ('localhost', 8080)
try:
    settings[1] = 9090
    print("Настройки защищены!")
except ValueError:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Умножение кортежей

id: 40014_task_tuple_9

Оператор `*` работает с кортежами как оператор повторения. Какой будет результат работы функции `len()` для переменной `result`? Введите число.

Что должно получиться?
pair = (0, 1)
result = pair * 3
print(len(result))
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру