我的任务是编写一段代码,循环移动四个变量(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
和 d
,用于初始化 var
,因此对 var
的值进行了更改不会反射(reflect)在 a
、b
、c
和 d
的值上。
您可以将 var
解压为可迭代对象,将其分配给 a
、b
、c
和 d
作为元组:
a, b, c, d = var
或者,您可以通过对旋转的元组进行硬编码来简单地自行旋转元组:
a, b, c, d = d, a, b, c
关于python - 如何在不更改原始代码的情况下编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631315/