Môn Tin họcQuản lý học tập Tin học

Gỡ lỗi thư viện tính điểm trung bình theo hệ số

Lớp 11Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

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 = 0
  • for i in range(len(dsDiem)):
  • if dsDiem[i] < 0 or dsDiem[i] > 10:
  • print("Dữ liệu không hợp lệ")
  • return -1
  • tong = 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ệ.

InputOutputGiả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
#gỡ lỗi#trung bình có trọng số#kiểm tra dữ liệu hợp lệ#hàm#category:tu_duy_phan_bien#difficulty:analyzing

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ài