我正在尝试创建一个MarblesBoard类,其中还包含切换和旋转功能。
我的代码如下:
class MarblesBoard():
def __init__(self, balls):
self.balls = balls
def __repr__(self):
return " ".join(str(i) for i in self.balls)
def switch(self):
lst=list(self.balls)
lst[0], lst[1] = lst[1], lst[0]
return lst
def rotate(self):
lst=list(self.balls)
lst = lst[1:]+lst[:1]
return self.balls
输出应该像:
>>> board = MarblesBoard((3,6,7,4,1,0,8,2,5))
>>> board
3 6 7 4 1 0 8 2 5
>>> board.switch()
>>> board
6 3 7 4 1 0 8 2 5
>>> board.rotate()
>>> board
3 7 4 1 0 8 2 5 6
>>> board.switch()
>>> board
7 3 4 1 0 8 2 5 6
但是,当我使用切换或旋转功能时,它可以称为原始球列表。不知道如何解决这个问题。
答案 0 :(得分:1)
您实际上并没有修改const maxIndex = (a) => {
const max = Math.max(...a);
return a.indexOf(max);
};
console.log(maxIndex([0, -1, -2]));
console.log(maxIndex([]));
console.log(maxIndex([30, 50, 40]));
,只是返回了已修改的列表。
如果您希望保持方法基本相同,并继续使用元组,则可以通过执行以下操作来更改self.balls
的定义,以将更改实际写入switch()
:>
self.balls
同样,您可以将 def switch(self):
lst=list(self.balls)
lst[0], lst[1] = lst[1], lst[0]
self.balls = tuple(lst)
更改为以下内容:
rotate()
答案 1 :(得分:0)
您的方法正在返回列表。如果要修改对象,则必须更改self.balls
而不是return
。像这样:
class MarblesBoard:
def __init__(self, balls):
self.balls = balls
def __repr__(self):
return " ".join(str(i) for i in self.balls)
def switch(self):
self.balls[0], self.balls[1] = self.balls[1], self.balls[0]
def rotate(self):
self.balls = self.balls[1:] + self.balls[:1]