Я не понимаю, почему мы не можем поменять местами переменные с помощью определенного метода - PullRequest
1 голос
/ 29 апреля 2019

У меня есть две переменные, x и y, и я хочу поменять их значения. (Например, если x имеет значение 20, а y имеет значение «принцесса», то после обмена я хочу, чтобы x имел значение «принцесса», а y - значение 20.)

Можете ли вы объяснить, почему код х = у у = х не работает.

Я знаю, как использовать переменную temp и x, y, но я был озадачен, почему вышеуказанный метод не работает. У меня нет кода, кроме

x=y
y=x

Мне просто нужен кто-то, чтобы объяснить, почему вышеописанный метод не работает.

Ответы [ 3 ]

3 голосов
/ 29 апреля 2019

В вашем примере, когда вы присваиваете значение y для x, у вас больше нет ссылки на исходное значение x, поэтому следующая операция не работает.

Попробуйте:

y,x = x,y

Факты и мифы об именах и значениях Python

1 голос
/ 29 апреля 2019

Я объясню на примере:

x = 20 
y = 5 

x = y ---> x is now 5 
y = x ---> y is now 5 too 

Если вы хотите поменять их местами, вам нужно сделать это на python, например ::1004*

x, y = y, x

См. здесь

Edit: Вы упомянули, что хотите присвоить значения «принцесса» - String и 20 - целое число. В (большинстве) языках программирования вы определяете тип данных переменной, и вы не можете назначить целое число переменной, которая была определена как String, и наоборот.

0 голосов
/ 29 апреля 2019

Допустим, x = 5 и y=10.

После выполнения x = y, x = 10 и y = 10.

После выполнения y = x, x still = 10 и y still = 10.

Итак x = y = 10.

Чтобы поменять местами две переменные, в Python есть следующее: используйте x, y = y, x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...