设计一种控制器,该控制器控制绿,红,黄,三种灯循环发光,红灯亮2秒,绿灯亮3秒,黄灯亮一秒
时间: 2024-12-22 12:24:39 浏览: 7
设计这样的控制器,我们可以采用一个简单的定时器和状态机的方式来实现。首先,我们需要定义三个灯的状态变量,分别代表绿色、红色和黄色的灯。我们可以创建一个名为`LightController`的类,并设置三种灯的状态:
```python
class LightController:
def __init__(self):
self.red_status = False
self.green_status = False
self.yellow_status = False
self.current_light = "red" # 初始灯为红色
def start_cycle(self):
while True:
if self.current_light == "red":
self.turn_on_red(2) # 红灯亮2秒
self.current_light = "green"
elif self.current_light == "green":
self.turn_on_green(3) # 绿灯亮3秒
self.current_light = "yellow"
else: # 黄灯
self.turn_on_yellow(1) # 黄灯亮1秒
self.current_light = "red"
def turn_on_red(self, duration):
for _ in range(duration):
print("Red light on.")
time.sleep(1)
self.red_status = not self.red_status # 灯切换状态
def turn_on_green(self, duration):
for _ in range(duration):
print("Green light on.")
time.sleep(1)
self.green_status = not self.green_status
def turn_on_yellow(self, duration):
for _ in range(duration):
print("Yellow light on.")
time.sleep(1)
self.yellow_status = not self.yellow_status
# 使用示例
controller = LightController()
controller.start_cycle()
```
在这个控制器中,`start_cycle()`方法负责按照预设的时间顺序切换灯光。每次灯颜色变化时,相应的函数会被调用,灯会亮起指定的时间然后切换到下一个颜色。当所有灯都完成一轮循环后,控制器会回到初始状态继续。
阅读全文