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 gồm các số thực và một số nguyên dương
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 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
giá trị liên tiếp kể từ nó trong chuỗi
.
Các phần tử cuối cùng không còn đủ
giá trị thì thêm giá trị 0 vào cửa sổ để tính trung bình.

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