Bộ 3 - 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, lệnh nào được sử dụng để kiểm tra phiên bản của trình thông dịch thông qua giao diện dòng lệnh (CLI)?
💡 Lời giải chi tiết:
Theo tài liệu chính thức, lệnh 'python --version' hoặc 'python -V' là cách chuẩn để truy xuất thông tin phiên bản hiện tại. Kết luận Lý giải python --version
Câu 2:
Điểm khác biệt cơ bản nhất về tính chất giữa kiểu dữ liệu 'list' và 'tuple' trong Python là gì?
💡 Lời giải chi tiết:
Đặc tính cốt lõi phân biệt hai kiểu dữ liệu này là tính khả biến, trong đó 'list' cho phép sửa đổi nội dung sau khi khởi tạo còn 'tuple' thì cố định. Kết luận Lý giải List có thể thay đổi (mutable) còn Tuple không thể thay đổi (immutable)
Câu 3:
Cú pháp slicing nào sau đây được dùng để đảo ngược một chuỗi 's' trong Python?
💡 Lời giải chi tiết:
Kỹ thuật slicing với bước nhảy -1 (step) sẽ duyệt chuỗi từ cuối lên đầu để tạo ra chuỗi đảo ngược. Kết luận Lý giải s[::-1]
Câu 4:
Trong biểu thức logic 'A and B', nếu 'A' được đánh giá là False thì Python sẽ làm gì tiếp theo?
💡 Lời giải chi tiết:
Python sử dụng cơ chế đánh giá ngắn mạch (short-circuit evaluation), nếu toán tử 'and' gặp vế đầu là False thì kết quả cuối cùng chắc chắn là False. Kết luận Lý giải Dừng lại và trả về False ngay lập tức
Câu 5:
Để thay đổi giá trị của một biến toàn cục (global) bên trong một hàm, bạn phải sử dụng từ khóa nào?
💡 Lời giải chi tiết:
Từ khóa 'global' thông báo cho trình thông dịch rằng biến đang được nhắc đến thuộc phạm vi toàn cục thay vì tạo ra một biến cục bộ mới. Kết luận Lý giải global
Câu 6:
Phương thức nào của 'dict' (từ điển) cho phép lấy giá trị của một khóa mà không gây lỗi 'KeyError' nếu khóa đó không tồn tại?
💡 Lời giải chi tiết:
Phương thức 'get()' trả về giá trị của khóa nếu có, hoặc trả về 'None' (hoặc giá trị mặc định) nếu khóa không tồn tại thay vì gây lỗi dừng chương trình. Kết luận Lý giải dict.get()
Câu 7:
Kết quả của biểu thức list comprehension '[x * 2 for x in range(3)]' là gì?
💡 Lời giải chi tiết:
Hàm range(3) tạo ra các số 0, 1, 2 và phép nhân 2 tương ứng sẽ tạo ra danh sách gồm 0, 2, 4. Kết luận Lý giải [0, 2, 4]
Câu 8:
Giá trị nào sau đây được coi là False (Falsy) khi ép kiểu sang Boolean trong Python?
💡 Lời giải chi tiết:
Theo quy tắc của Python, các tập hợp rỗng như danh sách [], từ điển {}, hoặc chuỗi rỗng '' đều được đánh giá là False. Kết luận Lý giải Danh sách trống '[]'
Câu 9:
Lợi ích chính của việc sử dụng câu lệnh 'with' khi mở file trong Python là gì?
💡 Lời giải chi tiết:
Câu lệnh 'with' đóng vai trò là một 'context manager', đảm bảo tài nguyên được giải phóng an toàn bằng cách tự động gọi phương thức đóng file. Kết luận Lý giải Tự động đóng file ngay cả khi xảy ra lỗi bên trong khối lệnh
Câu 10:
Trong cấu trúc xử lý ngoại lệ '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ế để chứa các mã dọn dẹp cần thiết phải chạy dù chương trình có gặp lỗi hay thực thi bình thường. Kết luận Lý giải Luôn luôn được thực thi bất kể có lỗi hay không
Câu 11:
Tham số đầu tiên của một phương thức (method) bên trong một Class trong Python thường được đặt tên là gì theo quy ước?
💡 Lời giải chi tiết:
Theo quy ước của cộng đồng Python (PEP 8), tham số đầu tiên đại diện cho chính đối tượng đó luôn được đặt tên là 'self'. Kết luận Lý giải self
Câu 12:
Đặc điểm nổi bật nhất của kiểu dữ liệu 'set' (tập hợp) trong Python là gì?
💡 Lời giải chi tiết:
Kiểu dữ liệu 'set' được tối ưu hóa để lưu trữ các giá trị duy nhất và không duy trì thứ tự xuất hiện của chúng. Kết luận Lý giải Chứa các phần tử không trùng lặp và không có thứ tự
Câu 13:
Từ khóa 'lambda' trong Python được sử dụng để định nghĩa loại hàm nào?
💡 Lời giải chi tiết:
Từ khóa 'lambda' cho phép tạo ra các hàm nhỏ, không có tên, thường được dùng cho các thao tác xử lý dữ liệu ngắn gọn. Kết luận Lý giải Hàm ẩn danh (anonymous function)
Câu 14:
Trong lập trình hướng đối tượng với Python, phương thức '__init__' có vai trò gì?
💡 Lời giải chi tiết:
Phương thức '__init__' là hàm khởi tạo (constructor) được tự động gọi để thiết lập trạng thái ban đầu cho một instance mới của lớp. Kết luận Lý giải Khởi tạo các thuộc tính của đối tượng khi nó được tạo ra
Câu 15:
Ký hiệu nào được sử dụng để khai báo một 'decorator' ngay phía trên định nghĩa của một hàm?
💡 Lời giải chi tiết:
Trong Python, cú pháp '@' theo sau là tên decorator được dùng để mở rộng hoặc sửa đổi hành vi của hàm bên dưới một cách ngắn gọn. Kết luận Lý giải @
Câu 16:
Theo tiêu chuẩn PEP 8, độ thụt đầu dòng (indentation) khuyến nghị cho mã nguồn Python là bao nhiêu khoảng trắng?
💡 Lời giải chi tiết:
Tài liệu PEP 8 quy định rõ ràng việc sử dụng 4 khoảng trắng cho mỗi cấp độ thụt đầu dòng để đảm bảo tính đồng nhất và dễ đọc của mã nguồn. Kết luận Lý giải 4 khoảng trắng
Câu 17:
Hàm 'range(1, 5)' trong Python sẽ tạo ra một dãy số gồm các giá trị nào?
💡 Lời giải chi tiết:
Hàm range(start, stop) sẽ tạo dãy số bắt đầu từ 'start' và kết thúc tại 'stop - 1', do đó số 5 sẽ bị loại trừ. Kết luận Lý giải 1, 2, 3, 4
Câu 18:
Trong định nghĩa hàm, tham số '*args' có ý nghĩa gì?
💡 Lời giải chi tiết:
Cú pháp '*args' được sử dụng để thu thập các đối số vị trí dư thừa truyền vào hàm và lưu trữ chúng vào một bộ dữ liệu kiểu tuple. Kết luận Lý giải Cho phép hàm nhận một số lượng đối số vị trí tùy ý dưới dạng tuple
Câu 19:
Hàm 'map()' trong Python được sử dụng với mục đích chính là gì?
💡 Lời giải chi tiết:
Hàm 'map()' nhận vào một hàm và một iterable, sau đó trả về một iterator chứa kết quả của việc thực hiện hàm đó trên từng phần tử. Kết luận Lý giải Áp dụng một hàm lên tất cả các phần tử của một tập dữ liệu (iterable)
Câu 20:
Để viết chú thích trên nhiều dòng trong Python, người ta thường sử dụng cặp ký hiệu nào?
💡 Lời giải chi tiết:
Mặc dù chuỗi ba dấu ngoặc kép có thể dùng làm tài liệu (docstring), nhưng cách chuẩn nhất để viết chú thích mã trong Python là dùng dấu '#' cho mỗi dòng. Kết luận Lý giải Dùng dấu thăng '#' ở đầu mỗi dòng
Câu 21:
Phương thức định dạng chuỗi (string formatting) nào được giới thiệu từ Python 3.6 và được khuyến nghị sử dụng vì tính gọn nhẹ?
💡 Lời giải chi tiết:
f-strings cho phép nhúng trực tiếp biểu thức vào bên trong chuỗi bằng cách thêm tiền tố 'f' và đặt biến trong dấu ngoặc nhọn, giúp mã nguồn rõ ràng và nhanh hơn. Kết luận Lý giải f-strings (Formatted string literals)
Câu 22:
Trong kế thừa lớp, hàm nào được dùng để gọi các phương thức từ lớp cha (parent class)?
💡 Lời giải chi tiết:
Hàm 'super()' trả về một đối tượng proxy cho phép truy cập và gọi các phương thức được định nghĩa ở lớp cha của lớp hiện tại. Kết luận Lý giải super()
Câu 23:
Sự hiện diện của file nào trong một thư mục cho phép Python nhận diện thư mục đó như một 'package' (gói)?
💡 Lời giải chi tiết:
Tệp '__init__.py' (dù có thể để trống) là dấu hiệu để trình thông dịch Python xử lý thư mục đó như một gói chứa các module bên trong. Kết luận Lý giải __init__.py
Câu 24:
Sự khác biệt giữa phương thức 'append()' và 'extend()' của một danh sách (list) là gì?
💡 Lời giải chi tiết:
Trong khi 'append()' coi đối số truyền vào là một đối tượng duy nhất để thêm vào cuối, 'extend()' sẽ lặp qua đối số đó để thêm từng phần tử vào danh sách. Kết luận Lý giải append() thêm một phần tử đơn lẻ, còn extend() thêm các phần tử từ một iterable
Câu 25:
Để tạo một bản sao hoàn toàn độc lập của một danh sách lồng nhau (nested list), bạn nên dùng phương thức nào từ module 'copy'?
💡 Lời giải chi tiết:
Hàm 'deepcopy()' thực hiện sao chép đệ quy mọi đối tượng bên trong, đảm bảo sự thay đổi ở bản sao không ảnh hưởng đến bản gốc phức tạp. Kết luận Lý giải copy.deepcopy()