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

如何使用循环避免条件判断语句中的重复代码逻辑

优化方案

你这段重复的分支逻辑完全可以通过「预构建选项映射+通用逻辑复用」的方式重构,不需要写冗余的多分支判断,也不需要硬编码索引。

原有代码的问题

  • 8个分支的执行逻辑100%重复,仅取商品的索引不同,后续增删商品需要修改大量重复代码,极易出错
  • 每次进入分支都重复执行list(dairyDict.keys())、list(dairyDict.values())做字典到列表的转换,存在不必要的性能开销
  • 依赖字典的插入顺序匹配索引,在Python3.7以下版本中字典默认无序,会出现商品匹配错误的问题
  • 没有处理非法输入的场景,用户输错编码时程序无任何反馈

重构步骤

  1. 先在业务初始化阶段(只需要执行1次)构建选项ID到商品信息的映射表,彻底避免重复的类型转换和索引硬编码:
# 一次性提取乳制品分类下的所有商品,生成选项映射
dairy_items = list(dairyDict.items())
item_option_map = {}
for index, (item_key, item_price) in enumerate(dairy_items):
    # 按原有规则生成选项ID:A1对应第1个商品,A2对应第2个,以此类推
    option_code = f"A{index + 1}"
    # 按原有逻辑截取商品名(去掉key前4位的分类前缀)
    item_name = item_key[4:]
    item_option_map[option_code] = (item_name, item_price)
  1. 把原来所有if-elif分支全部替换为下面的通用逻辑,功能和原有代码完全一致:
if itemInput in item_option_map:
    quantityInput = input('Please state quantity of item: ')
    product_name, product_price = item_option_map[itemInput]
    # 按原有格式拼接购物车条目
    shoppingList.append(
        f"Product:{product_name} -- Quantity: {quantityInput} -- Price: ${float(product_price):.2f}"
    )
    additionalitemcategoryPrompt(quantityInput)
else:
    # 可选:增加非法输入提示,原有代码无该逻辑,不需要可以删除
    print("无效的商品编码,请重新输入")

重构收益

  • 代码量压缩80%以上,后续新增/删除乳制品商品时,只需要修改dairyDict的内容,映射表会自动生成对应选项,不需要修改任何判断逻辑
  • 仅做1次字典转列表的操作,性能更好
  • 逻辑更清晰,不存在重复代码,排查问题时不需要逐分支核对
  • 补充了非法输入的处理,交互体验更好

内容的提问来源于stack exchange,提问作者Raj Boi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:12:19