C9-10 · Ghép điểm từ hai tệp
Xem dạng PDFĐề
Tệp qt.csv mỗi dòng ma,diem_qt; tệp ck.csv mỗi dòng ma,diem_ck (thứ tự các mã có thể khác qt.csv). Theo thứ tự của qt.csv, với mỗi sinh viên in ma diem_hp loai, trong đó điểm học phần và loại tính bằng tinh_diem_hp, xep_loai của mục 5.7:
diem_hp = round(0.4 * diem_qt + 0.6 * diem_ck, 1), in đúng 1 chữ số thập phân;- loại
Anếudiem_hp≥ 8,5;Bnếu ≥ 7,0;Cnếu ≥ 5,5;Dnếu ≥ 4,0; còn lạiF(xếp loại trên điểm đã làm tròn).
Sinh viên không có trong ck.csv thì in ma THIEU DIEM CK. Mã có trong ck.csv mà không có trong qt.csv thì bỏ qua. Gợi ý: đọc ck.csv vào dict mã → điểm (mục 8.1); với tệp lớn, tìm tuần tự trong danh sách sẽ quá chậm.
Cách nộp trên hệ thống chấm. Hệ thống chỉ có một nguồn dữ liệu vào, nên nội dung hai tệp được ghép lần lượt, mỗi tệp có một dòng ghi số dòng ở trước: n rồi n dòng của
qt.csv, sau đó k rồi k dòng củack.csv(Phụ lục D, mẫu 3). Mỗi dòng tách bằnginput().split(",")như dòng đọc từ tệp.
Dữ liệu vào
- Dòng đầu: n. n dòng tiếp theo: nội dung
qt.csv, mỗi dòngma,diem_qt. - Dòng tiếp: k. k dòng tiếp theo: nội dung
ck.csv, mỗi dòngma,diem_ck.
Kết quả
n dòng theo thứ tự qt.csv: ma diem_hp loai hoặc ma THIEU DIEM CK.
Ràng buộc
- 1 ≤ n ≤ 50 000; 0 ≤ k ≤ 50 000.
- Mã gồm đúng 8 chữ số; trong mỗi tệp các mã đôi một khác nhau.
- Điểm trong [0; 10], viết dạng số nguyên (
8) hoặc có đúng một chữ số thập phân (8.0).
Ví dụ
Dữ liệu vào:
2
23010003,8.0
23010005,5.0
1
23010003,8.8
Kết quả:
23010003 8.5 A
23010005 THIEU DIEM CK
Giải thích ví dụ
- 23010003: 0,4 × 8,0 + 0,6 × 8,8 = 8,48, làm tròn 1 chữ số được 8,5 → loại A. Nếu xếp loại trên 8,48 (chưa làm tròn) sẽ ra B — sai.
- 23010005 không có trong
ck.csv→23010005 THIEU DIEM CK.
Nguồn trong sách: Bài C9-10, mục 9.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (***)