Tính trung bình trượt

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 1 (partial)

Mô tả:

Cho chuỗi dữ liệu thời gian rời rạc data gồm các số thực và một số nguyên dương k biểu diễn kích thước cửa sổ trượt. Hãy xây dựng hàm moving_average(data, k) nhằm thực hiện phép biến đổi chuỗi data thành chuỗi giá trị trung bình trượt, trong đó mỗi giá trị đầu ra là trung bình của cửa sổ chứa k giá trị liên tiếp kể từ nó trong chuỗi data. Các phần tử cuối cùng không còn đủ k giá trị thì thêm giá trị 0 vào cửa sổ để tính trung bình.

mô tả

Hướng dẫn:

Bạn hãy hoàn thành các phần còn thiếu ____ trong đoạn mã sau và submit toàn bộ code lên hệ thống.

def moving_average(data, k):
    """
    Tính trung bình trượt (moving average) của chuỗi dữ liệu theo cửa sổ kích thước k.

    Tham số:
        data (list of float): Chuỗi dữ liệu đầu vào.
        k (int): Kích thước cửa sổ trượt (k ≥ 1).

    Kết quả trả về:
        list of float: Danh sách các giá trị trung bình tương ứng với từng cửa sổ trượt.

    Ghi chú:
        - Nếu k lớn hơn độ dài chuỗi hoặc dữ liệu rỗng, kết quả trả về là danh sách rỗng.
        - Chỉ sử dụng các phép toán cơ bản trên list, không dùng thư viện ngoài.
    """
    if ____:
        return []

    result = []
    ____
    return result

# ===============================
# Nhập dữ liệu và test hàm  
# ===============================

try:
    k = int(input())                       # nhập k
    data = list(map(float, input().split()))        # nhập dãy số thực
except:
    k = 0
    data = []

result = moving_average(data, k)

# In kết quả với 2 chữ số thập phân
print(" ".join(f"{x:.2f}" for x in result))

Comments