银河出逃时 2021-07-15 16:19 采纳率: 88.2%
浏览 32
已采纳

简单Python题,疑问关于字典

考虑到他的食谱,他可以烤多少蛋糕?
编写一个函数cakes(),该函数接受食谱(对象)和可用成分(也是一个对象)

并返回 Pete 可以烘烤的最大蛋糕数(整数)。
为简单起见,数量没有单位(例如,1 磅面粉或 200 克糖只是 1 或 200)。

对象中不存在的成分可视为 0。
不能改变函数的接收值,此时结果为2

需要您
在此基础上改进1下,主要是不知道两个字典的顺序不一致怎么办

def cakes(recipe, available):
    a = list(zip(recipe,available))
    print(a)
    recipe,available = list(recipe.values()),list(available.values())
    m = recipe.index(max(recipe))
    if len(recipe) > len(available):
        return 0
    res = available[m] // recipe[m]
    for y in recipe[1:]:
        x = [z-y*res for z in available[1:]]
        for i in x:
            if i >= 0:
                return res
            if i < 0:
                res -= 1

print(cakes({"flour": 500, "eggs": 1,"sugar": 200}, {"flour": 1200, "sugar": 1200, "eggs": 5, "milk": 200}))

  • 写回答

1条回答 默认 最新

  • 八云黧 2021-07-15 16:30
    关注

    其实逻辑可以简单点,直接遍历字典recipe的key集合,然后用available[key]去除recipe[key],然后返回除数的最小值。

    def cakes(recipe, available):
        try:
            num = [available[key]//recipe[key] for key in recipe.keys()]
        except KeyError:
            num = 0
        return num
    print(cakes({"flour": 500, "eggs": 1,"sugar": 200}, {"flour": 1200, "sugar": 1200, "eggs": 5, "milk": 200}))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月15日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算