有任务:
我有一块灯板,编号为 0,1,2,...,1023。
每个灯都可以打开或关闭。所有灯最初都是关闭的。第1步:
我从 0 开始翻转所有的灯。
此时,所有的灯都打开了。第 2 步:我从 0 开始每隔一秒翻转一次 Light。
此时,Lights 0,2,4,6,8,... 已关闭。
灯 1,3,5,7,9,... 仍然亮着。第 3 步:我从 0 开始每隔三个灯翻转一次。
所以我翻转灯 0、3、6、9、12,...
也就是说,如果灯打开,我将其翻转为关闭。
如果灯熄灭,我将其打开。...
步骤 1023:
我从 0 开始每隔 1023'rd Light 翻转一次。
所以我翻转 0 和 1023。问题:此时,哪些灯亮,哪些灯熄灭?
这是我的代码:
class Light:
def __init__(self):
self.state = 'OFF'
def turn_on(self):
self.state = 'ON'
def turn_off(self):
self.state = 'OFF'
def flip(self):
if self.state == 'OFF':
self.state = 'ON'
else:
self.state = 'OFF'
def __str__(self):
return str(self.state)
class LightBoard:
def __init__(self, num_lights):
self.light = [Light()] * num_lights
def step(self,i):
for element in self.light:
if self.light.index(element) % i == 0:
self.light[self.light.index(element)] = self.light[self.light.index(element)].flip()
def all_steps(self):
i = 0
while i != len(self.light):
self.light = self.light.step(self.light, i)
i += 1
def __str__(self):
return str(self.light)
我使用了 python 可视化工具,发现 LightBoard 中的 all_steps 不起作用。
AttributeError:“列表”对象没有属性“步骤”
我迷失在纠正它。
请帮助更正/对我的代码发表评论。谢谢!