C9-12 · Báo lý do dòng hỏng

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

Đọc tệp lop_hp.csv như XS-08 (mục 9.7): mỗi dòng ma,ho_ten,diem_qt,diem_ck. Viết hàm ly_do_hong(dong) trả về lý do một dòng hỏng, xét theo đúng thứ tự sau và dừng ở lý do đầu tiên gặp:

  1. SO_TRUONG — dòng không có đúng 4 trường (tách bằng dong.strip().split(","));
  2. MA — mã không gồm đúng 8 chữ số;
  3. DIEM — điểm quá trình hoặc điểm cuối kỳ không đổi được thành số bằng float(), hoặc nằm ngoài đoạn [0; 10];

hoặc trả về None nếu dòng hợp lệ. Với mỗi dòng hỏng in so_dong LY_DO (dòng đánh số từ 1 theo tệp); dòng cuối cùng in số dòng hợp lệ.

Như XS-08, dòng trống cũng là dòng hỏng (nó chỉ có 1 trường nên lý do là SO_TRUONG) và vẫn được đánh số.

Cách nộp trên hệ thống chấm. Toàn bộ nội dung tệp lop_hp.csv được đưa vào qua dữ liệu vào. Đọc đến hết dữ liệu bằng for dong in sys.stdin: (Phụ lục D, mẫu 7), xử lý từng dòng như for dong in f: trong doc_danh_sach của XS-08. Ở máy: python bai.py < lop_hp.csv.

Dữ liệu vào

Nội dung tệp lop_hp.csv. Có thể có dòng trống (hoặc chỉ gồm dấu cách) ở giữa tệp; dòng đầu và dòng cuối luôn có nội dung.

Kết quả

  • Mỗi dòng hỏng một dòng so_dong LY_DO, theo thứ tự trong tệp.
  • Dòng cuối: số dòng hợp lệ.

Ràng buộc

  • 1 ≤ số dòng ≤ 1000; mỗi dòng tối đa 100 ký tự ASCII in được.
  • Điểm không viết dạng khoa học (1e1) và không phải nan, inf, không chứa dấu gạch dưới _.

Ví dụ

Dữ liệu vào:

23010001,Nguyen Van An,7.5,8.0
2301002,Tran Thi Binh,6.5,7.0
23010004,Pham Quoc Dung,4.0,40

Kết quả:

2 MA
3 DIEM
1

Giải thích ví dụ

  • Dòng 1 hợp lệ.
  • Dòng 2: đủ 4 trường nhưng mã 2301002 chỉ có 7 chữ số → MA.
  • Dòng 3: mã đúng, float("40") đổi được nhưng 40 ngoài [0; 10] → DIEM.
  • Có 1 dòng hợp lệ.

Thứ tự kiểm tra quyết định kết quả: dòng 2301002,Tran Thi Binh,6,5,7.0 (dấu phẩy thập phân) có 5 trường nên là SO_TRUONG, dù mã cũng sai; dòng có cả mã sai lẫn điểm sai là MA.

Nguồn trong sách: Bài C9-12, 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: (****)


Đang tải...