交通信号灯切换的规律依次是:红灯过后是绿色,绿灯过后是黄灯,黄灯过后是红灯。请编写一个函数,接收一个表示当前灯颜色的字符串,返回下一个信号灯颜色。
示例:
输入:“red”,输出:“green”
题目难度:简单
题目来源:codewars : Traffic light
def update_light(current: str) -> str:
pass
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
nobugs
4
def update_light(current: str) -> str:
light_list = ['red', 'green', 'yellow']
return light_list[light_list.index(current) + 1] if light_list.index(current) < len(light_list) -1 else light_list[0]
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
2 个赞
def update_light(current: str) -> str:
current_list = ["red", "green", "yellow"]
n = current_list.index(current)
if n >= 2:
return current_list[0]
else:
return current_list[n + 1]
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
def update_light(current):
singals = ["red", "green", "yellow"]
if current == "yellow":
return "red"
return singals[singals.index(current)+1]
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
Python参考题解:
def update_light(current :str) -> str:
lights = ['green', 'yellow', 'red']
index = lights.index(current) + 1
return lights[index % 3]
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
Java参考题解:
// 使用Switch
public class TrafficLights {
public static String updateLight(String current) {
switch (current) {
case "red": return "green";
case "yellow": return "red";
case "green": return "yellow";
default: throw new IllegalArgumentException();
}
}
}
//使用三目表达式
public class TrafficLights {
public static String updateLight(String current) {
return (current.equals("red") ? "green" : current.equals("yellow") ? "red" : "yellow");
}
}
lekaixin
(ALe阿乐)
10
def update_light(current: str) -> str:
list=["red","green","yellow"]
if list.index(current)+1>2:
return list[0]
else:
return list[list.index(current) + 1]
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
def update_light(current: str) -> str:
data = {"red": "green", "green": "yellow", "yellow": "red"}
return data.get(current)
assert update_light("red") == "green"
assert update_light("green") == "yellow"
assert update_light("yellow") == "red"
abyss
(abyss)
13
def solution(light: str):
RGB = ["red", "green", "yellow"]
if light in RGB:
res = RGB.index(light) + 1
if res == 3:
res = 0
return RGB[res]
else:
return RGB[res]
assert solution("red") == "green"
assert solution("green") == "yellow"
assert solution("yellow") == "red"
abyss
(abyss)
14
def solution(light: str):
RGB = ["red", "green", "yellow"]
if light in 'yellow':
return 'red'
return RGB[RGB.index(light) + 1]
assert solution("red") == "green"
assert solution("green") == "yellow"
assert solution("yellow") == "red"
abyss
(abyss)
15
就这个需求而言,写死应该没太大毛病吧,少了判断性能上也会好一点
Huis
16
def update_light(current: str) -> str:
l = ["red", "green", "yellow"]
return l[(l.index(current)+1)%len(l)]