python-246Đọc toàn bộ đề miễn phí

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ố

PythonCơ bản12 phút

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ủ đề

pandasmergeentry-ramp

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.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo