Обмен значений переменных

Обмен значений двух переменных - это действие, в результате которого одна переменная принимает значение, равное второй переменной, а вторая - первой.

Три способа решения задачи на языке программирования Python



Если попытаться сделать такой обмен, сначала присвоив первой переменной значение второй, а второй - значение первой, ничего не получится. Допустим, есть две переменные a и b. При этом a = 5 и b = 6. Если выполнить выражение a = b, то переменная a будет хранить число 6, также как и b. Число 5 будет утеряно. После этого выражение b = a теряет смысл, так как b будет присвоено его же текущее значение. В данном случае 6.

Поэтому в программировании при обмене значений переменных обычно вводят третью, играющую роль буфера (буферная переменная). В ней сохраняют значение первой переменной, потом первой присваивают значение второй, a новое значение для второй берут из буфера.

Таким образом классический алгоритм обмена значений двух переменных выглядит так:

a = 5
b = 6

buf = a
a = b
b = buf

Полная версия программы, которая запрашивает ввод двух значений с клавиатуры:

a = input('a: ')
b = input('b: ')

buf = a
a = b
b = buf

print('a =', a)
print('b =', b)

Пример выполнения программы:

a: 91
b: 162
a = 162
b = 91

Есть другой способ, позволяющий не использовать третью переменную, - арифметический. Он подходит только для чисел.

a = 5
b = 7
a = a + b # 12
b = a - b # 12-7=5
a = a - b # 12-5=7

Полная программа:

a = int(input('a: '))
b = int(input('b: '))

a = a + b
b = a - b
a = a - b

print('a =', a)
print('b =', b)

Третий вариант - использовать имеющееся в Python множественное присваивание. При этом обмен значений переменных выполняется одной строкой кода:

>>> a = 10
>>> b = 20
>>> a, b = b, a
>>> a
20
>>> b
10

Почему такое возможно? В Питоне есть такая структура данных как кортеж.

При выполнении a, b = b, a интерпретатор Python сначала получает значения связанные с переменными b и a (правая часть) и помещает их в кортеж, в данном случае получится (10, 20). После этого он связывает каждый элемент кортежа в определенной позиции с переменными в той же позиции, но расположенными слева.

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

>>> a = 14
>>> b = 18
>>> c = 16
>>> a, b, c = c, a, b
>>> a, b, c
(16, 14, 18)
>>> d = 4.56
>>> e = 'hi'
>>> d, e = e, d
>>> d
'hi'
>>> e
4.56


Решение задач на Python




Все разделы сайта