Trắc nghiệm Tin học 11 Kết nối tri thức Bài 20: Thực hành bài toán tìm kiếm - Đề 03
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 20: Thực hành bài toán tìm kiếm - Đề 03 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 Python, khi làm việc với tệp văn bản, chế độ mở tệp nào sau đây cho phép bạn vừa đọc vừa ghi dữ liệu vào tệp, đồng thời tạo tệp mới nếu nó chưa tồn tại?
Câu 2: Cho đoạn mã Python sau:
```python
f = open(
- A. Nội dung của tệp được giữ nguyên và dữ liệu mới được thêm vào cuối tệp.
- B. Nội dung cũ của tệp bị xóa và thay thế bằng dữ liệu mới.
- C. Chương trình sẽ báo lỗi vì tệp đã tồn tại.
- D. Tệp được mở ở chế độ đọc và không có thay đổi nào được thực hiện.
Câu 3: Bạn có một danh sách tên học sinh đã được sắp xếp theo thứ tự bảng chữ cái. Để tìm kiếm một tên cụ thể trong danh sách này một cách hiệu quả nhất, thuật toán tìm kiếm nào sau đây nên được sử dụng?
- A. Tìm kiếm tuần tự (Sequential Search)
- B. Tìm kiếm theo chiều sâu (Depth-First Search)
- C. Tìm kiếm nhị phân (Binary Search)
- D. Tìm kiếm theo chiều rộng (Breadth-First Search)
Câu 4: Trong thuật toán tìm kiếm nhị phân, giả sử bạn đang tìm kiếm số 35 trong danh sách đã sắp xếp: [10, 20, 25, 30, 35, 40, 45, 50]. Ở bước đầu tiên, phần tử ở vị trí giữa (40) được so sánh với 35. Bước tiếp theo thuật toán sẽ thực hiện như thế nào?
- A. Tìm kiếm trong nửa đầu của danh sách: [10, 20, 25, 30, 35]
- B. Tìm kiếm trong nửa sau của danh sách: [40, 45, 50]
- C. Tìm kiếm lại từ đầu danh sách.
- D. Thông báo không tìm thấy vì 35 nhỏ hơn 40.
Câu 5: Hàm `readlines()` trong Python trả về kiểu dữ liệu nào sau đây khi đọc nội dung từ một tệp văn bản?
- A. Một chuỗi duy nhất chứa toàn bộ nội dung tệp.
- B. Một danh sách các chuỗi, mỗi chuỗi là một dòng trong tệp.
- C. Một tuple chứa các dòng trong tệp.
- D. Một số nguyên biểu thị số dòng trong tệp.
Câu 6: Cho tệp văn bản "scores.txt" chứa dữ liệu điểm thi của học sinh, mỗi dòng có định dạng "Tên_học_sinh Điểm_số". Để đọc dữ liệu từ tệp và lưu trữ tên và điểm vào hai danh sách riêng biệt (TenHS và DiemHS), bạn sẽ sử dụng đoạn mã Python nào sau đây?
- A. ```python
f = open(
- B. ```python
f = open(
- C. ```python
f = open(
- D. ```python
f = open(
Câu 7: Trong Python, phương thức `strip()` thường được sử dụng với dữ liệu kiểu chuỗi để làm gì?
- A. Loại bỏ khoảng trắng hoặc ký tự thừa ở đầu và cuối chuỗi.
- B. Chia chuỗi thành một danh sách các từ.
- C. Tìm kiếm một chuỗi con bên trong chuỗi.
- D. Chuyển đổi chuỗi thành chữ hoa.
Câu 8: Giả sử bạn có một tệp nhật ký hoạt động của người dùng trên hệ thống, mỗi dòng chứa thông tin về thời gian truy cập, tên người dùng và hành động thực hiện. Bạn muốn đếm số lần truy cập của mỗi người dùng. Để thực hiện điều này, cấu trúc dữ liệu nào sau đây trong Python sẽ phù hợp nhất để lưu trữ kết quả đếm?
- A. List (Danh sách)
- B. Dictionary (Từ điển)
- C. Tuple (Bộ)
- D. Set (Tập hợp)
Câu 9: Xét đoạn mã Python sau:
```python
numbers = [15, 8, 23, 42, 11, 7]
target = 23
```
Nếu sử dụng thuật toán tìm kiếm tuần tự để tìm vị trí của `target` trong danh sách `numbers`, số lần so sánh cần thực hiện là bao nhiêu?
Câu 10: Trong bài toán tìm kiếm điểm học sinh từ tệp, khi người dùng nhập tên học sinh cần tìm, điều gì xảy ra nếu tên học sinh đó không có trong danh sách dữ liệu?
- A. Chương trình sẽ tự động thêm tên học sinh đó vào danh sách với điểm số mặc định.
- B. Chương trình sẽ thông báo rằng không tìm thấy thông tin về học sinh này.
- C. Chương trình sẽ hiển thị điểm của học sinh đầu tiên trong danh sách.
- D. Chương trình sẽ báo lỗi và dừng thực thi.
Câu 11: Để ghi nhiều dòng văn bản vào một tệp trong Python, cách nào sau đây là hiệu quả nhất?
- A. Sử dụng hàm `write()` nhiều lần, mỗi lần cho một dòng.
- B. Sử dụng hàm `print()` nhiều lần, mỗi lần cho một dòng.
- C. Sử dụng vòng lặp để duyệt qua một danh sách các dòng và ghi từng dòng bằng `write()` hoặc `print(file=f)`.
- D. Sử dụng hàm `writelines()` với một chuỗi lớn chứa tất cả các dòng.
Câu 12: Bạn có một tệp CSV chứa thông tin sản phẩm (tên sản phẩm, giá, số lượng). Bạn muốn đọc tệp này và tính tổng giá trị tồn kho (giá * số lượng) cho tất cả sản phẩm. Thao tác xử lý dữ liệu nào sau đây là cần thiết sau khi đọc mỗi dòng từ tệp?
- A. Sắp xếp các dòng theo tên sản phẩm.
- B. Phân tách dòng thành các trường (tên, giá, số lượng) và chuyển đổi giá và số lượng sang kiểu số để tính toán.
- C. Loại bỏ các dòng trùng lặp.
- D. Đếm số dòng trong tệp.
Câu 13: Trong thuật toán tìm kiếm nhị phân, nếu giá trị cần tìm nhỏ hơn phần tử ở vị trí giữa của danh sách, phạm vi tìm kiếm sẽ được thu hẹp về phía nào?
- A. Nửa đầu của danh sách (bên trái phần tử giữa).
- B. Nửa sau của danh sách (bên phải phần tử giữa).
- C. Vẫn giữ nguyên phạm vi tìm kiếm ban đầu.
- D. Chỉ tìm kiếm ở phần tử giữa.
Câu 14: Cho danh sách số đã được sắp xếp: `data = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]`. Bạn muốn kiểm tra xem số 12 có nằm trong danh sách này hay không bằng thuật toán tìm kiếm nhị phân. Hỏi cần bao nhiêu bước so sánh để xác định được điều này?
Câu 15: Khi mở một tệp văn bản bằng lệnh `f = open(
- A. Tệp "data.txt" sẽ được tạo mới và mở để đọc.
- B. Tệp "data.txt" sẽ được mở ở chế độ ghi.
- C. Lỗi `FileNotFoundError` sẽ được phát sinh.
- D. Chương trình sẽ tiếp tục chạy nhưng không thể đọc dữ liệu.
Câu 16: Phương thức `write()` trong Python dùng để ghi dữ liệu vào tệp, dữ liệu truyền vào phương thức này phải thuộc kiểu dữ liệu nào?
- A. Số nguyên (integer)
- B. Số thực (float)
- C. Danh sách (list)
- D. Chuỗi (string)
Câu 17: Để đảm bảo tài nguyên hệ thống được giải phóng sau khi hoàn tất thao tác đọc/ghi tệp, bạn nên sử dụng cấu trúc nào sau đây trong Python?
- A. Chỉ sử dụng `f.close()` ở cuối chương trình.
- B. Sử dụng khối lệnh `with open(...) as f:`.
- C. Ghi dữ liệu vào tệp và không cần đóng tệp.
- D. Sử dụng hàm `del f` sau khi thao tác xong.
Câu 18: Cho đoạn mã Python:
```python
f = open(
- A. Tệp sẽ chỉ chứa dòng chữ
- B. Nội dung cũ của tệp bị xóa và thay thế bằng
- C. Dòng chữ
- D. Chương trình sẽ báo lỗi vì tệp đã tồn tại.
Câu 19: Trong bài toán tìm kiếm, độ phức tạp thời gian của thuật toán tìm kiếm tuần tự trong trường hợp xấu nhất là tuyến tính, tức là O(n). Điều này có nghĩa là gì?
- A. Thời gian tìm kiếm không đổi, không phụ thuộc vào kích thước dữ liệu.
- B. Thời gian tìm kiếm tăng theo logarit của kích thước dữ liệu.
- C. Thời gian tìm kiếm giảm khi kích thước dữ liệu tăng.
- D. Thời gian tìm kiếm tỉ lệ thuận với kích thước dữ liệu (n). Trong trường hợp xấu nhất, cần kiểm tra tất cả n phần tử.
Câu 20: Thuật toán tìm kiếm nhị phân hoạt động hiệu quả nhất trên dữ liệu có đặc điểm gì?
- A. Dữ liệu đã được sắp xếp.
- B. Dữ liệu chưa được sắp xếp.
- C. Dữ liệu có kích thước nhỏ.
- D. Dữ liệu chứa nhiều giá trị trùng lặp.
Câu 21: Để đọc toàn bộ nội dung của một tệp văn bản vào một biến kiểu chuỗi duy nhất trong Python, bạn sẽ sử dụng phương thức nào?
- A. readlines()
- B. read()
- C. readline()
- D. readall()
Câu 22: Trong Python, khi làm việc với tệp văn bản tiếng Việt, tham số `encoding="UTF-8"` được sử dụng để làm gì khi mở tệp?
- A. Mã hóa dữ liệu trước khi ghi vào tệp.
- B. Giải mã dữ liệu sau khi đọc từ tệp.
- C. Đảm bảo đọc và ghi đúng các ký tự tiếng Việt.
- D. Tăng tốc độ đọc và ghi tệp.
Câu 23: Cho danh sách học sinh và điểm: `students = [("An", 8.5), ("Bình", 7.9), ("Cường", 9.0)]`. Để ghi danh sách này vào tệp "student_scores.txt", mỗi học sinh trên một dòng với định dạng "Tên - Điểm", bạn sẽ sử dụng vòng lặp và lệnh ghi nào?
- A. ```python
f = open(
- B. ```python
f = open(
- C. ```python
f = open(
- D. ```python
f = open(
Câu 24: Trong bài toán tìm kiếm điểm, giả sử dữ liệu điểm được lưu trong tệp "grades.txt" và bạn đã đọc dữ liệu vào danh sách `grade_data`. Để tìm điểm của học sinh có tên "Lan", bạn sẽ sử dụng đoạn mã nào (giả sử dữ liệu đã được xử lý để có danh sách tên và điểm tương ứng)?
- A. ```python
for grade in grade_data:
if grade["name"] == "Lan":
print(grade["score"])
```
- B. ```python
target_name = "Lan"
for name, score in grade_data:
if name == target_name:
print(score)
break
else:
print(
- C. ```python
print(grade_data["Lan"])
```
- D. ```python
print(grade_data.index("Lan"))
```
Câu 25: Xét danh sách số: `numbers = [5, 2, 8, 1, 9, 4]`. Nếu bạn sử dụng thuật toán tìm kiếm nhị phân để tìm số 9 trong danh sách này, điều gì sẽ xảy ra?
- A. Thuật toán sẽ tìm thấy số 9 ở vị trí cuối cùng.
- B. Thuật toán sẽ tìm thấy số 9 ở vị trí đầu tiên.
- C. Thuật toán sẽ hoạt động bình thường và tìm ra vị trí của số 9.
- D. Thuật toán sẽ không hoạt động đúng vì danh sách chưa được sắp xếp và có thể cho kết quả sai hoặc không tìm thấy.
Câu 26: Trong Python, lệnh nào sau đây được sử dụng để kiểm tra xem một tệp có tồn tại hay không trước khi thực hiện thao tác đọc hoặc ghi?
- A. `f.exists(
- B. `os.isFile(
- C. `os.path.exists(
- D. `file.exists(
Câu 27: Cho đoạn mã Python:
```python
f = open(
- A. Dòng đầu tiên của tệp.
- B. Dòng thứ ba của tệp.
- C. Dòng thứ hai của tệp.
- D. Toàn bộ nội dung của tệp.
Câu 28: Trong bài toán tìm kiếm điểm học sinh, giả sử bạn muốn cho phép người dùng nhập tên học sinh không phân biệt chữ hoa chữ thường (ví dụ, "Lan", "lan", "LAN" đều tìm ra điểm của học sinh tên Lan). Bạn cần thực hiện thao tác gì trước khi so sánh tên nhập vào với tên trong danh sách?
- A. Chuyển đổi cả tên nhập vào và tên trong danh sách về cùng một kiểu chữ (ví dụ, chữ thường) trước khi so sánh.
- B. Sử dụng thuật toán tìm kiếm nhị phân.
- C. Loại bỏ khoảng trắng thừa trong tên nhập vào.
- D. Không cần thực hiện thao tác gì thêm, Python tự động so sánh không phân biệt chữ hoa chữ thường.
Câu 29: Để đọc từng dòng trong một tệp văn bản và thực hiện xử lý trên từng dòng một cách tuần tự, cấu trúc lặp nào sau đây trong Python là phù hợp nhất?
- A. Vòng lặp `while` với điều kiện đọc dòng.
- B. Vòng lặp `for` duyệt trực tiếp trên đối tượng tệp.
- C. Vòng lặp `for` với `range(len(f.readlines()))`.
- D. Đệ quy.
Câu 30: Bạn có một tệp lớn chứa thông tin giao dịch ngân hàng. Để tìm kiếm nhanh chóng các giao dịch của một khách hàng cụ thể (giả sử dữ liệu không sắp xếp), thuật toán tìm kiếm nào sẽ phù hợp hơn về mặt tốc độ?
- A. Tìm kiếm tuần tự (Sequential Search)
- B. Tìm kiếm nhị phân (Binary Search)
- C. Cả hai thuật toán đều có tốc độ tương đương.
- D. Không thuật toán nào phù hợp trong trường hợp này.