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

如何按阶梯价格区间计算指定采购数量的累计总成本,求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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:24:05