【发布时间】:2016-02-22 06:06:44
【问题描述】:
我想构建一个具有以下属性的类 SwitchBoard:
• 当我创建一个交换机时,我应该能够设置它包含的交换机数量。
• 所有开关都应从“关闭”位置开始。
• 如果我打印一个交换机,它应该打印如下内容:“以下开关是 开:0 2 4 6 8"。
• which switch 方法应该返回一个整数列表,表示打开的开关,在 顺序(例如,[1,3,5,7,9])。
• 如果我用 n 作为整数调用 flip(n),它应该翻转第 n 个灯开关的状态。
• 如果我用 n 作为整数调用 flip every(n),它应该翻转每个第 n 个灯开关的状态,开始 在 0。因此,flip every(2) 将翻转开关 0、2、4、6 等。
• 方法reset(),应该关闭所有开关。
• 如果我要求总机拨动一个不存在的开关,什么都不会发生(它不应该崩溃)
所以,我首先构建了一个运行良好的 Lightswitch。
class LightSwitch():
''' A class to reprenset a general light switch'''
def __init__(self, light_state):
if(light_state == 'on'):
mode = True
else:
mode = False
self._state = mode
def __str__(self):
if(self._state == True):
return 'I am on'
if(self._state == False):
return 'I am off'
def turn_on(self):
if(self._state == False):
self._state = not self._state
def turn_off(self):
if(self._state == True):
self._state = not self._state
def flip(self):
self._state = not self._state
对于 SwitchBoard,这就是我所得到的。
class SwitchBoard():
def __init__(self, num_switch):
self.switches = []
for i in range(num_switch):
self.switches.append(LightSwitch('off'))
def __str__(self):
switch_on = ''
switch_on_list = self.which_switch()
for i in range(0, len(switch_on_list)):
switch_on += ' ' + str(switch_on_list[i])
return 'The following switches are on:' + switch_on
def which_switch(self):
switch_on_list = []
for i in range(0, len(self.switches) - 1):
if(self.switches[i] == True):
switch_on_list.append(i)
return switch_on_list
def flip(self, switch_index):
if(switch_index <= len(self.switches) -1 ):
self.switches[switch_index].flip()
def flip_every(self, step):
for i in range(0,len(self.switches), step):
self.flip(i)
def reset(self):
for every_switch in self.switches:
every_switch.turn_off()
if(__name__==("__main__")):
s = SwitchBoard(10)
s.flip(2)
print(s)
print(s.which_switch())
s.flip_every(2)
print(s)
print(s.which_switch())
这行不通。翻转似乎不起作用,我不知道为什么。 请帮忙!
【问题讨论】:
-
在 which_switch 函数中,你错过了它:不是 if(self.switches[i] == True): 而是 if(self.switches[i]._state == True):
-
现在可以使用了!非常感谢!
-
请不要在收到满意答复后删除您的问题。它欺骗了可能从中受益的世界其他地方以及回答者。
标签: python function class boolean