Python猜发色代码优化:替代多elif语句的方案求助
优化发色猜测代码的多elif写法
你的代码功能正常,但大量elif语句会导致代码可读性差、维护困难。这里推荐用字典映射的方式重构,既符合规范,也更易扩展:
重构后的代码
def get_hair_color(parent1, parent2): # 定义发色组合与结果的映射,键为(父方发色, 母方发色)的元组 color_mapping = { ('orange', 'orange'): 'orange hair', ('red', 'brown'): 'deep golden brown hair', ('brown', 'black'): 'dark brown hair', ('brown', 'brown'): 'brown hair', ('brown', 'blonde'): 'golden brown hair', ('black', 'red'): 'dark red hair', ('blonde', 'black'): 'brown hair', ('blonde', 'blonde'): 'blonde hair', ('black', 'black'): 'black hair', ('black', 'orange'): 'brown hair', ('brown', 'orange'): 'copper blonde hair', ('red', 'blonde'): 'strawberry blonde hair', ('red', 'orange'): 'ginger beer hair', ('blonde', 'orange'): 'light orange hair', ('red', 'red'): 'red hair' } # 从映射中获取结果,找不到则返回错误信息 return color_mapping.get((parent1, parent2), 'ERROR 404 HAIR COLOR NOT FOUND!') # 交互逻辑 print('hair color') print('colors: black,brown,red,blonde,orange') user_input1 = input('enter hair color 1:') user_input2 = input('enter hair color 2:') # 调用函数并打印结果 print(get_hair_color(user_input1, user_input2))
优化说明
- 用字典存储所有发色组合规则,查找操作时间复杂度为O(1),比多elif的O(n)更高效
- 新增或修改发色规则时,只需在字典中添加/修改键值对,无需改动逻辑代码,维护性大幅提升
- 把核心逻辑封装到函数中,代码结构更清晰,也方便后续复用这段逻辑
内容的提问来源于stack exchange,提问作者Fatima Asim
相关产品推荐
相关产品推荐

