Python初学者如何精简判断颜色混合逻辑的多重if分支代码?
三原色混合程序精简方案
你可以用排序后颜色元组做字典键的方式,完全替换掉所有冗余的if分支,同时天然满足输入顺序不影响结果的要求,精简后代码如下:
mix_rules = { ('red', 'red'): 'Red', ('blue', 'red'): 'Purple', ('red', 'yellow'): 'Orange', ('blue', 'blue'): 'Blue', ('blue', 'yellow'): 'Green', ('yellow', 'yellow'): 'Yellow' } c1 = input("Choose a primary color: ").lower() c2 = input("Choose another primary color: ").lower() print(mix_rules.get(tuple(sorted([c1, c2])), "Invalid"))
逻辑说明
- 不管用户输入两个颜色的顺序如何,
sorted()都会把两个颜色按字母序排列,比如red+blue和blue+red排序后都会得到['blue', 'red'],和字典里的键完全匹配,不需要再写正反两种判断条件 - 字典的
get()方法会自动尝试取值,如果输入的颜色组合不在规则里,直接返回默认值Invalid,不需要额外写分支判断非法输入 - 额外去掉了多余的
str()转换,因为input()的返回值默认就是字符串类型,不需要额外转换
内容的提问来源于stack exchange,提问作者Electriz
相关产品推荐
相关产品推荐

