如何在Python中将字典项在添加到购物车时减去一个

2 投票
2 回答
539 浏览
提问于 2025-04-18 11:32

我想做的是在Python中创建一个函数,用来计算购物车中商品的总价格。这个函数需要检查商品是否在库存字典里。如果商品在库存中并且被加入到总价格里,我还想把库存字典中该商品的数量减去购物车中添加的数量。

我现在完全卡住了,不知道该怎么继续,请看下面的代码:

stock = {
    "item1": 6,
    "item2": 0,
    "item3": 32,
    "item4": 15
}

prices = {
    "item1": 4,
    "item2": 2,
    "item3": 1.5,
    "item4": 3
}

def compute_bill(cart):
    total = 0
    for key in cart:
        if stock[key] > 0:
            total += prices[key] 
        return total

2 个回答

0

你可以简单地减少那个商品的库存数量:

def compute_bill(cart):
    total = 0
    for key in cart:
        if stock[key] > 0:
            total += prices[key] 
            stock[key] -= 1
        return total
0

假设题目中没有明确说明,但我们认为购物车(cart)里的每个商品的值是想要的数量,我会这样写代码:

def compute_bill(cart):
    total = 0
    for key, value in cart.items():
        if 0 < value <= stock[key]:
            total += prices[key] * value
            stock[key] -= value
    return total

如果你的 stock(库存)、price(价格)和 cart(购物车)有这些值:

stock = {
    "item1": 6,
    "item2": 0,
    "item3": 32,
    "item4": 15
}

prices = {
    "item1": 4,
    "item2": 2,
    "item3": 1.5,
    "item4": 3
}

cart = {
    "item1": 8,
    "item2": 3,
    "item3": 10,
    "item4": 10
}

那么购物车的总价就是:

>>> print compute_bill(cart)
45.0
>>> from pprint import pprint
>>> pprint(stock)
{'item1': 6, 'item2': 0, 'item3': 22, 'item4': 5}

注意,item1的数量没有减少,因为订单没有完全满足。同样,item2缺货,所以也没有减少。而买家有10个item3和item4。这两个商品的库存各减少了10个。

此外,这样做还避免了亚马逊曾经出现的负购物车数量问题

撰写回答