怎样购买合理,分段函数

问题背景:需要购买一批电脑,不同的区间段有不同的价格优惠,已知在0-10台时,每台10元,11-20台时每台9元等一些优惠。求出n台电脑价钱,求出n台电脑的价格,画出来这n台电脑的花费曲线.

import numpy as np
import matplotlib.pyplot as plt
class Cost():
    def __init__(self,info):
        self.info=info
        self.all_cost = []


    def spend(self,need_num):
        if info[0,0]<=need_num<=info[0,1]:
            cost_price=need_num*info[0,2]

        elif info[1, 0] <= need_num <= info[1, 1]:
            cost_price = need_num * info[1, 2]

        elif info[2, 0] <= need_num <=info[2, 1]:
            cost_price = need_num * info[2, 2]

        elif info[3, 0] <= need_num <=info[3, 1]:
            cost_price = need_num * info[3, 2]

        elif info[4, 0] <= need_num <= info[4, 1]:
            cost_price = need_num * info[4, 2]

        elif (need_num>info[4, 1] ):
             print('请输入不大于',info[4, 1],'的值')
        elif (need_num<info[0, 0] ):
            print('请输入大于', info[0, 1], '的值')
        print('花费是',cost_price)
        return cost_price

    def cost_plot(self,num):
        for i in range(1,num+1):
                tep=self.spend(i)
                self.all_cost.append(tep)
        plt.plot(self.all_cost, 'ro-')
        plt.grid()
        plt.grid(color='b', linewidth='0.7', linestyle='--')
        plt.title('cost_graph')
        plt.xlabel('num')
        plt.ylabel('all_cost')
        plt.show()


if __name__ == '__main__':
    info=np.array([
        [1,10,10]
        ,[11,20,9]
        ,[21,30,8]
        ,[31,40,7]
        ,[41, 50,6]
    ])  #价格区间[1,10,8]意思是在购买数量是1到10的时候,单价是8,总价就是8*10
    co=Cost(info)

    need_num = 50 #需要的数量,这个值不能超过info 中最大的数量值
    re=co.cost_plot( need_num)
    #要给定数量区间和单价,以及想要购买的数量

50台电脑的花费曲线,可以看出,在拐点处花费有所下降,在一定的购买范围内,且不考虑浪费的情况下,可以考虑拐点处购买。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值