我尝试调用列表中的购物清单的字典值总数,但是错误已经出现并且汇总到10.5而不是7.5,它应该给出列表中项目的总价格,任何列表。
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
# Write your code below!
def compute_bill(food):
total = 0
for item in food:
item = shopping_list(prices[key])
total += item
return total
shopping_list = ["banana", "orange", "apple"]
答案 0 :(得分:3)
您可以使用列表推导...
sum([ prices[s] for s in shopping_list ])
答案 1 :(得分:2)
我假设你想要计算物品清单的总成本。
您的现有代码存在一些问题:
shopping_list[key]
for item in foods
但是您正在分配给item
。这可能不是你想要的。key
之外,代码中的任何位置都不存在prices[key]
我认为你想要compute_bill
函数:
def compute_bill(food):
total = 0
for item in food:
total += prices[item]
return total
然后,您可以使用compute_bill(shopping_list)
调用此方法。此函数现在将返回7.5(这是您要查找的结果)。
答案 2 :(得分:2)
您的代码和其他所有人都忽略了stock
,因此它可以销售的商品多于库存商品;大概这是一个错误,你应该强制执行这个限制。有两种方式:
迭代方法:for item in food:
...检查stock[item]
是> 0,如果是,则添加价格,递减stock[item]
。但是你可以简单地对每个项目计数求和并用库存计算min()。
更多Pythonic和更短:
# Another test case which exercises quantities > stock
shopping_list = ["banana", "orange", "apple", "apple", "banana", "apple"]
from collections import Counter
counted_list = Counter(shopping_list)
# Counter({'apple': 3, 'banana': 2, 'orange': 1})
total = 0
for item, count in counted_list.items():
total += min(count, stock[item]) * prices[item]
或作为单行:
sum( min(stock[item],count) * prices[item] for item,count in Counter(shopping_list).items() )
答案 3 :(得分:0)
您的代码看起来很奇怪,但这样做有效:
def compute_bill(food):
total = 0
for item in food:
total += prices[item]
return total
shopping_list = ["banana", "orange", "apple"] print
compute_bill(shopping_list)
我假设您要使用prices
字词来计算shopping_list
中商品的价格。
如果您需要任何帮助,请问我。