Связанные значения вместе
Кортеж ("Alice", 20, 4.8) объединяет несколько значений в определённом порядке. Доступ возможен по индексу, начиная с нуля, или через распаковку. Кортеж определяется прежде всего запятыми: для одного элемента требуется (10,), а (10) — просто число в скобках.
Задание источника
Две точки маршрута заданы названием города и отметкой от начала. Используйте учебные значения, не принимая их за географическую справку:
city_a = ("Moscow", 10)
city_b = ("Saint Petersburg", 644)
name1, km1 = city_a
name2, km2 = city_b
distance = km2 - km1
print(f"From: {name1}")
print(f"To: {name2}")
print(f"Distance: {distance} km")
Результат — направления Moscow, Saint Petersburg и Distance: 634 km. При данных условия вторая отметка больше первой. Для произвольного порядка точек модуль разности был бы отдельным обобщением задачи.
Порядок распаковки
В name1, km1 = city_a первое значение попадает в первое имя, второе — во второе. В обычной распаковке без звёздочки число имён должно совпадать с числом элементов. Имена не определяют смысл автоматически: перестановка имён может связать переменную расстояния со строкой.
Неизменяемость и ссылки
Заменить city_a[0] присваиванием нельзя. Чтобы обновить запись, создают другой кортеж и присваивают его переменной. Старый объект не обязан стать недоступным, если на него сохраняется другое имя; это уточнение к формулировке источника.
Неизменяемость кортежа означает невозможность заменить его элементы. Если элемент сам является изменяемым объектом, например списком, это не делает содержимое списка неизменяемым. В текущем упражнении используются только строки и целые числа.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнение сохранено; свойства ссылок и кортежей уточнены.