作业说明如下:
定义一个函数compute_bill
,它将一个参数food
作为输入。
在函数中,创建一个初始值为零的变量total
。
对于食物清单中的每个项目,将该项目的价格添加到总计。
最后,返回总数。
忽略您正在结算的商品是否有库存。
请注意,您的功能应适用于任何食物清单。
以下是我尝试解决问题
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def compute_bill(food):
total=0
for item in food:
for items in prices:
if food[item]==prices[items]:
print prices[item]
total+=prices[item]
else:
print 'not found'
return total
compute_bill(['apple', 'jok'])
我得到的错误是:
追踪(最近一次通话): 文件" python",第26行,in 在compute_bill中的文件" python",第21行 KeyError:' jok'
我随机列出了" jok"就像它对任何清单所说的那样。有人可以帮助我吗?
答案 0 :(得分:1)
您遇到的错误是因为您试图从字典中获取不包含该密钥的项jok
的价格。
为了避免该错误,最好检查您检查的密钥是否存在,如下所示:
if item in prices:
total+= prices[item]
因此,代码应该如下所示:
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def compute_bill(food):
# Set total variable to 0
total=0
# Loop over every item in food list to calculate price
for item in food:
# Check that the item in the food list really exists in the prices
# dicionary
if item in prices:
# The item really exists, so we can get it's price and add to total
total+= prices[item]
print total
compute_bill(['apple', 'jok', 'test', 'banana'])
答案 1 :(得分:0)
食物是一个列表,而不是字典 - 因此您无法通过列表中的索引以外的任何内容查找列表中的项目。但是没有必要重新查找该项目,因为您已经在迭代它。
你也不能迭代字典,所以也需要改变
for items in prices:
if food[item]==prices[items]:
应该只是
for key, val in prices.items():
if item == key:
但这仍然没有意义,相反,你只需要找出该项目是否在字典中
for item in food:
price = prices.get(item)
if price:
total+=price