我是stackoverflow的新手,也是Python或任何编程语言的新手。 我有一个相对简单的问题,但我无法弄清楚如何使它工作。
我需要找出购物清单中商品的总帐单。 购物清单数据在列表中,价格数据在字典中。
shopping_list = ["banana", "orange", "apple"]
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def compute_bill(food):
total = 0
for food in food:
if food in prices:
total += prices[food]
return total
我什么都没回来。
非常感谢提前!
最好的问候IWTLP
答案 0 :(得分:4)
您需要正确缩进return语句。所有计算完成后返回,而不是在for循环的中间。
def compute_bill(foods):
total = 0
for food in foods:
if food in prices:
total += prices[food]
return total # <---
并且,不要忘记调用该函数:
print(compute_bill(shopping_list))
另一个使用generator expression,sum
,dict.get
的版本:
def compute_bill(foods):
return sum(prices.get(food, 0) for food in foods)
<强>更新强>
正如Yoel所建议的那样,我重命名了迭代器food) to
foods`,使其名称与迭代对象的名称不同。
答案 1 :(得分:0)
shopping_list = ["banana", "orange", "apple"]
prices = { "banana": 4, "apple": 2, "orange": 1.5, "pear": 3 }
def compute_bill(shLst):
return sum([price for food,price in prices.items() if food in shLst])
答案 2 :(得分:0)
如果您只想汇总购物车字典中所有商品的所有价值 你可以简单地做到
sum(prices.values())
如果您想从列表中过滤购物车中的商品:
sum([value for key,value in prices.items() if key in shopping_list])