2016-08-02 8 views
-1

Я новичок, берущий курс «Вступление» в компьютерную науку. У нас был довольно простой вопрос в нашей викторине об обмене ценностями, и я не совсем понимаю. Возникает вопрос:Обмен значениями в assignemnt

Какая из следующих последовательностей инструкций оставляет значение переменной X таким же, как оно было до операторов. Предположим, что и а, и х относятся к целым значениям перед этим кодом.

Почему это правда?

a,x = x,a 
a,x = x,a 

Например, если у меня есть:

a,x = 4,5 

затем а = 4 и х = 5

Для второй части:

a,x = 5, 4 

то а = 5 и x = 4 Итак, x не равен тому, что было раньше. Может кто-нибудь объяснить, почему это так?

+0

Кроме того, для обоих утверждений вы должны выполнить 'a, x = x, a', не заменяя' x' и 'a' произвольными целыми числами, которые вы выберете. – 3442

+1

Ни одно из утверждений не имеет для них никакой «правды». Это все задания. – dashiell

+0

Потому что он меняет дважды. –

ответ

0

Это просто замена, а затем замена.

>>> a = 2 
>>> x = 1 
>>> a,x = x,a # We swapped them, so a = 1 and x = 2 now 
       # During evaluation, this statement will be equivalent to "a,x = 1,2" 
>>> a,x = x,a # And now we swap them again, so they're back to their original values 
       # During evaluation, this statement will be equivalent to "a,x = 2,1" 
>>> a 
2 
>>> x 
1 

Кажется, что вам не хватает, что значения меняются посередине. Вы не можете пройти в начале и заменить все вхождения x и a с 4 и 5 в вашем примере, потому что x и a изменение в середине операции.

+0

Спасибо! Теперь я понимаю. – johnnewbie

0

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

Так

a, b = 4, 5 

вы назначаете от 4 до a и 5 к b. Затем

a, b = b, a 

присваивает 5 (текущее значение b) к a и 4 (текущее значение a) к b.

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

Смежные вопросы