Điền điểm thiếu rồi tính trung bình theo đội
Bảng điểm của một cuộc thi có vài thí sinh bỏ thi, nên ô điểm của họ là None. Ban tổ chức
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-missing-data.
Nội dung đề bài
Mô tả bài toán
Bảng điểm của một cuộc thi có vài thí sinh bỏ thi, nên ô điểm của họ là None. Ban tổ chức không muốn loại cả dòng vì như vậy số thí sinh của đội thay đổi; họ muốn điền tạm ô trống bằng trung bình cộng của những điểm đã có, rồi mới tính điểm trung bình của từng đội. pandas thực hiện hai bước đó bằng fillna và groupby.
Yêu cầu
Viết hàm team_mean_score(rows):
- tính trung bình cộng của mọi điểm khác None;
- thay mỗi điểm None bằng chính giá trị trung bình đó;
- trả về danh sách dict gồm "team" và "mean_score", sắp theo team tăng dần;
- ném ValueError nếu rows rỗng hoặc nếu mọi điểm đều thiếu.
Quy ước nộp bài
Nộp hàm team_mean_score trong solution.py. Hệ thống gọi hàm trực tiếp, so số với sai số 1e-6 và kiểm tra ngoại lệ ValueError; không đọc dữ liệu từ stdin và không in ra stdout.
Input
- rows: danh sách dict với khoá "team" (chuỗi) và "score" (số thực hoặc None), từ 1
đến 200 dòng.
Output
Danh sách dict hai khoá "team" và "mean_score", mỗi đội một dòng, giá trị là trung bình cộng các điểm sau khi đã điền.
Ràng buộc
- Giá trị điền vào phải là trung bình của các điểm đã có, không phải 0 và không bỏ dòng.
- ValueError cho hai trường hợp: danh sách rỗng, và mọi điểm đều thiếu.
- Giá trị trả về là danh sách dict, không phải DataFrame.
Ví dụ 1
Input
team_mean_score(rows=[{"team": "A", "score": 3.0}, {"team": "B", "score": 5.0}, {"team": "A", "score": null}, {"team": "B", "score": null}])
Output
[{"team": "A", "mean_score": 3.5}, {"team": "B", "mean_score": 4.5}]
Ví dụ 2
Input
team_mean_score(rows=[{"team": "Solo", "score": 10.0}])
Output
[{"team": "Solo", "mean_score": 10.0}]
Giải thích
Với rows = [{"team": "A", "score": 3.0}, {"team": "B", "score": 5.0}, {"team": "A", "score": None}, {"team": "B", "score": None}] thì các điểm đã có là 3.0 và 5.0, trung bình cộng bằng 4.0. Sau khi điền, đội A có 3.0 và 4.0 nên trung bình 3.5, đội B có 5.0 và 4.0 nên trung bình 4.5. Kết quả là [{"team": "A", "mean_score": 3.5}, {"team": "B", "mean_score": 4.5}].
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.
