【发布时间】:2021-12-31 06:19:42
【问题描述】:
所以我在 Stack Overflow 用户的帮助下做了这个功能,就在这里..
def totalcal(data):
calorie_dict = {}
for el in data:
food, values = el.split(':')
a, b, c = values.split(',')
calories = (int(a) * 5) + (int(b) * 5) + (int(c) * 9)
calorie_dict[food] = calories
return calorie_dict
def rdict(recipes):
recipes_splitted = {}
for r in recipes:
recipe_name, parts = r.split(":")
recipe_parts = {}
for part in parts.split(','):
product, number = part.split('*')
recipe_parts[product] = int(number)
recipes_splitted[recipe_name] = recipe_parts
return recipes_splitted
def recipecal(recipes, data):
for recipe_name in rdict(recipes):
recipe_parts = rdict(recipes)[recipe_name]
calories = 0
for product in recipe_parts:
number = recipe_parts[product]
calories += number * totalcal(data)[product]
return calories
print(recipecal(["Pork Stew:Cabbage*5,Carrot*1,Fatty Pork*10",
"Green Salad1:Cabbage*10,Carrot*2,Pineapple*5",
"T-Bone:Carrot*2,Steak Meat*1"]
,["Cabbage:4,2,0", "Carrot:9,1,5", "Fatty Pork:431,1,5",
"Pineapple:7,1,0", "Steak Meat:5,20,10", "Rabbit Meat:7,2,20"]))
但是,对于recipecal(recipes, data),此函数有效,只有列表中第一个输入的解决方案被打印出来,就像输出只是这个......
22295
这是["Pork Stew:Cabbage*5,Carrot*1,Fatty Pork*10", 的结果,但我的代码忽略了列表中的其余输入。我应该在此处更改什么以使其正常工作??
【问题讨论】:
-
我现在不知道它是否是格式错误,但您的
return calories语句在循环内。所以,它只执行一次! -
基本调试是你自己的责任。你需要找到代码偏离你期望的地方
标签: python list dictionary tuples