C9-09 · Tìm dòng chứa từ khóa
Xem dạng PDFĐề
Tệp gop_y.txt mỗi dòng một góp ý; dữ liệu vào là một từ khóa. In mỗi dòng góp ý (đã strip()) chứa từ khóa, không phân biệt hoa thường, theo dạng so_dong: noi_dung, trong đó so_dong là số thứ tự của dòng trong tệp, đánh số từ 1. Không có dòng nào chứa thì in KHONG CO.
"Chứa" nghĩa là từ khóa là chuỗi con của dòng (phép in của chuỗi, mục 7.2), sau khi đổi cả hai về chữ thường: từ khóa phong có trong Phongmay het cho. Mỗi dòng thỏa mãn chỉ in một lần, giữ nguyên chữ hoa, chữ thường như trong tệp.
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 hai nguồn được ghép lại: dòng đầu là từ khóa (đọc bằng
input()), các dòng còn lại là nội dung tệpgop_y.txt(đọc tiếp bằngfor dong in sys.stdin:, Phụ lục D mẫu 7). Dòng từ khóa không tính vào số thứ tự dòng của tệp.
Dữ liệu vào
- Dòng 1: từ khóa.
- Các dòng tiếp theo đến hết: nội dung tệp
gop_y.txt, mỗi dòng một góp ý (có thể có khoảng trắng ở đầu/cuối dòng).
Kết quả
Mỗi dòng chứa từ khóa in một dòng so_dong: noi_dung (một dấu cách sau dấu hai chấm), theo thứ tự trong tệp; hoặc một dòng KHONG CO.
noi_dung là dòng đã strip(): không còn dấu cách/tab ở đầu và cuối. Hệ thống so từng dòng, từng ký tự (chỉ bỏ qua khoảng trắng thừa ở cuối dòng), nên in dòng chưa strip() — còn dấu cách/tab ở đầu — sẽ bị Wrong Answer.
Ràng buộc
- Từ khóa gồm 1 đến 20 chữ cái/chữ số, không có dấu cách.
- Tệp có 1 đến 1000 dòng, không có dòng trống; mỗi dòng tối đa 200 ký tự ASCII in được (có thể có tab).
Ví dụ
Dữ liệu vào:
PHONG
Can them o cam
Wifi yeu o phong may
Kết quả:
2: Wifi yeu o phong may
Giải thích ví dụ
Đổi về chữ thường, từ khóa là phong. Dòng 1 can them o cam không chứa; dòng 2 wifi yeu o phong may chứa, nên in số dòng 2 và nội dung gốc của dòng.
Phải đổi cả từ khóa lẫn dòng về cùng một kiểu chữ; chỉ đổi một bên thì PHONG không bao giờ khớp.
Nguồn trong sách: Bài C9-09, 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: (***)