zoukankan      html  css  js  c++  java
  • 嵌套字典和游戏物品清单

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

    代码如下:

    #-*-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合并成一个字典。

    
    
  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/xuexiaohun/p/6484925.html
Copyright © 2011-2022 走看看