Python红绿灯程序

问题描述

在日常生活中,我们常常会看到红绿灯,它们用来控制车辆和行人的通行。为了解决交通拥堵问题,我们需要一个程序模拟红绿灯的工作状态。具体来说,当红灯亮时,车辆不能通行;当绿灯亮时,车辆可以通行;当黄灯亮时,车辆需要准备停车。

解决方案

我们可以使用Python编程语言来实现这个红绿灯程序。首先,我们需要定义一个交通灯类,包含红绿黄三种状态的属性和相应的方法。

class TrafficLight:
    def __init__(self):
        self.state = 'red'

    def change_state(self, state):
        self.state = state

    def get_state(self):
        return self.state

    def can_pass(self):
        if self.state == 'red' or self.state == 'yellow':
            return False
        else:
            return True

上述代码中,TrafficLight类有一个state属性,表示交通灯的当前状态,默认为红灯。change_state方法可以改变交通灯的状态,get_state方法返回当前状态,can_pass方法判断是否可以通行。

接下来,我们可以使用以上定义的TrafficLight类来模拟红绿灯的工作状态。我们可以编写一个主程序,通过用户输入来改变交通灯的状态,并输出是否可以通行。

def main():
    traffic_light = TrafficLight()
    while True:
        print("当前状态: " + traffic_light.get_state())
        choice = input("请输入要改变的状态(r/g/y): ")
        if choice == 'r':
            traffic_light.change_state('red')
        elif choice == 'g':
            traffic_light.change_state('green')
        elif choice == 'y':
            traffic_light.change_state('yellow')
        else:
            print("输入无效,请重新输入!")
            continue

        if traffic_light.can_pass():
            print("可以通行!")
        else:
            print("禁止通行!")

在主程序中,我们创建了一个TrafficLight对象,并通过一个无限循环来接收用户的输入。用户可以输入'r'、'g'或'y'来改变交通灯的状态,程序会根据当前状态判断是否可以通行,并输出相应的结果。

状态图

stateDiagram
    [*] --> red
    red --> green : change_state('green')
    green --> yellow : change_state('yellow')
    yellow --> red : change_state('red')
    yellow --> green : change_state('green')
    green --> red : change_state('red')

上述状态图使用mermaid语法表示了交通灯的状态转换关系。初始状态为红灯,当红灯亮时可以切换到绿灯,绿灯亮时可以切换到黄灯,黄灯亮时可以切换到红灯,黄灯也可以直接切换到绿灯,绿灯也可以直接切换到红灯。

序列图

sequenceDiagram
    participant User
    participant TrafficLight

    User->>TrafficLight: change_state('green')
    TrafficLight->>TrafficLight: state = 'green'
    TrafficLight-->>User: 可以通行!

    User->>TrafficLight: change_state('red')
    TrafficLight->>TrafficLight: state = 'red'
    TrafficLight-->>User: 禁止通行!

上述序列图使用mermaid语法表示了用户改变交通灯状态的过程。当用户输入'g'来改变交通灯状态为绿灯时,程序会通过change_state方法将状态改为'green',然后输出"可以通行!"。当用户输入'r'来改变交通灯状态为红灯时,程序会通过change_state方法将状态改为'red',然后输出"禁止通行!"。

结论

通过以上的解决方案,我们成功地实现了一个红绿灯程序,可以模拟红绿灯的工作状态,并根据当前状态判断是否可以通行。这个程序可以帮助我们更好地理解交通灯的工作原理