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。

已经修改


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

有用请采纳

# 不得修改传递过来的字典
# python3
def add1(stock, fuitName):
    result = {}
    for key, value in stock.items():
        result[key] = value

    if fuitName in result.keys():
        result[fuitName] += 1

    else:
        result[fuitName] = 1

    return result


def enleve1(stock, fuitName):
    if stock.get(fuitName) == None:
        print("错误, {}太少".format(fuitName))
        return stock

    result = {}   # 不改变stock
    for key, value in stock.items():
        if key == fuitName:
            temp = value - 1
        else:
            temp = value

        if temp != 0:
            result[key] = temp

    return result


def add(stock, fuitName, num):
    result = {}
    for key, value in stock.items():
        result[key] = value

    if fuitName in result.keys():
        result[fuitName] += num

    else:
        result[fuitName] = num

    return result


def remove(stock, fuitName, num):
    if stock.get(fuitName) == None or stock.get(fuitName) < num:
        print("错误, {}太少".format(fuitName))
        return stock

    result = {}
    for key, value in stock.items():
        if key == fuitName:
            temp = value - num
        else:
            temp = value

        if temp != 0:
            result[key] = temp

    return result


def after_delivery(stock, newStock):
    result = {}
    for key, value in stock.items():
        result[key] = value

    for key, value in newStock.items():
        if key in result.keys():
            result[key] += value

        else:
            result[key] = value

    return result


def order(stock, stockWant):
    result = {}
    for key, value in stockWant.items():
        if stock.get(key) == None:      # 一个没有
            result[key] = value

        elif stock.get(key) < value:    # 有一些
            result[key] = value - stock[key]

    return result


def total(stock):
    fruitSum = 0
    for value in stock.values():
        fruitSum += value

    return fruitSum


def count(stock_bis, fruitList):
    result = 0
    for each in fruitList:
        if stock_bis.get(each) != None:
            result += stock_bis[each]

    return result


def citrus_quantity(stock_bis):
    fruitList = ['orange', 'citron', 'mandarine', 'clémentine', 'pamplemousse', 'lemon']
    result = 0
    for key in stock_bis.keys():
        if key in fruitList:
            result += stock_bis[key]

    return result



stock = {"apple": 2, "banana": 6}
stock1 = add1(stock, 'apple')
print(stock1)

stock2 = add1(stock, 'pear')
print(stock2)

stock3 = enleve1(stock, 'apple')
print(stock3)

stock4 = remove(stock, 'banana', 6)
print(stock4)
stock5 = remove(stock, 'banana', 9)
print(stock5)


stock6 = after_delivery(stock, {'peach': 4, 'apple': 5})
print(stock6)

stock_Want = {'apple': 10, 'banana': 4}
stock7 = order(stock, stock_Want)
print(stock7)


totalSum = total(stock)
print(totalSum)

# 你这题目中不明确啊, lemon都没写进去
stock_bis = {'apple': 15, 'peach': 4, 'lemon': 3, 'orange': 20}
print(count(stock_bis,  ['apple', 'lemon', 'pear']))  
print(citrus_quantity(stock_bis))