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

如何编写Python函数计算套餐及单品组合的卡路里总量

Python卡路里计算函数实现

完整修改后代码

meals = {"Happy Meal": ["Cheese Burger", "French Fries", "Coca Cola"], "Best Of Big Mac": ["Big Mac", "French Fries", "Coca Cola"], "Best Of McChicken": ["McChicken", "Salad", "Sprite"]}
poor_calories = {"Hamburger": 250, "Cheese Burger": 300, "Big Mac": 540, "McChicken": 350, "French Fries": 230, "Salad": 15, "Coca Cola": 150, "Sprite": 150}

def advanced_calories_counter(meals, calories_dict, item_name):
    # 先判断是不是单独菜品
    if item_name in calories_dict:
        return calories_dict[item_name]
    # 再判断是不是套餐
    if item_name in meals:
        total_cal = 0
        for dish in meals[item_name]:
            total_cal += calories_dict[dish]
        return total_cal
    # 都找不到返回提示
    return "item_name not found"

# 测试用例
print(advanced_calories_counter(meals, poor_calories, "Happy Meal")) # 套餐,输出680
print(advanced_calories_counter(meals, poor_calories, "Cheese Burger")) # 单品,输出300
print(advanced_calories_counter(meals, poor_calories, "Best Of Big Mac")) # 套餐,输出920
print(advanced_calories_counter(meals, poor_calories, "Invalid Item")) # 不存在,输出item_name not found

逻辑说明

  • 优先判断查询项是否为单独菜品:如果在poor_calories的键中,直接返回对应的卡路里数值
  • 若为套餐则遍历套餐对应的菜品列表,累加每个菜品在卡路里字典中的数值得到总和
  • 若查询项既不属于单品也不属于套餐,返回自定义的错误提示

原代码问题说明

  1. 直接合并两个字典的逻辑不可行:meals存储的是套餐到菜品列表的映射,poor_calories存储的是单品到卡路里的映射,合并后同键名会被覆盖,无法实现关联查询
  2. 循环逻辑混乱:重复定义了dish变量,还使用了未定义的value变量,导致无法正常取值计算

内容的提问来源于stack exchange,提问作者Helene

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:15:03