如何在不更改原始代码的情况下编写以下代码?
How do I code the following without changing the original code?
我的任务是编写一个循环移位四个变量 (a,b,c,d) 值的代码。我不允许使用多个新变量来完成任务。例如,如果(a,b,c,d)的变量值最初分别为11、21、31和41,那么(a,b,c,d)的最终值应该是41、11、21和分别为 31 个。我也不允许更改原始代码。
# given code
a = 11
b = 21
c = 31
d = 41
print('before rotation: a =', a, 'b =', b, 'c =', c, 'd =',d)
# the code that i wrote
import collections
var = collections.deque([a, b, c, d])
var.rotate(1) # to the right
# given code
print('after rotation: a =', a, 'b =', b, 'c =', c, 'd =', d)
我希望输出为:
before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 41 b = 11 c = 21 d = 31
但我得到了:
before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 11 b = 21 c = 31 d = 41
您正在旋转 var
,一个 deque
对象,其值与 a
、b
、c
和 [= 的值完全不同17=],用于初始化 var
,因此对 var
的值所做的更改不会反映在 a
、b
、c
和 d
.
您可以通过将 var
作为元组分配给 a
、b
、c
和 d
来解压为可迭代对象:
a, b, c, d = var
或者,您可以通过对旋转的元组进行硬编码来简单地自己旋转元组:
a, b, c, d = d, a, b, c
我的任务是编写一个循环移位四个变量 (a,b,c,d) 值的代码。我不允许使用多个新变量来完成任务。例如,如果(a,b,c,d)的变量值最初分别为11、21、31和41,那么(a,b,c,d)的最终值应该是41、11、21和分别为 31 个。我也不允许更改原始代码。
# given code
a = 11
b = 21
c = 31
d = 41
print('before rotation: a =', a, 'b =', b, 'c =', c, 'd =',d)
# the code that i wrote
import collections
var = collections.deque([a, b, c, d])
var.rotate(1) # to the right
# given code
print('after rotation: a =', a, 'b =', b, 'c =', c, 'd =', d)
我希望输出为:
before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 41 b = 11 c = 21 d = 31
但我得到了:
before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 11 b = 21 c = 31 d = 41
您正在旋转 var
,一个 deque
对象,其值与 a
、b
、c
和 [= 的值完全不同17=],用于初始化 var
,因此对 var
的值所做的更改不会反映在 a
、b
、c
和 d
.
您可以通过将 var
作为元组分配给 a
、b
、c
和 d
来解压为可迭代对象:
a, b, c, d = var
或者,您可以通过对旋转的元组进行硬编码来简单地自己旋转元组:
a, b, c, d = d, a, b, c