如何按阶梯价格区间计算指定采购数量的累计总成本,求Python最优实现方案
最优实现思路
直接把定价阶梯抽成独立的配置项,后续调整价格、修改区间都不需要改动计算逻辑,可维护性比多分支if-else高很多,代码也更简洁。
具体是把所有阶梯按数量上限从低到高排序,遍历每个阶梯计算对应区间的采购量金额累加即可。
代码实现
def calculate_total_cost(purchase_num: int) -> int: # 定价配置:(数量上限, 单价),按上限升序排列,最后一个阶梯用float('inf')表示无上限 price_tiers = [ (10000, 50), (15000, 40), (30000, 30), (float('inf'), 20) ] total = 0 prev_limit = 0 for curr_limit, price in price_tiers: if purchase_num <= prev_limit: break # 计算当前阶梯覆盖的数量 curr_count = min(purchase_num, curr_limit) - prev_limit total += curr_count * price prev_limit = curr_limit return total
测试验证
你举的16000采购量的测试用例:
print(calculate_total_cost(16000)) # 输出:730000 和示例结果一致
其他测试场景也都可以覆盖:
- 采购量9000:返回 9000*50 = 450000
- 采购量30000:返回 1000050 + 500040 + 15000*30 = 1150000
- 采购量40000:返回1150000 + 10000*20 = 1350000
这个方案的优势非常明显:后续如果要加阶梯、改单价、改区间,只要修改price_tiers里的配置就行,不需要动计算逻辑,也不会出现多分支if-else写多了容易出的边界判断错误。
内容的提问来源于stack exchange,提问作者nb123
相关产品推荐
相关产品推荐

