Я создаю класс SwitchBoard со следующими свойствами:Как создать класс (SwitchBoard), который включает и выключает переключатели?
• Когда я создаю коммутатор, я должен быть в состоянии установить количество содержащихся в нем переключателей.
• Все переключатели должны начинаться в положении «выключено».
• Если я печатаю распределительный щит, он должен печатать что-то вдоль линий: «Следующие переключатели: : 0 2 4 6 8».
• Какой метод-коммутатор должен возвращать список целых чисел, представляющих переключатели, которые включены, в пункте (например, [1,3,5,7,9]).
• Если я вызываю flip (n) с n в качестве целого числа, он должен перевернуть состояние n-го переключателя подсветки.
• Если я называю flip каждый (n) с n в качестве целого числа, он должен переворачивать состояние каждого n-го переключателя света, начиная с в 0. Так что переверните каждый (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())
Это не работает. Флип просто кажется не работает, и я не знаю, почему. Пожалуйста, помогите!
В функции __switch вы пропустите его: нет, если (self.switches [i] == True): но если (self.switches [i] ._ state == True): –
Теперь он работает! Спасибо огромное! –
Пожалуйста, не удаляйте свои вопросы после получения удовлетворительного ответа. Он обманывает остальной мир, который может извлечь выгоду из него, и ответчиков. –