Python 使用类模拟一个在线购物车,支持添加商品、删除商品等操作
快速解决
直接使用 Python 类模拟一个在线购物车,可以实现添加商品、删除商品、查看购物车、计算总价等常见功能。下面是一个完整的示例代码:
class ShoppingCart:
def __init__(self):
self.items = {} # 使用字典存储商品,键是商品名,值是数量
def add_item(self, item, quantity):
if item in self.items:
self.items[item] += quantity # 如果商品已存在,增加数量
else:
self.items[item] = quantity # 如果商品不存在,添加新条目
def remove_item(self, item, quantity):
if item in self.items:
if self.items[item] > quantity:
self.items[item] -= quantity # 如果商品数量大于要移除的数量
else:
del self.items[item] # 否则直接删除该商品
else:
print("该商品不在购物车中")
def view_cart(self):
return self.items
def total_price(self, prices):
return sum(prices[item] * quantity for item, quantity in self.items.items())
常用方法
| 方法名 | 功能说明 | 使用频率 |
|---|---|---|
add_item() |
向购物车中添加商品和数量 | 高 |
remove_item() |
从购物车中移除商品和数量 | 高 |
view_cart() |
查看当前购物车中的所有商品 | 中 |
total_price() |
计算购物车中商品的总价格 | 高 |
clear_cart() |
清空购物车 | 低 |
item_count() |
获取某个商品的当前数量 | 低 |
详细说明
添加商品
add_item(item, quantity) 方法允许用户将商品及其数量添加到购物车中。如果商品已经存在,就增加数量;如果不存在,则添加新条目。以下是一个使用示例:
cart = ShoppingCart()
cart.add_item("苹果", 2) # 添加苹果,数量为 2
cart.add_item("香蕉", 3) # 添加香蕉,数量为 3
cart.add_item("苹果", 1) # 再添加 1 个苹果,总数变为 3
print(cart.view_cart()) # 输出 {'苹果': 3, '香蕉': 3}
删除商品
remove_item(item, quantity) 方法允许用户从购物车中删除指定数量的商品。如果删除数量超过当前库存,则会将该商品从购物车中移除。以下是示例代码:
cart = ShoppingCart()
cart.add_item("苹果", 3)
cart.add_item("香蕉", 3)
cart.remove_item("苹果", 1) # 移除 1 个苹果
cart.remove_item("香蕉", 3) # 移除全部 3 个香蕉
print(cart.view_cart()) # 输出 {'苹果': 2}
计算总价
total_price(prices) 方法接收一个商品价格字典,用于计算当前购物车中所有商品的总价。这是一个典型的业务逻辑方法,用于模拟结账前的价格预览:
cart = ShoppingCart()
cart.add_item("苹果", 2)
cart.add_item("香蕉", 1)
prices = {"苹果": 5, "香蕉": 3} # 商品价格字典
print(cart.total_price(prices)) # 输出 13,2个苹果 × 5 + 1个香蕉 × 3
高级技巧
自动库存检查
在实际场景中,商品库存有限。我们可以扩展 ShoppingCart 类,使其支持库存检查:
class ShoppingCart:
def __init__(self, inventory):
self.items = {}
self.inventory = inventory # 存储商品库存
def add_item(self, item, quantity):
if item in self.inventory and self.inventory[item] >= quantity:
if item in self.items:
self.items[item] += quantity
else:
self.items[item] = quantity
self.inventory[item] -= quantity # 库存减少
else:
print("库存不足,无法添加该商品")
def remove_item(self, item, quantity):
if item in self.items and self.items[item] >= quantity:
self.items[item] -= quantity
self.inventory[item] += quantity # 库存增加
if self.items[item] == 0:
del self.items[item]
else:
print("购物车中商品数量不足,无法移除")
def view_cart(self):
return self.items
def view_inventory(self):
return self.inventory
支持商品单价变化
在动态定价系统中,商品价格可能会变化。我们可以在 ShoppingCart 中加入商品单价的更新功能:
class ShoppingCart:
def __init__(self):
self.items = {}
self.prices = {} # 存储商品单价
def add_item(self, item, quantity, price):
if item in self.items:
self.items[item] += quantity
else:
self.items[item] = quantity
self.prices[item] = price # 设置或更新商品价格
def remove_item(self, item, quantity):
if item in self.items:
if self.items[item] > quantity:
self.items[item] -= quantity
else:
del self.items[item]
else:
print("该商品不在购物车中")
def total_price(self):
return sum(self.prices[item] * quantity for item, quantity in self.items.items())
def update_price(self, item, new_price):
if item in self.prices:
self.prices[item] = new_price
else:
print("该商品未添加到购物车")
常见问题
问题 1:如何处理购物车中商品数量为零的情况?
答:在 remove_item() 方法中,可以检测商品数量是否减少至零,如果是,则从购物车中移除该商品。
问题 2:如何处理用户尝试添加购物车中没有的商品?
答:add_item() 方法会检查商品是否存在于库存中,若不存在则拒绝添加并提示用户。
问题 3:如何获取购物车中某个商品的总金额?
答:可以使用 total_price() 方法结合 prices 字典,计算指定商品的总价,例如:
def get_item_total(self, item, prices):
if item in self.items and item in prices:
return prices[item] * self.items[item]
else:
return 0
问题 4:如何清空整个购物车?
答:可以添加一个 clear_cart() 方法,将 items 字典清空:
def clear_cart(self):
self.items.clear()
print("购物车已清空")
总结
通过 Python 类可以方便地模拟一个支持添加商品、删除商品等操作的在线购物车,代码结构清晰、易于扩展,是实现购物车逻辑的有效方式。