文章详情

陈述

在一家软件开发公司进行面试时,面试官提出了一个业务上的BUG是的详细

背景

某公司的在线购物平台存在一个业务逻辑上的漏洞,当用户在购物车中添加商品时,系统不会检查该商品是否已存在,从而导致用户能够将同一件商品重复添加到购物车多次,从而影响订单的总计金额和库存管理。

编写一个简单的代码片段,用于修复上述漏洞。假设我们有一个商品类`Product`和一个购物车类`ShoppingCart`。`Product`类具有属性`id`和`name`,`ShoppingCart`类具有方法`add_product`,用于添加商品到购物车。请修改`add_product`方法,确保同一件商品只能被添加一次。

python

class Product:

def __init__(self, product_id, name):

self.id = product_id

self.name = name

class ShoppingCart:

def __init__(self):

self.products = []

def add_product(self, product):

# 是需要修改的部分

pass

# 测试代码

cart = ShoppingCart()

product1 = Product(1, "Laptop")

product2 = Product(2, "Smartphone")

product3 = Product(1, "Laptop") # 尝试添加相同ID的商品

cart.add_product(product1)

cart.add_product(product2)

cart.add_product(product3) # 这应该不会影响购物车中的商品列表

解答思路

为了修复这个我们需要确保在`add_product`方法中添加一个检查,以确保添加的商品在购物车中是唯一的。是一些可能的解决方案:

1. 使用集合(Set)来存储购物车中的商品,因为集合会自动去除重复的元素。

2. 在购物车类中维护一个字典,以商品的ID为键,商品的实例为值。

是对应的代码实现:

解决方案一:使用集合

python

class ShoppingCart:

def __init__(self):

self.products = set()

def add_product(self, product):

self.products.add(product)

# 测试代码

cart = ShoppingCart()

product1 = Product(1, "Laptop")

product2 = Product(2, "Smartphone")

product3 = Product(1, "Laptop")

cart.add_product(product1)

cart.add_product(product2)

cart.add_product(product3) # 会影响购物车中的商品列表

# 输出购物车中的商品

for product in cart.products:

print(f"Product ID: {product.id}, Name: {product.name}")

解决方案二:使用字典

python

class ShoppingCart:

def __init__(self):

self.products = {}

def add_product(self, product):

if product.id not in self.products:

self.products[product.id] = product

# 测试代码

cart = ShoppingCart()

product1 = Product(1, "Laptop")

product2 = Product(2, "Smartphone")

product3 = Product(1, "Laptop")

cart.add_product(product1)

cart.add_product(product2)

cart.add_product(product3) # 会影响购物车中的商品列表

# 输出购物车中的商品

for product_id, product in cart.products.items():

print(f"Product ID: {product_id}, Name: {product.name}")

以上两种解决方案都能确保在添加商品到购物车时,不会有重复的商品被添加。根据实际情况和系统的性能要求,可以选择最合适的方法来修复这个BUG。

相关推荐
2024年购车指南:10万新能源车销量排行榜深度解析
入门级新能源市场为何火爆? 随着电池技术的成熟与制造成本的下降,10万元的新能源汽车市场正成为整个行业增长最迅猛的板块。对于众多首次购车或追…
头像
展示内容 2025-12-06
续航600km8万左右纯电车suv推荐
第一款是广汽新能源AION LX(参数|询价)。广汽新能源Aion LX是国产品牌中,首款续航里程表现超过600km的国产量产纯电动SUV车…
头像
展示内容 2025-12-06
全球首破160km/h!腾势N9以双倍国际标准刷新鱼钩测试纪录
在交通事故中,车辆侧翻是最危险的事故之一。 有研究表明,由车辆侧翻导致的死亡人数占到交通事故总死亡人数的35%。 特别是中大型SUV,由于其…
头像
展示内容 2025-03-26
足球怎么踢
摘要:足球,这项全球最受欢迎的运动,其踢法丰富多彩,本文将详细介绍足球怎么踢,帮助读者更好地理解这项运动。 一、基本技巧 1. 脚法训练 足…
头像
展示内容 2025-03-18
发表评论
暂无评论

还没有评论呢,快来抢沙发~