如何使用Python基于订单元组计算配送运费?
配送费计算方案选择解答
结论
最优方案为for循环遍历计算,elif分支判断完全不适用该场景。
原因说明
- 订单包含的商品种类、单个商品的购买数量都是动态可变的,不存在固定的分支判断条件,你不可能穷举所有可能的商品组合、重量组合来写elif分支,强行写分支会导致代码完全不可维护,也无法覆盖所有情况。
- 配送费的计算逻辑天然需要遍历累加所有商品的总重量,才能后续计算费用,遍历是最直接也最高效的实现方式。
计算逻辑梳理
配送费计算可以分为两步:
- 遍历订单所有商品,计算总重量:
总重量 = 所有商品的(购买数量 * 单位重量)之和 - 计算总配送费:
总费用 = 固定费用5000便士 + (总重量 // 100) * 2000便士
(//为整数除法,刚好满足“不足100磅的部分不计入额外重量”的要求)
示例代码实现
def delivery_charges(order): total_weight = 0 # 遍历订单所有商品累加总重量 for name, count, price_per, weight_per in order: total_weight += count * weight_per # 计算总费用 extra_charge = (total_weight // 100) * 2000 return 5000 + extra_charge
代码验证(匹配给出的样例)
delivery_charges({("desk", 1, 11999, 160)})→ 总重量160,160//100=1,总费用5000+2000=7000,符合预期delivery_charges({("desk", 2, 11999, 160)})→ 总重量320,320//100=3,总费用5000+3*2000=11000,符合预期delivery_charges({("lamp", 1, 2399, 2)})→ 总重量2,2//100=0,总费用5000,符合预期delivery_charges({("lamp", 50, 2399, 2)})→ 总重量100,100//100=1,总费用7000,符合预期
内容的提问来源于stack exchange,提问作者user16759613
相关产品推荐
相关产品推荐

