Lab4 - 22130037 - TruongTanDat - Colab
Lab4 - 22130037 - TruongTanDat - Colab
#Task 2.6
def fillter_orders(self, category):
f1 = lambda order:any(item.is_Category(category) for item in order.items)
return list(filter(f1,self.orders))
# Task 2.7
def product_ordered(self, customer, fromDate, toDate):
return [item.p for order in self.orders if order.customer == customer and fromDate <= order.orderDate <= toDate for item in orde
# Task 2.8
def recent_orders(self):
return sorted(self.orders, key=lambda order: order.orderDate, reverse=True)[:3]
# Task 2.9
def orders_on_date(self, target_date):
return [order for order in self.orders if order.orderDate == target_date]
# Task 2.10
def cost_in_month(self, month, year):
return sum(item.quantity * item.p.price for order in self.orders if order.orderDate.month == month and order.orderDate.year == y
# Task 2.11
def avg_cost_on_date(self, target_date):
orders_on_date = [order for order in self.orders if order.orderDate == target_date]
total_cost = sum(sum(item.quantity * item.p.price for item in order.items) for order in orders_on_date)
return total_cost / len(orders_on_date) if orders_on_date else 0
# Task 2.12
def order_stats(self):
return {order.oid: sum(item.quantity for item in order.items) for order in self.orders}
# Task 2.14
def order_cost_stats(self):
return {order.oid: sum(item.quantity * item.p.price for item in order.items) for order in self.orders}
class Order:
def __init__ (self,oid, status, orderDate, deliveryDate, customer, items):
self.oid = oid
self.status = status
self.orderDate = orderDate
self.deliveryDate = deliveryDate
self.customer = customer
self.items = items
#Task 2.1
def get_Product(self, category, threshold):
return [item.get_Product() for item in self.__items
if item.get_Product().is_Category() and
item.get_Product().is_lower(threshold)]
#Task 2.1
def get_product_decrease(self, Category):
products = [item.get_Product() for item in self.__items
if item.get_product().is_Category(Category)]
#Task 2.2
return list(map(lambda product : product.get_product_decrease_price(), products))\
https://colab.research.google.com/drive/1ljJ37evE_vGkcCW-okxHP1wHhlUnPs0i#scrollTo=1yqp4IL29HZb&printMode=true 1/3
23:44 21/10/24 lab4_22130037_TruongTanDat - Colab
#Task 2.3
def Cheapest_product (self, category):
return min([item.get_Product() for item in self.items
if item.get_product().is_Category(category)],key = lambda p: p.get_price())
#Task 2.4
def tats_by_category(self):
category_set = {item.get_product().get_category() for item in self.__items}
return {category :[item.get_category for item in self.items if item.is_category(category)]
for category in category_set}
#Task 2.5
def expensive_by_category(self):
category_set = {item.get_product().get_category() for item in self.__items}
return {category :max([item.get_category for item in self.items if item.is_category(category)],
key = lambda p: p.get_price()) for category in category_set}
class Customer:
def __init__ (self, cid, name, tier):
self.cid = cid
self.name = name
self.tier = tier
class OrderItem:
def __init__ (self, quantity,p):
self.quantity = quantity
self.p = p
#
https://colab.research.google.com/drive/1ljJ37evE_vGkcCW-okxHP1wHhlUnPs0i#scrollTo=1yqp4IL29HZb&printMode=true 2/3
23:44 21/10/24 lab4_22130037_TruongTanDat - Colab
class Product:
def __init__ (self, pid, name,category, price):
self.pid = pid
self.name = name
self.category = category
self.price = price
def decrease_price(self):
return self.price * 0.9
https://colab.research.google.com/drive/1ljJ37evE_vGkcCW-okxHP1wHhlUnPs0i#scrollTo=1yqp4IL29HZb&printMode=true 3/3