|
- #原有物品
- stuff={'rope':1,'torch':6,'gold coin':42,'dagger':1,'arrow':12}
- #列出物品清单
- def displayInventory(inventory):
- total=0
- print('物品清单:')
- for v,k in inventory.items():
- print(v+':'+str(k))
- total+=k
- print('所拥有的物品数量一共是'+str(total))
- #打败一头龙得到的物品清单
- dragonLoot=['gold coin','dagger','gold coin','ruby']
- #把新得到的东西加入到物品列表中
- def addToInventory(inventory,addedItems):
- for v,k in inventory.items():
- for i in addedItems:
- if v==i:
- inventory[v]+=1
- else:
- inventory.setdefault(i,1)
- print(inventory)
- #break
- return inventory
- #主程序
- stuff=addToInventory(stuff,dragonLoot)
- displayInventory(stuff)
复制代码
测试了一下这个代码,运行结果是这样的
{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12, 'ruby': 1}
Traceback (most recent call last):
File "C:/Users/skyanye/Desktop/test.py", line 29, in <module>
stuff=addToInventory(stuff,dragonLoot)
File "C:/Users/skyanye/Desktop/test.py", line 18, in addToInventory
for v,k in inventory.items():
RuntimeError: dictionary changed size during iteration
注意看第4行,字典其实是被修改了,但是在return的时候出错了。这个难道是因为内部出错了才导致的吗? |
|