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 key in food:
total = total + food[key]
return total
print compute_bill(prices)
我在Codeacademy.com上,他们还没有真正解释如何将字典发送到函数。只是列表。当我运行这段代码时,它会打印出我想要的内容,但后来我收到了这个错误,无法继续:
Oops, try again. compute_bill(['apple']) resulted in a TypeError: list
indices must be integers, not str
答案 0 :(得分:2)
用户更好的变量名称,这样您就不会混淆自己。您有一张价格表,并且您想要查看购物清单中的每个商品"使用该表:
price_table = prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
# Write your code below!
def compute_bill(things_I_want_to_buy):
total = 0
for item in things_I_want_to_buy:
total = total + price_table[item]
return total
print compute_bill(['apple', 'pear'])
答案 1 :(得分:0)
嗯,除了编码练习之外,实际问题的答案是你将字典传递给函数的方式与列表,整数,字符串,集合,元组或对象相同。自己定义的类型。
例如,假设我有一个名为quack_show
的函数,我写了它希望得到一个鸭子列表并使它们都嘎嘎叫:
def quack_show(duck_list):
for duck in duck_list:
duck.quack()
有人可以将鸭子列表传递给该函数,但没有任何人必须遵守的限制。
首先,duck_list
不一定是鸭子的列表,只是任何具有quack()
方法的任意对象我都可以调用。
其次,duck_list
不一定是列表,只是我可以用for duck in duck_list
迭代的东西。您可以迭代列表,集合,元组,甚至可以定义自己可以执行此操作的对象。您可以迭代字符串,您将获得单个字符。
对于该函数而言,重要的是您实际上可以迭代,并且容器中的所有对象都具有quack()
方法。如果字典键是可以quack()
的对象,那么甚至可以将此函数发送到字典。