PAT——1020月饼(python)

题目要求

在这里插入图片描述
在这里插入图片描述

题目思路

  1. 计算每种月饼的均价,优先卖出均价最高的月饼
  2. 计算总价格,需要注意,当全部月饼都不够需求时,价格就是当前总价格

题目代码(python)

def mooncake(cakelist,need_cake):    # 输入月饼信息列表,以及需要的月饼数量
    sort_cake = sorted(cakelist,key = lambda item:item['Aver'],reverse = True)    # 将月饼列表中的月饼按照'Aver'关键字对应的值降序排列
    if sort_cake[0]['Save'] >= need_cake:    # 如果均价最高的月饼的库存大于所需要的量
        all_price = (need_cake/sort_cake[0]['Save']) * sort_cake[0]['Price']    # 用需要的/均价最低月饼的库存*均价
        all_price_2 = format(all_price,'.2f')    # 保留两位小数,所以用format转换,得到的是字符串形式
        print(all_price_2)
    elif sort_cake[0]['Save'] < need_cake:    # 如果均价最低的月饼不足以提供所需的量
        needcake2 = need_cake    # 暂存所需量
        sum_price = 0.0    # 初始总价格0
        sum_save = 0.0    # 初始总库存0
        for i in range(0,len(cakelist)):    # 找到需要的月饼种数
            sum_save += sort_cake[i]['Save']    # 总库存量为目前遍历到的所有月饼数
            if sum_save>=need_cake:    # 如果此时的月饼数大于所需要的
                all_price = sum_price+(needcake2/sort_cake[i]['Save'])*sort_cake[i]['Price']    # 计算价格,是前面i-1种月饼总价,加上当前种类月饼所需要的数目的价格
                all_price_2 = format(all_price,'.2f')    # 同样记得转换为二进制
                print(all_price_2)
                return
            else:
                sum_price += sort_cake[i]['Price']    # 如果当前种类月饼数目没有达到所要求的值,就将总价格加上当前月饼的总价格
                needcake2 -= sort_cake[i]['Save']    # 目前的所需月饼数=总月饼数-已包含的月饼数
        if sum(s['Save'] for s in sort_cake) < need_cake:    # 注意考虑该种情况,如果所有月饼库存加起来还达不到所需量,那么价格就是所有价格的和
            print(format(sum(s['Price'] for s in sort_cake),'.2f'))

num_cake,need_cake = map(int,input().split())    # 输入月饼种类和所需要的月饼数目
str_save = str(input())    # 各种月饼的库存
save_cake = str_save.split()    # 以空格为间隔放入列表当中
str_price = str(input())    # 各种月饼的总价格
price_cake = str_price.split()    # 以空格为间隔放入列表当中
cakelist = []    # 存放所有月饼信息的列表
for i in range(0,num_cake):
    savei = float(save_cake[i])    # 将月饼库存均转换为浮点型
    pricei = float(price_cake[i])    # 将月饼价格转化为浮点型
    averi = float(pricei/savei)    # 计算平均值
    cake_dic = {"Save":savei,"Price":pricei,"Aver":averi}    # 组成一个该种类月饼的字典
    cakelist.append(cake_dic)    # 将字典加入列表当中
mooncake(cakelist,need_cake)    # 调用上面的函数
  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值