0% found this document useful (0 votes)
6 views3 pages

Lab4 - 22130037 - TruongTanDat - Colab

Uploaded by

truongdat531
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views3 pages

Lab4 - 22130037 - TruongTanDat - Colab

Uploaded by

truongdat531
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

23:44 21/10/24 lab4_22130037_TruongTanDat - Colab

from datetime import date


class OrderManager:
def __init__ (self, orders):
self.orders = orders

#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}

# Create some products


p1 = Product(1, "Laptop", "Electronics", 1200)
p2 = Product(2, "Mouse", "Electronics", 25)
p3 = Product(3, "Keyboard", "Electronics", 75)
p4 = Product(4, "Shirt", "Clothing", 30)
p5 = Product(5, "Pants", "Clothing", 60)

# Create some customers


c1 = Customer(1, "John Doe", 1)
c2 = Customer(2, "Jane Smith", 2)

# Create some order items


oi1 = OrderItem(1, p1)
oi2 = OrderItem(2, p2)
oi3 = OrderItem(1, p3)
oi4 = OrderItem(3, p4)
oi5 = OrderItem(2, p5)

# Create some orders


o1 = Order(1, "Completed", date(2023, 4, 20), date(2023, 4, 22), c1, [oi1, oi2, oi3])
o2 = Order(2, "Shipped", date(2023, 4, 21), date(2023, 4, 23), c2, [oi4, oi5])
o3 = Order(3, "Pending", date(2023, 4, 22), None, c1, [oi1, oi3])

# Create an order manager


om = OrderManager([o1, o2, o3])

# Test the methods


print("Orders with 'Electronics' category:",fillter_orders("Electronics"))
print("Products ordered by John Doe between 2023-04-20 and 2023-04-22:",
om.product_ordered(c1, date(2023, 4, 20), date(2023, 4, 22)))
print("3 most recent orders:", om.recent_orders())
print("Orders on 2023-04-21:", om.orders_on_date(date(2023, 4, 21)))
print("Total cost of orders in April 2023:", om.cost_in_month(4, 2023))
print("Average cost of orders on 2023-04-21:", om.avg_cost_on_date(date(2023, 4, 21)))
print("Statistics for each order (order ID: number of products):", om.order_stats())
print("Orders by customer (customer ID: list of orders):", om.orders_by_customer())
print("Statistics for each order (order ID: total cost):", om.order_cost_stats())

# Test Order methods


print("Products in order 1 with category 'Electronics' and price > 100:", o1.get_Product("Electronics", 100))
o1.get_product_decrease("Electronics")
print("Price of Electronics in order 1 decreased by 10%")
print("Cheapest product in 'Clothing' category in order 2:", o2.cheapest_product("Clothing"))
print("Statistics by category for order 1:", o1.stats_by_category())
print("Most expensive product by category for order 2:", o2.expensive_by_category())

Hiện kết quả đã ẩn

Các bước tiếp theo: Giải thích lỗi

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 get_pid (self):


return self.pid
def get_name(self):
return self.name
def get_category(self):
return self.category
def get_price(self):
return self.price
def is_Category(self,category):
return self.category == category
def is_lower(self,threshold):
return self.price < threshold

def decrease_price(self):
return self.price * 0.9

https://colab.research.google.com/drive/1ljJ37evE_vGkcCW-okxHP1wHhlUnPs0i#scrollTo=1yqp4IL29HZb&printMode=true 3/3

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy