You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:05:32