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

2024-06-16 13:03:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是编写一个循环移位四个变量(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

Tags: the代码importthatvarcodecollectionsgiven
1条回答
网友
1楼 · 发布于 2024-06-16 13:03:26

您正在旋转var,这是一个deque对象,其值与abcd的值完全不同,您使用它来初始化var,因此对var的值所做的更改不会反映在abcd的值上

您可以通过将abcd指定为元组,将var解包为一个iterable:

a, b, c, d = var

或者,您也可以通过硬编码旋转的元组,自己旋转元组:

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

相关问题 更多 >