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

Đọc tệp điểm và giữ mã định danh

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

Hai dãy đi theo từng dòng

Mỗi dòng `SeaGames.inp` bắt đầu bằng mã, sau đó là ít nhất ba điểm cách nhau bằng khoảng trắng. Có thể có số giám khảo khác nhau giữa các dòng. Mô-đun đọc trả `ma` và `bang_diem` sao cho `ma[i]` đi cùng `bang_diem[i]`. Chẳng hạn dòng `003 6.6 7.0 8.1` thành mã `"003"` và dãy `[6.6, 7.0, 8.1]`. Với tệp văn bản, số điểm phải chuyển từ chữ sang `float`; mã vẫn là chuỗi.

Kiểm từng dòng trước khi thêm dữ liệu

```python def doc_diem(ten_tep): ma, bang_diem = [], [] with open(ten_tep, encoding="utf-8") as f: for so_dong, dong in enumerate(f, 1): truong = dong.split() if len(truong) < 4: raise ValueError(f"Dòng {so_dong}: cần mã và ít nhất 3 điểm") diem = [float(x) for x in truong[1:]] if any(not 0 <= x <= 10 for x in diem): raise ValueError(f"Dòng {so_dong}: điểm ngoài thang 0–10") ma.append(truong[0]) bang_diem.append(diem) return ma, bang_diem ma, bang_diem = doc_diem("SeaGames.inp") print(ma, bang_diem) ``` Nếu tệp chứa `003 6.6 7.0 8.1`, kết quả là `['003'] [[6.6, 7.0, 8.1]]`. `with` đóng tệp sau khi đọc. Dòng rỗng, thiếu điểm, chữ không đổi được thành số hoặc điểm ngoài thang đề bài đều làm chương trình báo lỗi; kiểm xong mới thêm vào hai dãy để chúng không lệch vị trí.

Bài luyện

Dòng `003 6.6 7.0 8.1` phải cho cặp dữ liệu nào?
Chọn một đáp án

Bài luyện

Vì sao mỗi dòng hợp lệ phải có ít nhất bốn trường?
Chọn một đáp án

Bài luyện

Với dòng `045 9.0 8.5`, hàm `doc_diem` làm gì?
Chọn một đáp án

Đang học