Ngân hàng câu hỏi của chương

Câu hỏi: PRP201c - Phần 3: Thu thập và trao đổi dữ liệu web

43 câu trắc nghiệm kèm lời giải của môn PRP201c - Lập trình Python, xếp theo thứ tự nhập vào ngân hàng. Trang 3/3 — câu 41–43.

Danh sách câu hỏi

43/43 câuHết danh sách
A^
B?
C.
D*
E$
F+
Lời giải
Đáp án đúng: ".". Trong biểu thức chính quy (regular expression), dấu chấm là ký tự đại diện (wild card): nó khớp đúng một ký tự bất kỳ, trừ ký tự xuống dòng; ví dụ mẫu f.o khớp foo, fao hay f9o. Phương án "^" là ký tự neo khớp vị trí đầu dòng, không khớp ký tự nào. Phương án "?" là bộ lượng hoá (quantifier) cho phép phần đứng trước xuất hiện 0 hoặc 1 lần. Phương án "*" lặp phần đứng trước 0 lần trở lên; phải ghép dấu chấm với dấu sao mới thành mẫu khớp mọi chuỗi, còn bản thân dấu sao không khớp ký tự nào. Phương án "$" là ký tự neo khớp vị trí cuối dòng. Phương án "+" lặp phần đứng trước 1 lần trở lên, như [0-9]+ khớp một dãy chữ số. Muốn khớp dấu chấm thật phải thoát thành \. trong mẫu.
Mở trang câu hỏi này →
AFaster execution
BCatch connection and parsing errors
CWrite files faster
DAvoid memory issues
Lời giải
Đáp án đúng: "Catch connection and parsing errors". Khối try/except bắt ngoại lệ phát sinh trong khối try và chuyển sang xử lý ở except thay vì để chương trình dừng giữa chừng. Khi dùng urllib hoặc socket, mạng có thể lỗi (URLError, hết thời gian chờ, ConnectionRefusedError), và dữ liệu trả về có thể hỏng khiến json.loads ném JSONDecodeError hoặc ElementTree ném ParseError; đặt các lệnh đó trong try giúp chương trình báo lỗi gọn rồi bỏ qua hoặc thử lại. "Faster execution" sai vì try/except không tăng tốc; khi có ngoại lệ còn tốn thêm chi phí xử lý. "Write files faster" không liên quan, tốc độ ghi tệp do hệ điều hành và ổ đĩa quyết định. "Avoid memory issues" sai vì try/except không giải phóng bộ nhớ; bộ nhớ do bộ thu gom rác của Python quản lý, và muốn giảm bộ nhớ phải đọc dữ liệu theo từng phần.
Mở trang câu hỏi này →
Adict
Bfirst
Clist
Dmist
Ewebs
Lời giải
Đáp án đúng: "list". Trong ASCII chữ thường bắt đầu từ 97 cho a, nên giải từng số: 108 = 97 + 11 là chữ thứ mười hai l, 105 = 97 + 8 là i, 115 = 97 + 18 là s, 116 là t; ghép lại thành list. Trong Python có thể kiểm bằng ''.join(chr(n) for n in [108, 105, 115, 116]). "dict" sai vì mã của nó là 100, 105, 99, 116, chữ đầu d là 100 chứ không phải 108. "first" sai vì nó có năm chữ trong khi dãy chỉ có bốn số, và f mang mã 102. "mist" sai vì m mang mã 109, lệch một so với 108 là l, ba chữ sau thì trùng. "webs" sai vì w mang mã 119 và các chữ còn lại cũng khác hoàn toàn.
Mở trang câu hỏi này →