Ghép bảng giá rồi tính tiền từng đơn
Dữ liệu bán hàng hiếm khi nằm gọn trong một bảng: bảng đơn hàng chỉ ghi mã sản phẩm và số
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, pandas-dataframe-intro.
Nội dung đề bài
Mô tả bài toán
Dữ liệu bán hàng hiếm khi nằm gọn trong một bảng: bảng đơn hàng chỉ ghi mã sản phẩm và số lượng, còn giá nằm ở bảng sản phẩm. Muốn tính tiền từng đơn phải ghép hai bảng theo khoá chung product_id, rồi nhân số lượng với đơn giá. pandas làm việc đó bằng merge.
Yêu cầu
Viết hàm order_totals(orders, products) trả về danh sách dict gồm "order_id" và "total" cho mỗi đơn hàng có sản phẩm tương ứng trong bảng giá, với total = qty * price, sắp xếp theo order_id tăng dần.
Quy ước nộp bài
Nộp hàm order_totals trong solution.py. Hệ thống gọi hàm trực tiếp và so cấu trúc trả về với kỳ vọng (số so với sai số 1e-6); không đọc dữ liệu từ stdin và không in ra stdout.
Input
- orders: danh sách dict với khoá "order_id" (số nguyên), "product_id" (chuỗi) và
"qty" (số lượng).
- products: danh sách dict với khoá "product_id" (chuỗi) và "price" (đơn giá).
Output
Danh sách dict hai khoá "order_id" và "total" cho những đơn ghép được, sắp theo order_id tăng dần. Đơn không tìm thấy sản phẩm bị bỏ hoàn toàn, không xuất hiện với giá trị trống.
Ràng buộc
- Phép ghép phải làm bằng merge theo khoá product_id, không nối tay bằng dict Python.
- Mỗi product_id trong bảng giá xuất hiện đúng một lần.
- Kết quả có thể là danh sách rỗng nếu không đơn nào ghép được.
Ví dụ 1
Input
order_totals(orders=[{"order_id": 1, "product_id": "A", "qty": 2}, {"order_id": 2, "product_id": "B", "qty": 1}], products=[{"product_id": "A", "price": 3.5}, {"product_id": "B", "price": 10.0}])
Output
[{"order_id": 1, "total": 7.0}, {"order_id": 2, "total": 10.0}]
Ví dụ 2
Input
order_totals(orders=[{"order_id": 3, "product_id": "C", "qty": 4}], products=[{"product_id": "C", "price": 2.5}])
Output
[{"order_id": 3, "total": 10.0}]
Giải thích
Với orders = [{"order_id": 1, "product_id": "A", "qty": 2}] và products = [{"product_id": "A", "price": 3.5}] thì kết quả là [{"order_id": 1, "total": 7.0}], vì 2 * 3.5 = 7.0.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
