Python自学 - 云代码空间
—— python自学——怎么学习python,自学python要多久?python+人工智能+人工智能+人工智能+大数据分析
先说结论:不停在第一排即可,跟着别人走,一看就会。
最近又网传“新版红绿灯”规则,还上了热搜,设计者还被骂下播了?
有网友说:一句话就说清楚了,为什么没明白人?直行、红灯停绿灯行,左右转、红灯停,绿灯、无灯行!
还有的网友表示:是个3x3的九宫格,类似一个魔方。开车的人都惊恐的看着会变出什么花样。。。
下面正文开始:
作为python人,我们可以用python写一个判断是否可走的程序。输入3个信号灯状态,返回是否可左转、直行、右转。
观察上面8个图片,规则总结为一句话:红灯停、绿灯走、左转不亮看直行,右转不红不用停。
翻译成技术语言:
如果要左转,先看第一列,如果都不亮就看第二列的颜色走;
如果要直行,只需要看第二列的颜色走;
如果要右转,红灯不能走,其他情况都可以走。
上代码:
定义3个信号常量
RED = 0 OFF = 1 GREEN = 2
判断是否可以左转
def left(l, m, r): # 左灯红 = 停 if (l == RED): return False # 左灯绿 或 中间绿 = 走 return l == GREEN or m == GREEN
判断是否可以直行
def direct(l, m, r): # 中间绿 = 走 return m == GREEN
判断是否可以右转
def right(l, m, r): # 右灯关 或 右灯绿 = 走 return r >= OFF
现在我们想知道图一的情况是否可以左转,运行
left(RED, RED, RED)
想知道图8的情况是否可右转,运行
right(OFF, RED, OFF)
整个程序的源码:
RED = 0 OFF = 1 GREEN = 2 def left(l, m, r): # 左灯红 = 停 if (l == RED): return False # 左灯绿 或 中间绿 = 走 return l == GREEN or m == GREEN def direct(l, m, r): # 中间绿 = 走 return m == GREEN def right(l, m, r): # 右灯关 或 右灯绿 = 走 return r >= OFF def check(l, m, r): return '左转', left(l, m, r), '直行', direct(l, m, r), '右转', right(l, m, r) if __name__ == '__main__': print(check(RED, RED, RED)) print(check(OFF, GREEN, OFF)) print(check(RED, GREEN, OFF)) print(check(OFF, GREEN, RED)) print(check(GREEN, RED, RED)) print(check(RED, RED, OFF)) print(check(RED, GREEN, RED)) print(check(OFF, RED, OFF))
运行结果:
('左转', False, '直行', False, '右转', False) ('左转', True, '直行', True, '右转', True) ('左转', False, '直行', True, '右转', True) ('左转', True, '直行', True, '右转', False) ('左转', True, '直行', False, '右转', False) ('左转', False, '直行', False, '右转', True) ('左转', False, '直行', True, '右转', False) ('左转', False, '直行', False, '右转', True)
结果与图片一致