C9-01 · Đếm dòng và từ
Xem dạng PDFĐề
Cho nội dung tệp văn bản van_ban.txt (có thể có dòng trống). In trên một dòng ba số nguyên: số dòng của tệp, số dòng có nội dung (dòng khác rỗng sau khi strip()) và tổng số từ. Từ là một dãy ký tự liền nhau không chứa khoảng trắng, đúng như các phần tử mà split() (không đối số) tách ra.
Cách nộp trên hệ thống chấm. Hệ thống chỉ có dữ liệu vào chuẩn, nên toàn bộ nội dung tệp
van_ban.txtđược đưa vào qua dữ liệu vào. Chương trình đọc đến hết dữ liệu bằngfor dong in sys.stdin:(Phụ lục D, mẫu 7) — duyệt đúng nhưfor dong in f:với tệp đang mở (mục 9.2.3), mỗidongvẫn còn ký tự xuống dòng ở cuối. Ở máy, chạypython bai.py < van_ban.txtđể thử.
Dữ liệu vào
Nội dung tệp van_ban.txt, nguyên văn:
- Có thể có dòng trống, dòng chỉ gồm dấu cách hoặc tab; giữa các từ có thể có nhiều dấu cách hoặc tab.
- Tệp có thể rỗng (0 dòng).
- Dòng cuối có thể không có ký tự xuống dòng; nó vẫn là một dòng.
Kết quả
Một dòng gồm ba số nguyên cách nhau một dấu cách: số dòng, số dòng có nội dung, tổng số từ.
Ràng buộc
- Tối đa 1000 dòng, mỗi dòng tối đa 200 ký tự.
- Chỉ gồm chữ cái, chữ số, dấu câu ASCII, dấu cách và tab (không dấu tiếng Việt).
Ví dụ
Dữ liệu vào:
Hoc Python
moi ngay mot it
Kết quả:
3 2 6
Giải thích ví dụ
Tệp có 3 dòng: Hoc Python, một dòng trống, moi ngay mot it. Dòng 2 rỗng sau strip() nên chỉ có 2 dòng có nội dung. Số từ: 2 + 0 + 4 = 6.
Hai bẫy cần thử trước khi nộp: tệp kết thúc bằng \n thì read().split("\n") cho thêm một chuỗi rỗng ở cuối (đếm thừa một dòng); dòng chỉ có dấu cách nhìn như trống nhưng dong != "\n".
Nguồn trong sách: Bài C9-01, 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: (*)