Thống kê điểm số và phân loại học viên
Hệ thống học tập của AI Empire Academy kết thúc học kỳ cần tổng kết báo cáo thành tích học tập của một lớp học. Mỗi học viên được biểu diễn bằng một từ điển có cấu trúc:
Tiến độ của tôi ở bài này
Điểm đượ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: dict access, iteration, floating point.
Nội dung đề bài
Mục tiêu kiến thức
- Làm việc với cấu trúc dữ liệu thực tế: danh sách chứa các từ điển
list[dict]. - Tính toán các chỉ số tổng hợp: tổng số, điểm trung bình làm tròn, phần tử lớn nhất.
- Gom nhóm và đếm tần suất phân phối theo thang điểm chuẩn.
Mô tả bài toán
Hệ thống học tập của AI Empire Academy kết thúc học kỳ cần tổng kết báo cáo thành tích học tập của một lớp học. Mỗi học viên được biểu diễn bằng một từ điển có cấu trúc: {"id": str, "name": str, "score": float}.
Hãy viết hàm grade_statistics(students: list[dict]) -> dict nhận vào danh sách học viên và trả về từ điển báo cáo có cấu trúc sau:
{
"total_students": int, # Tong so hoc vien
"average_score": float, # Diem trung binh, lam tron 2 chu so thap phan
"highest_student": dict, # Dict cua hoc vien co diem cao nhat (nguoi dau tien neu co hoa diem)
"grade_distribution": {
"XuatSac": int, # score >= 9.0
"Gioi": int, # 8.0 <= score < 9.0
"Kha": int, # 6.5 <= score < 8.0
"TrungBinh": int # score < 6.5
}
}Quy tắc nghiệp vụ:
- Nếu danh sách
studentsrỗng, ném ra ngoại lệValueError("Danh sach hoc vien rong"). - Điểm hợp lệ của mỗi học viên nằm trong đoạn [0.0, 10.0].
Input
Danh sách students chứa các từ điển học viên.
Output
Từ điển chứa các trường thống kê như đặc tả ở trên.
Ràng buộc
- Số lượng học viên N: 0 ≤ N ≤ 104.
- 0.0 ≤ score ≤ 10.0.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
students = [
{"id": "SV01", "name": "Nam", "score": 8.5},
{"id": "SV02", "name": "Hoa", "score": 9.5},
{"id": "SV03", "name": "Binh", "score": 6.0}
]Output
{
"total_students": 3,
"average_score": 8.0,
"highest_student": {"id": "SV02", "name": "Hoa", "score": 9.5},
"grade_distribution": {
"XuatSac": 1,
"Gioi": 1,
"Kha": 0,
"TrungBinh": 1
}
}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.
