【发布时间】:2017-04-13 18:50:03
【问题描述】:
代码:
inv = {'arrow': 12, 'gold coin': 42, 'rope': 1, 'torch': 6, 'dagger': 1}
def show_inv():
print('inventory:')
item_total = 0
for k, v in inv.items():
print(str(v)+ ' ' + (k))
item_total = item_total + v
print('total number of items: ' + str(item_total))
show_inv()
结果(如预期):
库存:
12 箭头
42金币
1 根绳子
6 手电筒
1 把匕首
项目总数:62
但是如何
item_total = item_total + v
给我正确的总值?
编辑:为什么单独 print(str(v)) 总是给我“匕首”键的值?
【问题讨论】:
-
只是将字典的值相加得到总数。
-
每次迭代,它会将当前项目的数量添加到运行的项目总数
item_total + v,然后将更新后的值存储回item_total = ... -
如果您对
item_total被分配给item_total + v这一事实感到困惑 - 在分配发生之前首先评估分配的右侧,因此一切都按您的意愿进行。 -
您可以简单地使用
sum函数并完全省略item_total,例如:sum(v for k, v in inv.items())。 -
不,但看看为什么 print(str(v)) 单独总是给我“匕首”键的值?
标签: python python-3.x