我正在尝试创建一个包含切换和旋转功能的 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
但是,当我使用切换或旋转时,它会减少调用原始球列表。不知道如何解决这个问题。
最佳答案
您实际上并没有修改 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()
更改为如下所示:
def rotate(self):
lst=list(self.balls)
lst = lst[1:]+lst[:1]
self.balls=tuple(lst)
关于python - 气泡排序开关和旋转挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52940093/