DamiRocK

Python: кортежи, распаковка и расстояние между двумя отметками

Храним название и позицию в кортеже, распаковываем значения и вычисляем расстояние. Неизменяемость элементов кортежа и повторное присваивание.

Связанные значения вместе

Кортеж ("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. Упражнение сохранено; свойства ссылок и кортежей уточнены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.