如何在不更改原始代码的情况下编写以下代码?

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 对象,其值与 abc 和 [= 的值完全不同17=],用于初始化 var,因此对 var 的值所做的更改不会反映在 abcd.

您可以通过将 var 作为元组分配给 abcd 来解压为可迭代对象:

a, b, c, d = var

或者,您可以通过对旋转的元组进行硬编码来简单地自己旋转元组:

a, b, c, d = d, a, b, c