Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Python - Đề 05 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong lập trình Python, bạn muốn kiểm tra xem một biến `x` có thuộc kiểu dữ liệu số nguyên hay không. Cách nào sau đây là đúng và Pythonic nhất để thực hiện việc này?
- A. if type(x) == int:
- B. if isinstance(x, int):
- C. if str(type(x)) == "":
- D. if x.__class__ is int:
Câu 2: Cho đoạn mã Python sau:
```python
def calculate_sum(*args):
total = 0
for arg in args:
total += arg
return total
result = calculate_sum(1, 2, "3", 4.0)
print(result)
```
Đoạn mã trên sẽ gây ra lỗi gì khi thực thi?
- A. Lỗi cú pháp (SyntaxError) do cách khai báo hàm không đúng.
- B. Lỗi logic do vòng lặp không thực hiện phép cộng đúng.
- C. Lỗi kiểu dữ liệu (TypeError) khi cố gắng cộng chuỗi "3" với số.
- D. Đoạn mã sẽ chạy thành công và in ra kết quả là 10.0.
Câu 3: Bạn có một danh sách các số nguyên `numbers = [5, 1, 8, 2, 9, 1]`. Bạn muốn tạo một danh sách mới chỉ chứa các số chẵn từ danh sách `numbers` ban đầu. Cách viết list comprehension nào sau đây là hiệu quả và ngắn gọn nhất?
- A. even_numbers = [num for num in numbers if num % 2 == 0]
- B. even_numbers = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
- C. even_numbers = list(filter(lambda num: num % 2 == 0, numbers))
- D. even_numbers = [num if num % 2 == 0 else None for num in numbers]
Câu 4: Trong Python, kiểu dữ liệu `dictionary` (từ điển) được sử dụng để lưu trữ dữ liệu dạng key-value pairs. Phát biểu nào sau đây mô tả đúng nhất về đặc điểm của keys trong dictionary?
- A. Keys phải là các chuỗi (string) hoặc số nguyên (integer).
- B. Keys có thể là bất kỳ kiểu dữ liệu nào, kể cả list hoặc dictionary khác.
- C. Keys phải là các đối tượng hashable, ví dụ như chuỗi, số, hoặc tuple (chỉ chứa các phần tử hashable).
- D. Keys phải là duy nhất và được sắp xếp theo thứ tự chèn vào dictionary.
Câu 5: Cho đoạn mã Python sau:
```python
def modify_list(my_list):
my_list.append(10)
my_list = [1, 2, 3]
numbers = [4, 5, 6]
modify_list(numbers)
print(numbers)
```
Kết quả in ra màn hình của đoạn mã trên là gì và tại sao?
- A. [1, 2, 3] vì `my_list = [1, 2, 3]` đã gán lại giá trị cho `numbers`.
- B. [4, 5, 6, 10] vì `my_list.append(10)` đã sửa đổi list gốc được tham chiếu bởi `numbers`.
- C. [1, 2, 3, 10] vì cả hai thao tác trong hàm đều ảnh hưởng đến `numbers`.
- D. [4, 5, 6] vì hàm `modify_list` không trả về giá trị nào nên `numbers` không thay đổi.
Câu 6: Bạn cần viết một hàm Python để đọc nội dung của một file văn bản có tên "data.txt" và trả về nội dung đó dưới dạng một chuỗi. Cách nào sau đây là đúng và an toàn nhất, đảm bảo file được đóng sau khi sử dụng, ngay cả khi có lỗi xảy ra?
- A. def read_file():
f = open("data.txt", "r")
content = f.read()
return content
f.close()
- B. def read_file():
f = open("data.txt", "r")
content = f.read()
f.close()
return content
- C. def read_file():
try:
f = open("data.txt", "r")
content = f.read()
f.close()
return content
except:
return None
- D. def read_file():
with open("data.txt", "r") as f:
content = f.read()
return content
Câu 7: Trong lập trình hướng đối tượng Python, `self` được sử dụng để làm gì?
- A. `self` là tham số đầu tiên trong định nghĩa phương thức của lớp, tham chiếu đến instance (đối tượng) hiện tại của lớp.
- B. `self` là từ khóa để khai báo một lớp (class) trong Python.
- C. `self` được sử dụng để gọi phương thức khởi tạo (`__init__`) của lớp cha.
- D. `self` là biến toàn cục (global variable) có thể truy cập từ mọi nơi trong chương trình.
Câu 8: Cho đoạn mã Python sau:
```python
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(
- A. ```python
def __init__(self, name, breed="Unknown"):
self.name = name
breed = "Unknown"
```
- B. ```python
def __init__(self, name):
self.name = name
self.breed = "Unknown"
```
- C. ```python
def __init__(self, name):
self.name = name
self.breed = "Unknown"
```
- D. ```python
def __init__(breed="Unknown", self, name):
self.name = name
self.breed = breed
```
Câu 9: Bạn có hai chuỗi `str1 =
- A. combined_str = str1 +
- B. combined_str =
- C. combined_str = f"{str1} {str2}"
- D. combined_str = concat(str1,
Câu 10: Cho danh sách `numbers = [10, 5, 20, 8, 15]`. Bạn muốn sắp xếp danh sách này theo thứ tự giảm dần. Phương thức `sort()` và hàm `sorted()` có gì khác nhau trong trường hợp này?
- A. Cả `numbers.sort(reverse=True)` và `sorted(numbers, reverse=True)` đều sắp xếp danh sách `numbers` tại chỗ theo thứ tự giảm dần.
- B. `numbers.sort(reverse=True)` sắp xếp danh sách `numbers` tại chỗ và trả về `None`, trong khi `sorted(numbers, reverse=True)` trả về một danh sách mới đã sắp xếp giảm dần, còn `numbers` không thay đổi.
- C. Không có sự khác biệt, cả hai cách đều cho kết quả giống nhau và có thể dùng thay thế nhau.
- D. `sorted(numbers, reverse=True)` chỉ hoạt động với danh sách số, còn `numbers.sort(reverse=True)` hoạt động với mọi kiểu danh sách.
Câu 11: Trong Python, exception handling (xử lý ngoại lệ) được thực hiện bằng cấu trúc `try...except`. Mục đích chính của việc sử dụng `try...except` là gì?
- A. Để tăng tốc độ thực thi chương trình bằng cách bỏ qua các đoạn mã có thể gây lỗi.
- B. Để ngăn chặn hoàn toàn các lỗi xảy ra trong quá trình chạy chương trình.
- C. Để xử lý các lỗi có thể xảy ra trong quá trình chạy chương trình và giúp chương trình tiếp tục thực thi thay vì bị dừng đột ngột.
- D. Để đơn giản hóa cấu trúc code và làm cho chương trình dễ đọc hơn.
Câu 12: Cho đoạn mã Python sau:
```python
def divide(a, b):
return a / b
result = divide(10, 0)
print(result)
```
Đoạn mã trên sẽ gây ra exception (ngoại lệ) nào khi thực thi?
- A. TypeError
- B. ValueError
- C. IndexError
- D. ZeroDivisionError
Câu 13: Bạn muốn viết một hàm Python nhận vào một số nguyên dương `n` và tính giai thừa của `n` (n!). Cách nào sau đây sử dụng đệ quy (recursion) để tính giai thừa?
- A. ```python
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
```
- B. ```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
```
- C. ```python
def factorial(n):
while n > 0:
result *= n
n -= 1
return result
```
- D. ```python
def factorial(n):
return math.factorial(n)
```
Câu 14: Trong Python, module `random` cung cấp các hàm để tạo số ngẫu nhiên. Hàm nào sau đây được sử dụng để tạo một số nguyên ngẫu nhiên trong một khoảng cho trước (ví dụ, từ 1 đến 10)?
- A. random.randint(a, b)
- B. random.random()
- C. random.uniform(a, b)
- D. random.randrange(start, stop)
Câu 15: Bạn có một tuple `my_tuple = (1, 2, 3, 4, 5)`. Bạn muốn lấy ra slice (phần tử con) từ phần tử thứ 2 đến phần tử thứ 4 (tính từ 1). Cách nào sau đây là đúng?
- A. my_tuple[1:3]
- B. my_tuple[1:4]
- C. my_tuple[2:4]
- D. my_tuple[2:5]
Câu 16: Trong Python, bạn muốn kiểm tra xem một chuỗi `substring` có nằm trong một chuỗi `main_string` hay không. Toán tử nào sau đây được sử dụng để thực hiện kiểm tra này?
- A. ==
- B. find()
- C. in
- D. contains()
Câu 17: Cho đoạn mã Python sau:
```python
for i in range(5):
if i == 3:
break
print(i)
else:
print(
- A. 0
1
2
3
Vòng lặp kết thúc bình thường
- B. 0
1
2
Vòng lặp kết thúc bình thường
- C. 0
1
2
3
- D. 0
1
2
Câu 18: Bạn muốn tạo một set (tập hợp) các ký tự duy nhất từ một chuỗi `text =
- A. unique_chars = set(text)
- B. unique_chars = {}
for char in text:
unique_chars.add(char)
- C. unique_chars = list(text)
unique_chars = set(unique_chars)
- D. unique_chars = [char for char in text]
unique_chars = set(unique_chars)
Câu 19: Trong Python, lambda functions (hàm lambda) là gì và chúng thường được sử dụng để làm gì?
- A. Lambda functions là các hàm được định nghĩa bằng từ khóa `lambda`, có thể có nhiều dòng lệnh và được sử dụng để thay thế cho các hàm thông thường.
- B. Lambda functions là các hàm ẩn danh (anonymous), được định nghĩa ngắn gọn trong một dòng lệnh và thường được sử dụng làm đối số cho các hàm bậc cao (ví dụ: `map`, `filter`, `sorted`).
- C. Lambda functions là các hàm đặc biệt chỉ được sử dụng trong lập trình hướng đối tượng.
- D. Lambda functions là các hàm có hiệu suất cao hơn các hàm thông thường trong mọi trường hợp.
Câu 20: Cho danh sách các dictionary sau:
```python
items = [
{"name": "ProductA", "price": 10},
{"name": "ProductB", "price": 5},
{"name": "ProductC", "price": 15}
]
```
Bạn muốn sắp xếp danh sách `items` theo giá (price) tăng dần. Cách nào sau đây sử dụng hàm `sorted()` và lambda function để thực hiện việc này?
- A. sorted_items = sorted(items, key=lambda item: item["name"])
- B. sorted_items = items.sort(key=lambda item: item["price"])
- C. sorted_items = sorted(items, key=lambda item: item["price"])
- D. sorted_items = sorted(items, key=item["price"])
Câu 21: Trong Python, decorator là gì và chúng được sử dụng để làm gì?
- A. Decorators là các biến đặc biệt được sử dụng để lưu trữ metadata của hàm.
- B. Decorators là một cách sửa đổi hoặc mở rộng hành vi của hàm hoặc lớp một cách trong suốt, thường được sử dụng để thêm logging, kiểm tra quyền, đo thời gian thực thi, v.v.
- C. Decorators là các hàm được sử dụng để tạo giao diện người dùng đồ họa trong Python.
- D. Decorators là một kiểu comment đặc biệt trong Python để chú thích code.
Câu 22: Cho đoạn mã Python sau:
```python
def outer_function(x):
def inner_function(y):
return x + y
return inner_function
closure = outer_function(10)
result = closure(5)
print(result)
```
Hiện tượng closure (bao đóng) được thể hiện trong đoạn mã trên như thế nào?
- A. `inner_function` không thể truy cập biến `x` vì `x` được định nghĩa bên ngoài phạm vi của nó.
- B. `closure` là một biến toàn cục có thể truy cập từ bất kỳ đâu trong chương trình.
- C. `inner_function` là một closure vì nó ghi nhớ và truy cập biến `x` từ phạm vi bao ngoài (`outer_function`) ngay cả sau khi `outer_function` đã thực thi xong.
- D. Đoạn mã trên sẽ gây ra lỗi vì không thể định nghĩa hàm bên trong hàm khác.
Câu 23: Trong Python, generators (hàm sinh) là gì và chúng khác gì so với list thông thường?
- A. Generators là một loại list đặc biệt có thể chứa vô hạn phần tử.
- B. Generators là các hàm sử dụng từ khóa `yield` để trả về một iterator. Chúng tạo ra các giá trị một cách tuần tự (lazy evaluation) khi được yêu cầu, giúp tiết kiệm bộ nhớ so với việc tạo ra một list chứa tất cả các giá trị cùng một lúc.
- C. Generators là các hàm có tốc độ thực thi chậm hơn list vì chúng phải tạo ra giá trị tuần tự.
- D. Generators và list hoàn toàn giống nhau, chỉ khác nhau về cú pháp định nghĩa.
Câu 24: Bạn muốn đọc dữ liệu từ một file CSV (Comma Separated Values) và xử lý nó trong Python. Module phổ biến và mạnh mẽ nhất để làm việc với file CSV trong Python là gì?
- A. json
- B. xml
- C. csv
- D. pickle
Câu 25: Cho đoạn mã Python sau:
```python
import datetime
today = datetime.date.today()
print(today.strftime(
- A. YYYY-MM-DD
- B. MM/DD/YYYY
- C. YYYY/MM/DD
- D. DD/MM/YYYY
Câu 26: Bạn muốn cài đặt một package (thư viện) Python từ PyPI (Python Package Index) có tên là "requests". Lệnh nào sau đây được sử dụng trong command line (terminal/console) để cài đặt package này?
- A. python install requests
- B. pip install requests
- C. install python-requests
- D. conda install requests
Câu 27: Trong Python, virtual environment (môi trường ảo) được sử dụng để làm gì và tại sao nó quan trọng?
- A. Virtual environment là một tính năng mới của Python giúp tăng tốc độ thực thi chương trình.
- B. Virtual environment là một công cụ để tạo file thực thi (.exe) từ code Python.
- C. Virtual environment là một môi trường cô lập để cài đặt các packages Python riêng biệt cho từng dự án. Điều này giúp tránh xung đột dependencies giữa các dự án khác nhau.
- D. Virtual environment chỉ cần thiết khi làm việc với các dự án lớn và phức tạp, không cần thiết cho các dự án nhỏ.
Câu 28: Bạn có một danh sách `data = [1, 2, 3, 4, 5]`. Bạn muốn sử dụng hàm `map()` để nhân đôi mỗi phần tử trong danh sách này. Cách viết hàm `map()` nào sau đây là đúng?
- A. doubled_data = list(map(lambda x: x * 2, data))
- B. doubled_data = map(lambda x: x * 2, data)
- C. doubled_data = [map(lambda x: x * 2, data)]
- D. doubled_data = map(x * 2, data)
Câu 29: Trong Python, bạn muốn ghi dữ liệu vào một file văn bản có tên "output.txt". Chế độ mở file nào sau đây được sử dụng để ghi (write) dữ liệu và ghi đè (overwrite) nội dung file nếu file đã tồn tại?
- A. "r"
- B. "w"
- C. "a"
- D. "x"
Câu 30: Bạn muốn chạy một đoạn mã Python chỉ khi script được chạy trực tiếp (không phải khi được import như một module). Cách nào sau đây là Pythonic nhất để thực hiện điều này?
- A. if __script__ == "__main__":
- B. if __module__ == "__main__":
- C. if __name__ == "__main__":
- D. if __file__ == "__main__":