在这个练习中,我们将管理一个由字典表示的水果库存,其键是水果的名称(单数),值是库存中对应水果的数量。例如,如果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))