Menu
CoddyTech

Tạo báo cáo

Thuộc phần Logic và luồng chương trình trong hành trình Python của Coddy. Bài học 71 trên 78.

challenge icon

Thử thách

Khó

Hệ thống quản lý hàng tồn kho đã có các thành phần sau:

  1. Một từ điển inventory toàn cục, trong đó:
    • Các khóa là tên mặt hàng (chuỗi)
    • Các giá trị là từ điển chứa:
      • "price": Giá của mặt hàng (số thực)
      • "stock": Số lượng hàng tồn kho hiện tại (số nguyên)
  2. Hàm add_item(item, price, stock) thêm mặt hàng mới vào kho
  3. Hàm update_stock(item, quantity) cập nhật mức tồn kho
  4. Hàm check_availability(item) trả về mức tồn kho hiện tại

Nhiệm vụ của bạn là triển khai hàm sales_report(sales), hàm này sẽ:

  1. Nhận một từ điển sales, trong đó:
    • Các khóa là tên mặt hàng
    • Các giá trị là số lượng đã bán
  2. Với mỗi mặt hàng trong từ điển doanh số:
    • Kiểm tra xem mặt hàng có trong kho hay không
    • Kiểm tra xem hàng tồn kho có đủ hay không
    • Cập nhật kho bằng cách giảm số lượng hàng tồn kho
    • Tính doanh thu dựa trên giá và số lượng đã bán
  3. Trả về một chuỗi có định dạng chứa tổng doanh thu

Xử lý các lỗi cụ thể sau:

  • Nếu mặt hàng không có trong kho, hãy in ra: "Error: Item '{item}' not found."
  • Nếu hàng tồn kho không đủ, hãy in ra: "Error: Insufficient stock for '{item}'."

Đầu ra phải là một chuỗi có định dạng: “Total revenue: ${total:.2f}”

 

Thêm (thay thế) khối code sau vào cuối code của bạn:

add_item("Apple", 0.5, 50)
add_item("Banana", 0.2, 60)
sales = {"Apple": 30, "Banana": 20, "Orange": 10}  # Orange should print an error
print(sales_report(sales))  # Should output: Total revenue: $19.00
print(inventory)

Tự làm thử

inventory = {}

def add_item(item, price, stock):
    if item in inventory:
        print(f"Error: Item '{item}' already exists.")
        return
    try:
        inventory[item] = {"price": float(price), "stock": int(stock)}
        print(f"Item '{item}' added successfully.")
    except ValueError:
        print("Error: Price and stock must be numeric.")

def update_stock(item, quantity):
    if item not in inventory:
        print(f"Error: Item '{item}' not found.")
        return
    try:
        new_stock = inventory[item]["stock"] + int(quantity)
        if new_stock < 0:
            print(f"Error: Insufficient stock for '{item}'.")
        else:
            inventory[item]["stock"] = new_stock
            print(f"Stock for '{item}' updated successfully.")
    except ValueError:
        print("Error: Quantity must be an integer.")

def check_availability(item):
    if item not in inventory:
        return "Item not found"
    return inventory[item]["stock"]


add_item("Apple", 0.5, 100)
add_item("Banana", 0.2, 50)
update_stock("Apple", -20)
update_stock("Banana", 30)
print(check_availability("Apple"))  # Should return 80
print(check_availability("Banana"))  # Should return 80
print(check_availability("Orange"))  # Should return "Item not found"

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Python online