Gỡ lỗi thư viện tính điểm trung bình theo hệ số
Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm
Lan muốn viết hàm tinhDiemTB(dsDiem, dsHeSo) để tính điểm trung bình có trọng số theo hệ số, dựa theo ý tưởng của công thức tính nguyên tử khối trung bình đã học ở Nhiệm vụ 3. Hàm cần kiểm tra dữ liệu hợp lệ: hai danh sách phải khác rỗng, có cùng độ dài, và mỗi điểm phải nằm trong khoảng từ 0 đến 10. Nếu dữ liệu không hợp lệ, in ra Dữ liệu không hợp lệ.
Đoạn mã Lan viết (có lỗi) như sau:
def tinhDiemTB(dsDiem, dsHeSo):if len(dsHeSo) > 0 and len(dsDiem) == len(dsHeSo):tong = 0for i in range(len(dsDiem)):if dsDiem[i] < 0 or dsDiem[i] > 10:print("Dữ liệu không hợp lệ")return -1tong = tong + dsDiem[i] * dsHeSo[i]return round(tong / 100, 2)else:print("Dữ liệu không hợp lệ")return -1
Lỗi nằm ở dòng chia cho 100: công thức nguyên tử khối trung bình chia 100 vì tỉ lệ % của các đồng vị luôn cộng lại bằng 100, nhưng hệ số môn học (1, 2, 3, ...) không nhất thiết có tổng bằng 100 — công thức đúng phải chia cho tổng các hệ số.
Hãy viết lại chương trình hoàn chỉnh cho đúng. Chương trình đọc vào một dòng gồm các điểm số (số thực, cách nhau bởi dấu cách) và một dòng gồm các hệ số tương ứng (số thực, cách nhau bởi dấu cách). Nếu dữ liệu hợp lệ, in ra điểm trung bình làm tròn 2 chữ số thập phân; nếu không hợp lệ, in ra Dữ liệu không hợp lệ.
| Input | Output | Giải thích |
|---|---|---|
| 8 7 9 1 2 3 | 8.17 | (8*1+7*2+9*3)/(1+2+3) = 49/6 ≈ 8.17 |
| 8 7 1 2 3 | Dữ liệu không hợp lệ | Hai danh sách không cùng độ dài |
| 12 5 1 1 | Dữ liệu không hợp lệ | Điểm 12 vượt quá 10 |
Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.
Giáo viên đăng nhập để giao bàiBài tập khác lớp 11
- Ước lượng thời gian chấm điểm bài thi trắc nghiệm · Lập trình
- Đo đường chéo sân tập thể thao · Lập trình
- Chồng sách trên bàn học · Lập trình
- Thống kê quãng đường chạy bộ của CLB · Lập trình
- Đếm số cách đóng gói đều sản phẩm · Lập trình
- Theo dõi số bước chân của nhóm tập luyện · Lập trình