meisner7 2021-12-13 08:43 采纳率: 65.2%
浏览 94
已结题

python基础题,字典问题,请用基础方式解决

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

在这个练习中,我们将管理一个由字典表示的水果库存,其键是水果的名称(单数),值是库存中对应水果的数量。例如,如果stock包含 2 个苹果和 6 个香蕉,它将由以下字典表示:{'apple': 2, 'banana': 6}。为了简化示例的编写,我们假设该字典将存储在名为stock的变量中 。

在整个练习中,不得修改作为参数传递的字典。

您不必按顺序完成问题。

编写一个add1函数,它将stock(字典)和水果名称作为参数,并返回新股票,其中添加了给定类型的水果。
例子:
add1 (stock, 'apple')返回 {'apple': 3, 'banana': 6}
add1 (stock, 'pear')返回 {'apple': 2, 'banana': 6, 'pear': 1}
编写一个函数enleve1,它将stock(字典)和水果名称作为参数,并返回新stock,其中给定类型的水果已被删除(如果有足够的)。如果这种水果的库存下降到零,则必须删除字典键。如果库存不足,程序将显示“错误:(水果名称)的数量不足”并原样退回原库存。
例子:
enleve1 (stock, 'apple')返回 {'apple': 1, 'banana': 6}
enleve1 (stock, 'pear') 显示“错误:梨太少”并返回 { 'apple': 2, 'banana': 6}
编写一个add函数,它将stock(字典)、水果名称和数量q作为参数,并返回新stock,其中我们添加了指定水果类型的数量q。
例子:
add (stock, 'apple', 5)返回 {'apple': 7, 'banana': 6}
add (stock, 'pear', 4)返回 {'apple': 2, 'banana': 6, 'pear': 4}
编写一个函数remove,它将股票(字典)、水果名称和数量q作为参数,并返回我们已经删除了指定类型水果的数量q的新股票。至于函数enleve1,如果这个水果的库存下降到零,则必须删除字典中的键。如果库存不足,程序将显示“错误: (水果名称)的数量不足”并原样退回原库存。
例子:
remove (stock, 'apple', 2)返回 {'banana': 6}
remove (stock, 'banana', 10) 打印“错误:香蕉数量不足”并返回 {'apple': 2, 'banana': 6}
编写一个函数after_delivery,它将stock(字典)以及交货内容(也由字典表示)作为参数,并在交货后返回新库存(知道交货内容增加了当前库存) .
例子:
after_delivery (stock, {'peach': 4, 'apple': 5})返回 {'apple': 7, 'banana': 6, 'peche': 4}
编写一个命令函数,它将当前stock(字典)以及所需的最小股票stock(还有字典)作为参数,并返回与获得所需stock必须执行的命令相对应的字典。如果水果在当前库存中已经出现足够数量(大于或等于所需库存),则不应出现在订单中。
例子:
假设stock_ Want = {'apple': 15, 'orange': 20},则order (stock, stock_ Want)返回 {'apple': 13, 'orange': 20}。
假设stock_ Want = {'apple': 10, 'banana': 4},则order (stock, stock_ Want)返回 {'apple': 8}。
编写一个以stock为参数的total函数,它返回股票stock中存在的水果总数(所有类型的组合)
示例:
total(stock)回报 8.
编写一个数量函数,该函数将stock作为参数以及一个水果名称列表Fruits_a_compter,并返回名称在Fruits_a_compter 列表中的股票中存在的水果数量。
例子:
假设stock_bis = {'apple': 15, 'peach': 4, 'lemon': 3, 'orange': 20},则数量 (stock_bis, ['apple', 'lemon', 'pear'])返回 18.
编写一个函数citrus_quantity,它将库存作为参数并返回库存中存在的柑橘类水果的数量。柑橘类水果的名称将被考虑:orange, citron, mandarine, clémentine 和 pamplemousse.
例子:
假设stock_bis = {'apple': 15, 'peach': 4, 'lemon': 3, 'orange': 20},则citrus_quantity (stock_bis)返回 23。

  • 写回答

2条回答 默认 最新

  • 菜猫小六 2021-12-13 09:39
    关注

    已经修改

    
    def add1(obj_dic, fruit):
        if fruit in obj_dic:
            obj_dic[fruit] += 1
        else:
            obj_dic[fruit] = 1
    
    
    def enleve1(obj_dic, fruit):
        count = obj_dic[fruit] - 1
        if count == 0:
            del obj_dic[fruit]
        elif count < 0:
            print(fruit, "太少")
        else:
            obj_dic[fruit] -= 1
    
    
    def add(obj_dic, fruit, count):
        if fruit in obj_dic:
            obj_dic[fruit] += count
        else:
            obj_dic[fruit] = 1
    
    
    def remove(obj_dic, fruit, count):
        count = obj_dic[fruit] - count
        if count == 0:
            del obj_dic[fruit]
        elif count < 0:
            print(fruit, "太少")
        else:
            obj_dic[fruit] = count
    
    
    def after_delivery(obj_dic ,want_obj_dic):
        for key in want_obj_dic.keys():
            if key in obj_dic:
                obj_dic[key] += want_obj_dic[key]
            else:
                obj_dic[key] = want_obj_dic[key]
        print(obj_dic)
    
    def order(obj_dic, want_obj_dic):
        res = {}
        for key in want_obj_dic.keys():
            if key not in obj_dic:
                res[key] = want_obj_dic[key]
            else:
                if want_obj_dic[key] > obj_dic[key]:
                    res[key] = want_obj_dic[key] - obj_dic[key]
        print(res)
        return res
    
    def total(obj_dic):
        res = 0
        for key in obj_dic.keys():
            res += obj_dic[key]
        return res
    
    def func6(obj_dic, Fruits_a_compter):
        res = 0
        for key in Fruits_a_compter:
            if key in obj_dic:
                res += obj_dic[key]
        return res
    
    
    def citrus_quantity(obj_dic):
        orange_list = ['orange', 'citron', 'mandarine', 'clémentine', 'pamplemousse', 'lemon']
        res = 0
        for key in orange_list:
            if key in obj_dic:
                res += obj_dic[key]
        return res
    
    
    if __name__ == '__main__':
        stock = {'apple': 2, 'banana': 6}
        print("初始" ,stock)
        stock_Want = {'apple': 10, 'banana': 4}
        stock_bis = {'apple': 15, 'peach': 4, 'lemon': 3, 'orange': 20}
    
        # add1(stock,'apple')
        # print(stock)
    
        # enleve1(stock, 'apple')
        # print(stock)
    
        # add(stock, 'pear', 5)
        # print(stock)
    
        # remove(stock, 'banana', 1)
        # print(stock)
    
        # after_delivery(stock, {'peach': 4, 'apple': 5})
        # print(stock)
    
        # order(stock, stock_Want)
        # print(stock)
    
        # print( total(stock))
    
        # res =func6(stock_bis, ['apple', 'lemon', 'pear'])
        # print(res)
    
        # print(citrus_quantity(stock_bis))
    

    最后一个柑橘类是不是把lemon也算进去的?23 = 20 + 3

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月13日

悬赏问题

  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?