filmov
tv
Поменять местами значения переменных в 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'.
Тут могут быть любые объекты, не обязательно числа.
На самом деле это выражение достаточно сложно выполняется интерпретатором Питона. Сначала происходит упаковка данных в кортеж, потом распаковка и сопоставление переменным.
Если мы напишем просто несколько переменных через запятую, то интерпретатор нам их упакует в кортеж.
Присвоим его переменной.
Когда происходит присваивание кортежа нескольким переменным, выполняется обратное действие, то есть распаковка кортежа. И каждой переменной присваивается свое значение.
Допустим, у нас есть такая программа. Пользователь вводит значения двух переменных, потом мы выводим их на экран.
Пока обмена не происходит, какие значения переменным были присвоены, с теми они и выводятся.
Но нам надо, чтобы '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'.
Тут могут быть любые объекты, не обязательно числа.
На самом деле это выражение достаточно сложно выполняется интерпретатором Питона. Сначала происходит упаковка данных в кортеж, потом распаковка и сопоставление переменным.
Если мы напишем просто несколько переменных через запятую, то интерпретатор нам их упакует в кортеж.
Присвоим его переменной.
Когда происходит присваивание кортежа нескольким переменным, выполняется обратное действие, то есть распаковка кортежа. И каждой переменной присваивается свое значение.