嵌套字典和游戏物品清单

计算所有客人带来的食物总数

代码如下:

#-*-coding:utf-8-*-
#统计所有人带的食物总数
allguests = {'Alice':{'apples':5,'pretzels':12},
             'Bob':{'ham sandwiches':3,'apples':3},
             'Carol':{'cups':3,'apple pies':1}
             }
def totalBrought(guests,items):
    numbrought = 0
    for k,v in guests.items():
        numbrought = numbrought + v.get(items,0)
    return numbrought
print('number of things being brought:')
print(' - Apples '+ str(totalBrought(allguests,'apples')))
print(' - Pretzels '+ str(totalBrought(allguests,'pretzels')))
print(' - Ham Sandwiches '+ str(totalBrought(allguests,'ham sandwiches')))
print(' - Cups '+ str(totalBrought(allguests,'cups')))
print(' - Apple Pies '+ str(totalBrought(allguests,'apple pies')))

好玩游戏的物品清单

你在创建一个好玩的视频游戏。用于对玩家物品清单建模的数据结构是一个字典。其中键是字符串,描述清单中的物品,值是一个整型值,说明玩家有多少该物品。例如,字典值{‘rope':1,'torch':6,'gold coin':42,'dagger':1,'arrow':12}意味着玩家有1条绳索,6坏人火把,42枚金币等。

写一个名为displayInventory()函数,它接受任何可能的物品清单,并显示如下:

Inventory:  

12 arrow  

42 gold coin  

1 rope  

6 torch  

1 dagger  

Total number of items: 62  

 提示 你可以使用for循环,遍历字典中所有的键。

代码如下:

def displayInventory(inventory):  

    print("Inventory:")  

    item_total=0  

  for k,v in inventory.items():  

         print(str(v)+' '+ k)  

         item_total += v  

         print("Total number of items :" ,item_total)  

stuff={'rope':1,'torch':6,'gold coin':42,'dagger':1,'arrow':12}  

displayInventory(stuff)  

 

列表到字典的函数,针对好玩游戏物品清单

假设征服一条龙的战利品表示为这样的字符串列表:

dragonLoot=['gold coin','dagger','gold coin','gold coin','ruby']

写一个名为addToInventory(inventory,addedItems)的函数,其中inventory参数是一个字典,表示玩家的物品清单(像前面项目一样),addedItems参数是一个列表,就像dragonLoot。

addToInventory()函数应该返回一个字典,表示更新过的物品清单.

所有代码合起来代码如下:

#游戏的物品清单,一个函数只能有一个返回值
stuff = {'rope':1 ,'torch':6 ,'gold coin':42 ,'dagger':1,'arrow':12}
dragonLoot=['gold coin','dagger','gold coin','ruby','gold coin']
def displayInventory(inverntory):
    print('Inventory:')
    item_total = 0
    for k,v in inverntory.items():
        print(str(v) + ' ' + k)
        item_total = item_total + v
    print('Total number of items:' +str(item_total))
def addToInventory(inventory1,addedItems):
    newupdate = {}
    for i in addedItems:
        newupdate[i] = addedItems.count(i)
    for k,v in newupdate.items():
        if k in inventory1.keys():
            inventory1[k] = inventory1[k] + v
        else:
            inventory1[k] = v
    return inventory1
stuff = addToInventory(stuff,dragonLoot)
displayInventory(stuff)
结果输出为:

 在addToInventory函数中运用了两个基本的思维:将第二个参数列表中重复的元素进行统计,赋给字典中,成为一个新字典。

然后将新字典与第一个参数字典进行相同Key合并成一个字典。

 


posted @ 2017-03-01 16:36  Aaron帅  阅读(1052)  评论(0编辑  收藏  举报