btvn.vn
Tìm kiếm Đăng nhập

Thống kê điểm của cả nhóm

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Hai danh sách phải khớp vị trí

Tạo tệp `diem_ca_nhom.py` với dữ liệu hư cấu: `ten = ["An", "Bình", "Chi"]`, `tat_ca_diem = [[8, 7], [9, 8, 7], [6, 10]]`. Tên ở vị trí `i` ứng với dãy điểm ở vị trí `i`; nhóm Bình có ba đầu điểm, hai nhóm còn lại có hai. Vì độ dài các hàng **khác nhau**, đây là danh sách chứa danh sách, không gọi là ma trận chữ nhật m × n. Nhiệm vụ là in trung bình từng người, tên có trung bình cao nhất và điểm thấp nhất của cả nhóm.

Duyệt từng người rồi từng điểm

```python ten = ["An", "Bình", "Chi"] tat_ca_diem = [[8, 7], [9, 8, 7], [6, 10]] if len(ten) != len(tat_ca_diem) or not ten: raise ValueError("Tên và dãy điểm phải khớp, không rỗng") if any(not hang for hang in tat_ca_diem): raise ValueError("Mỗi người cần ít nhất một điểm") trung_binh = [] diem_thap_nhat = tat_ca_diem[0][0] for i in range(len(ten)): hang = tat_ca_diem[i] trung_binh.append(sum(hang) / len(hang)) for x in hang: if x < diem_thap_nhat: diem_thap_nhat = x cao_nhat = max(trung_binh) nguoi_cao_nhat = [ten[i] for i in range(len(ten)) if trung_binh[i] == cao_nhat] print(trung_binh, nguoi_cao_nhat, diem_thap_nhat) ``` Kết quả là `[7.5, 8.0, 8.0] ['Bình', 'Chi'] 6`. Mỗi hàng được chia cho **số điểm của chính hàng ấy**, nên Bình chia 24 cho 3 và Chi chia 16 cho 2. Hai người cùng đạt trung bình cao nhất được giữ cả hai, thay vì âm thầm chỉ chọn người xuất hiện đầu. Điểm thấp nhất 6 được tìm khi duyệt mọi hàng. Nếu tên và số hàng không bằng nhau hoặc có hàng rỗng, chương trình báo lỗi trước khi thống kê; với điểm thực, còn cần kiểm từng giá trị thuộc khoảng 0–10.

Bài luyện

Vì sao không dùng `len(tat_ca_diem)` làm mẫu số cho mọi người?
Chọn một đáp án

Bài luyện

Theo dữ liệu ví dụ, những ai có trung bình cao nhất?
Chọn một đáp án

Bài luyện

Nếu có tên ở ba vị trí nhưng chỉ có hai hàng điểm, chương trình xử lí thế nào?
Chọn một đáp án

Đang học