Bộ 15 - Trắc nghiệm Lập trình Python online có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:
Trong Python, điểm khác biệt cơ bản nhất giữa 'list' và 'tuple' là gì?
💡 Lời giải chi tiết:
Theo đặc tính của các cấu trúc dữ liệu cơ bản trong Python, List cho phép chỉnh sửa nội dung sau khi tạo còn Tuple thì cố định giá trị. Kết luận Lý giải List có thể thay đổi (mutable) còn Tuple không thể thay đổi (immutable).
Câu 2:
Kết quả của biểu thức 'python'[1:4] trong Python là gì?
💡 Lời giải chi tiết:
Phép cắt chuỗi (slicing) trong Python lấy các ký tự bắt đầu từ chỉ số 1 đến trước chỉ số 4, tương ứng với các vị trí 1, 2, 3. Kết luận Lý giải 'yth'.
Câu 3:
Kiểu dữ liệu nào sau đây KHÔNG THỂ được dùng làm 'key' trong một 'dictionary' của Python?
💡 Lời giải chi tiết:
Key trong dictionary phải là kiểu dữ liệu có thể băm (hashable) và không thay đổi được (immutable), trong khi List là kiểu dữ liệu có thể thay đổi. Kết luận Lý giải List (danh sách).
Câu 4:
Kết quả của biểu thức [x * 2 for x in range(3)] là gì?
💡 Lời giải chi tiết:
Biểu thức 'list comprehension' này nhân đôi từng giá trị x trong dãy range(3) gồm 0, 1, 2 để tạo ra danh sách mới. Kết luận Lý giải [0, 2, 4].
Câu 5:
Từ khóa nào được sử dụng để thay đổi giá trị của một biến toàn cục bên trong một hàm?
💡 Lời giải chi tiết:
Trong Python, từ khóa 'global' khai báo rằng một tên biến cụ thể nằm ở phạm vi toàn cục, cho phép hàm sửa đổi giá trị của nó. Kết luận Lý giải global.
Câu 6:
Hàm 'lambda' trong Python được định nghĩa tốt nhất là gì?
💡 Lời giải chi tiết:
Hàm lambda là một hàm không tên được định nghĩa bằng một dòng duy nhất và tự động trả về giá trị của biểu thức đó. Kết luận Lý giải Một hàm ẩn danh nhỏ gọn chỉ bao gồm một biểu thức duy nhất.
Câu 7:
Trong cấu trúc 'try-except-finally', khối lệnh 'finally' sẽ được thực thi khi nào?
💡 Lời giải chi tiết:
Khối 'finally' được thiết kế để thực hiện các thao tác dọn dẹp tài nguyên và sẽ luôn chạy bất kể kết quả của khối try-except. Kết luận Lý giải Luôn luôn được thực thi dù có lỗi xảy ra hay không.
Câu 8:
Kết quả của len(set([1, 2, 2, 3, 3, 3])) là bao nhiêu?
💡 Lời giải chi tiết:
Kiểu dữ liệu 'set' trong Python tự động loại bỏ các phần tử trùng lặp, do đó danh sách trên chỉ còn lại 3 phần tử duy nhất là 1, 2, 3. Kết luận Lý giải 3.
Câu 9:
Khi mở một tệp tin bằng hàm open(), chế độ 'a' có ý nghĩa gì?
💡 Lời giải chi tiết:
Chế độ 'a' (append) cho phép con trỏ tệp đặt ở cuối tệp để viết thêm dữ liệu mới vào nội dung hiện có. Kết luận Lý giải Một tệp để ghi thêm dữ liệu vào cuối tệp mà không xóa nội dung cũ.
Câu 10:
Tham số '*args' trong định nghĩa hàm Python có tác dụng gì?
💡 Lời giải chi tiết:
Sử dụng dấu sao trước tên tham số giúp hàm có thể tiếp nhận bất kỳ số lượng đối số không tên nào và gom chúng lại thành một tuple. Kết luận Lý giải Cho phép truyền một số lượng biến các đối số vị trí dưới dạng một tuple.
Câu 11:
Trong lập trình hướng đối tượng với Python, hàm 'super()' được dùng để làm gì?
💡 Lời giải chi tiết:
Hàm 'super()' cung cấp cách thức truy cập thuận tiện vào các phương thức của lớp cha, đặc biệt hữu ích khi cần mở rộng hàm khởi tạo. Kết luận Lý giải Gọi các phương thức hoặc hàm khởi tạo của lớp cha từ lớp con.
Câu 12:
Sự khác biệt giữa toán tử '==' và toán tử 'is' trong Python là gì?
💡 Lời giải chi tiết:
Toán tử '==' kiểm tra xem nội dung của hai đối tượng có bằng nhau không, trong khi 'is' kiểm tra xem chúng có cùng là một thực thể trong bộ nhớ không. Kết luận Lý giải '==' so sánh giá trị, còn 'is' so sánh định danh (địa chỉ ô nhớ) của đối tượng.
Câu 13:
Kết quả của biểu thức list(range(1, 10, 3)) là gì?
💡 Lời giải chi tiết:
Hàm range(start, stop, step) bắt đầu từ 1, tăng dần 3 đơn vị và dừng lại trước khi chạm tới 10. Kết luận Lý giải [1, 4, 7].
Câu 14:
Mục đích chính của phương thức '__init__' trong một lớp Python là gì?
💡 Lời giải chi tiết:
Phương thức '__init__' là hàm khởi tạo tự động chạy khi một 'instance' của lớp được thành lập để thiết lập trạng thái ban đầu cho đối tượng. Kết luận Lý giải Để khởi tạo các thuộc tính của đối tượng ngay khi nó được tạo ra.
Câu 15:
Cách nào sau đây là đúng để định dạng một chuỗi bằng 'f-string' trong Python 3.6+?
💡 Lời giải chi tiết:
F-string (formatted string literals) được bắt đầu bằng chữ 'f' trước dấu ngoặc kép và cho phép nhúng trực tiếp biến vào trong cặp ngoặc nhọn. Kết luận Lý giải f'Giá trị là {val}'.
Câu 16:
Phương thức list.pop() không truyền tham số sẽ thực hiện hành động nào?
💡 Lời giải chi tiết:
Mặc định, phương thức pop() loại bỏ phần tử ở vị trí cuối cùng của list và trả về giá trị của phần tử đó cho người dùng. Kết luận Lý giải Xóa và trả về phần tử cuối cùng của danh sách.
Câu 17:
Hàm zip([1, 2], ['a', 'b']) sẽ tạo ra kết quả có cấu trúc như thế nào khi chuyển sang list?
💡 Lời giải chi tiết:
Hàm zip kết hợp các phần tử có cùng chỉ số từ nhiều iterable lại với nhau thành các cặp tuple. Kết luận Lý giải [(1, 'a'), (2, 'b')].
Câu 18:
Hàm 'enumerate()' thường được sử dụng trong vòng lặp 'for' để làm gì?
💡 Lời giải chi tiết:
Hàm enumerate() bọc một iterable và trả về một đối tượng liệt kê chứa các cặp gồm chỉ số đếm và giá trị tương ứng. Kết luận Lý giải Để lấy đồng thời cả chỉ số (index) và giá trị của phần tử trong quá trình lặp.
Câu 19:
Kết quả của list(map(str, [1, 2, 3])) là gì?
💡 Lời giải chi tiết:
Hàm map áp dụng hàm str lên từng phần tử của danh sách số nguyên, chuyển đổi chúng thành các chuỗi ký tự. Kết luận Lý giải ['1', '2', '3'].
Câu 20:
Để tạo ra một bản sao hoàn toàn độc lập của một đối tượng phức hợp (như danh sách lồng nhau), ta nên dùng phương thức nào?
💡 Lời giải chi tiết:
Deepcopy tạo ra bản sao mới của đối tượng gốc và đệ quy sao chép tất cả các đối tượng con bên trong nó, tránh việc thay đổi chung dữ liệu. Kết luận Lý giải Hàm copy.deepcopy() từ module 'copy'.
Câu 21:
Sự khác biệt giữa 'break' và 'continue' trong vòng lặp là gì?
💡 Lời giải chi tiết:
Lệnh 'break' thoát hẳn ra khỏi khối lệnh của vòng lặp, trong khi 'continue' chỉ dừng các lệnh phía sau nó trong lần lặp đó. Kết luận Lý giải 'break' kết thúc toàn bộ vòng lặp, 'continue' chỉ bỏ qua lần lặp hiện tại để sang lần lặp kế tiếp.
Câu 22:
Tại sao 'generator' được coi là tiết kiệm bộ nhớ hơn so với 'list' khi làm việc với dữ liệu lớn?
💡 Lời giải chi tiết:
Generator sử dụng cơ chế 'lazy evaluation', không tính toán và lưu trữ tất cả giá trị ngay lập tức mà chỉ tính khi cần sử dụng. Kết luận Lý giải Vì generator chỉ tạo ra một phần tử tại một thời điểm khi được yêu cầu thay vì lưu toàn bộ vào RAM.
Câu 23:
Trong Python, việc đặt dấu gạch dưới kép (ví dụ __name) trước tên thuộc tính của lớp nhằm mục đích gì?
💡 Lời giải chi tiết:
Cơ chế 'name mangling' thay đổi tên biến nội bộ của lớp để tránh xung đột tên trong kế thừa và làm khó việc truy cập trái phép. Kết luận Lý giải Để thực hiện 'name mangling', giúp hạn chế truy cập trực tiếp từ bên ngoài lớp (giả lập private).
Câu 24:
Hàm nào trong module 'math' được dùng để làm tròn một số lên số nguyên gần nhất?
💡 Lời giải chi tiết:
Hàm math.ceil() (ceiling) trả về giá trị nguyên nhỏ nhất lớn hơn hoặc bằng số được truyền vào. Kết luận Lý giải math.ceil().
Câu 25:
Biểu thức '5 > 3 or 2 > 10 and 1 == 1' trả về kết quả nào?
💡 Lời giải chi tiết:
Theo thứ tự ưu tiên, phép 'and' được thực hiện trước (2 > 10 and 1 == 1 là False), sau đó đến 'or' (5 > 3 or False là True). Kết luận Lý giải True.