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

Thống kê điểm của một học sinh

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

Nhiệm vụ và dữ liệu thử

Tạo tệp `diem_mot_nguoi.py`. Dùng **điểm giả** `[8.0, 7.0, 9.0]` của một môn học, tính điểm trung bình, thấp nhất và cao nhất. Trong bài thử này, điểm hợp lệ nằm từ 0 đến 10 và cần **ít nhất hai** đầu điểm như nhiệm vụ SGK. Kết quả dự kiến là trung bình `8.0`, thấp nhất `7.0`, cao nhất `9.0`; chương trình không tính hệ số hay làm tròn theo quy chế đánh giá nào.

Duyệt một lần để cập nhật hai cực trị

```python def thong_ke(diem): if len(diem) < 2 or any(not 0 <= x <= 10 for x in diem): raise ValueError("Cần ít nhất hai điểm trong khoảng 0–10") tong = 0 thap_nhat = cao_nhat = diem[0] for x in diem: tong += x if x < thap_nhat: thap_nhat = x if x > cao_nhat: cao_nhat = x return tong / len(diem), thap_nhat, cao_nhat print(thong_ke([8.0, 7.0, 9.0])) ``` Chạy tệp bằng Python sẽ in `(8.0, 7.0, 9.0)`. Giá trị đầu tiên được dùng để khởi tạo cực trị vì nó thật sự thuộc dãy; mỗi lần duyệt, chỉ cập nhật khi gặp điểm nhỏ hơn hoặc lớn hơn. Thử đổi dữ liệu thành `[6.0, 6.0]` thì được `(6.0, 6.0, 6.0)`. Nếu thay bằng `[]`, `[8.0]` hay `[11.0, 7.0]`, chương trình báo `ValueError` trước khi truy cập `diem[0]` hoặc chia cho độ dài không phù hợp. Khi chuyển sang nhập từ bàn phím, không coi chữ nhập sai là điểm 0; cần yêu cầu nhập lại.

Nhập điểm và sửa dữ liệu chưa hợp lệ

Đặt đoạn sau **sau định nghĩa hàm** `thong_ke` trong cùng tệp. Khi chạy, nhập các điểm cách nhau bằng dấu cách; nhập `8 7 9` sẽ nhận kết quả `(8.0, 7.0, 9.0)`. ```python while True: chuoi = input("Nhập ít nhất hai điểm: ") try: diem = [float(x) for x in chuoi.split()] ket_qua = thong_ke(diem) except ValueError as loi: print("Nhập lại:", loi) continue print(ket_qua) break ``` Thử nhập `8 a 9`: `float("a")` báo lỗi và chương trình hỏi lại. Thử nhập `8`: hàm báo thiếu đầu điểm. Chỉ khi chuyển được thành ít nhất hai số trong khoảng 0–10, vòng lặp mới kết thúc.

Bài luyện

Với điểm `[8.0, 7.0, 9.0]`, kết quả trung bình là bao nhiêu?
Chọn một đáp án

Bài luyện

Vì sao chương trình gán `thap_nhat = cao_nhat = diem[0]` sau bước kiểm dữ liệu?
Chọn một đáp án

Bài luyện

Dữ liệu nào bị hàm `thong_ke` từ chối theo điều kiện của bài thử?
Chọn một đáp án

Đang học