Объясните, почему программа выводит 4 как для x, так и для y?

#python #swap

#python #обмен

Вопрос:

Это код, который я написал, также я хочу знать, почему x и y не поменяли местами числа?

 x = 3
y = 4
x = y
y = x
print (y)
print (x)
  

Вывод:

 4
4
  

Комментарии:

1. Вы назначаете x=y (который устанавливает x равным 4), затем y=x (который устанавливает y равным 4). Почему он не будет печатать то, что у вас есть? Если вы хотите поменять местами, используйте x,y=y,x .

2. нет, я просто хотел знать, почему. я уже знаю, как поменять местами. Спасибо

Ответ №1:

Ваш код, по сути, делает это:

 x = 3
y = 4
x = y # y is 4
y = x # x is now 4 also
  

Чтобы поменять местами значения, хранящиеся в переменных, у вас обычно должна быть «временная» переменная.

 def swap(x, y):
    temp = x
    x = y
    y = temp
  

Комментарии:

1. Вам не нужно использовать временную переменную. В Python просто x,y=y,x .

2. Вам не нужна временная переменная. x, y = y, x

3. Этот парень новичок, на самом деле это то, что я делал с Javascript. Однако они верны, x, y = y, x . Это параллельное присвоение. Все те, которые будут назначены в переменной, будут сначала выполнены, а затем сохранены в соответствующей переменной.

Ответ №2:

Ваш код присваивает x y, а затем присваивает его обратно.

 x = 3 #x=3
y = 4 #y=4
x = y # x = y = 4 -> x=4
y = x # y = x = 4 -> y=4
  

Если вы хотите поменять местами val, просто сделайте это

 x = 3
y = 4
x,y = y,x
  

Он также работает с любым количеством val

 x=3
y=4
z=5

#you can also assign like this
x,y,z = 3,4,5

x,y,z = y,z,x
#this makes x=4, y=5, z=3