1
class LampRow:
def __init__(self):
self.__state = "0"*8
@property
def state(self):
return self.__state
@state.setter
def state(self, value):
if len(value) == 8:
self.__state = value
else:
self.__state = "0"*8
def show(self):
print("".join("-" if char == "0" else "*" for char in self.__state))
2
class LampRow:
def __init__(self, num_lamps):
self.num_lamps = num_lamps
self.__state = "0"*num_lamps
@property
def state(self):
return self.__state
@state.setter
def state(self, value):
if len(value) == self.num_lamps:
self.__state = value
else:
self.__state = "0"*self.num_lamps
print("error: invalid state string length")
def show(self):
print("".join("-" if char == "0" else "*" for char in self.__state))
3
class LampRow:
def __init__(self, num_lamps):
self.num_lamps = num_lamps
self.__state = "0"*num_lamps
@property
def state(self):
return self.__state
@state.setter
def state(self, value):
if len(value) == self.num_lamps:
self.__state = value
else:
self.__state = "0"*self.num_lamps
print("error: invalid state string length")
def show(self):
print("".join("*" if x == "1" else "o" if x == "2" else "-" for x in self.__state))
Свойство state скрывает внутреннюю переменную __state, которая хранит состояние лампочек. При записи нового значения проверяется, что длина строки состояния равна 8, иначе записываются все нули.
Метод show выводит на экран состояние лампочек, обозначая выключенную лампочку как минус, а включённую – как «*».
Пример:
lamps = LampRow()
lamps.show() --------
lamps.state = "10101010"
print( lamps.state ) 10101010
lamps.show() *-*-*-*-
№2: Дополните класс LampRow из задания A так, чтобы количество лампочек в цепочке можно было задавать в конструкторе.
Пример:
lamps = LampRow( 6 )
lamps.show() ------
lamps.state = "101010"
print( lamps.state ) 101010 lamps.show() *-*-*-
lamps.state = "10101010" # ошибка
print( lamps.state ) 000000 lamps.show() ------
№3: Дополните класс LampRow из задания B так, чтобы лампочки могли гореть одним из двух цветов – красный цвет имеет код 1 и обозначается при выводе как «*», а зелёный цвет имеет код 2 и обозначается как «о».
Пример:
lamps = LampRow( 6 )
lamps.show() ------
lamps.state = "102102"
print( lamps.state ) 102102 lamps.show() *-o*-o
lamps.state = "10201010" # ошибка
print( lamps.state ) 000000 lamps.show() ------