问题背景:需要购买一批电脑,不同的区间段有不同的价格优惠,已知在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台电脑的花费曲线,可以看出,在拐点处花费有所下降,在一定的购买范围内,且不考虑浪费的情况下,可以考虑拐点处购买。