Поменять местами значения переменных в Python

Описание к видео Поменять местами значения переменных в Python

Есть такая даже не задача, а скорее упражнение для начинающих, – обменять значения двух переменных. Это значит, надо первой переменной присвоить объект, связанный со второй. А второй, связанный с первой.

Допустим, у нас есть такая программа. Пользователь вводит значения двух переменных, потом мы выводим их на экран.
Пока обмена не происходит, какие значения переменным были присвоены, с теми они и выводятся.
Но нам надо, чтобы 'a' была связана с этим значением, а 'b' – с этим.

Если мы просто присвоим первой переменной значение второй, а второй – значение первой, то обе переменные окажутся связанными со вторым значением.
Потому что когда мы присваиваем 'b' значение 'a', 'a' уже перезаписано и содержит значение 'b'.

Нам надо где-то сохранить исходное значение 'a'. Для этого вводим третью переменную, так называемую буферную или временную. И присваиваем ей значение 'a'.
Теперь значение для переменной 'b' мы берем не из 'a', а из 'temp'. Потому что в 'a' оно уже не то, какое надо.

Способ обмена значений через буферную переменную не единственный.
Если переменные содержат числа, то можно использовать арифметический способ.
В 'a' записывается сумма значений. Если из нее вычесть значение 'b', то получится исходное значение 'a'. Его мы связываем с переменной 'b'.
Теперь если из той же суммы вычесть 'b', которое уже равно исходному 'a', то получим исходное значение 'b'. Оно связывается с переменной 'a'.

Третий способ – это использование особенностей языка Python. В Питоне есть множественное присваивание. Если до знака присваивания стоит несколько переменных, а после знака как бы несколько значений, то происходит сопоставление.
Здесь переменной 'a' будет присвоено значение 'b', а переменной 'b' – значение 'a'.

Тут могут быть любые объекты, не обязательно числа.
На самом деле это выражение достаточно сложно выполняется интерпретатором Питона. Сначала происходит упаковка данных в кортеж, потом распаковка и сопоставление переменным.

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

Текстовое описание решения задачи и исходный код программы: https://younglinux.info/python/task/e...

Больше задач: https://younglinux.info/python/task
Приложение для андроид: https://play.google.com/store/apps/de...
Купить PDF-версию (100 задач): https://younglinux.info/store/store.h...

Комментарии

Информация по комментариям в разработке