15 câu Trắc nghiệm Tin học 11 Cánh diều Bài 3: Thực hành về tệp, mảng và danh sách có đáp án
15 câu hỏi
PHẦN I. Câu trắc nghiệm nhiều phương án lựa chọn. Thí sinh trả lời từ câu 1 đến câu 10. Mỗi câu hỏi thí sinh chỉ lựa chọn một phương án.
Lệnh nào được dùng để mở tệp “data.txt” chỉ để đọc dữ liệu trong Python?
open("data.txt", "w")
open("data.txt", "r")
open("data.txt", "a")
open("data.txt", "x")
Đáp án: B
Giải thích: "r" là chế độ mở tệp chỉ để đọc. "w" mở để ghi đè, "a" mở để ghi thêm, và "x" mở để tạo tệp mới.
Câu lệnh nào dùng để đóng tệp đã mở trong Python?
close("file.txt")
file.close()
file.shutdown()
shutdown(file)
Đáp án: B
Giải thích: file.close() là phương thức đúng để đóng tệp đã mở trong Python.
Câu lệnh nào dùng để đọc tất cả nội dung từ tệp “file.txt” và lưu vào một chuỗi?
file.readlines()
file.readline()
file.read()
file.split()
Đáp án: C
Giải thích: file.read() đọc toàn bộ nội dung của tệp và trả về chuỗi. readlines() trả về danh sách các dòng.
Để lấy các phần tử có chỉ số lẻ từ danh sách a, ta sử dụng lệnh nào?
a[::2]
a[1::2]
a[::-1]
a[1:]
Đáp án: B
Giải thích: a[1::2] chọn các phần tử có chỉ số lẻ, bắt đầu từ chỉ số 1 và bước nhảy là 2.
Phương thức sort() trong danh sách ds.sort() làm gì?
Đảo ngược danh sách
Sắp xếp danh sách theo thứ tự tăng dần
Xóa tất cả các phần tử trong danh sách
Sao chép danh sách
Đáp án: B
Giải thích: sort() sắp xếp danh sách theo thứ tự tăng dần.
Lệnh nào sẽ chèn một phần tử x vào vị trí chỉ số y trong danh sách ds?
ds.insert(y, x)
ds.append(x, y)
ds.add(y, x)
ds.insert(x, y)
Đáp án: A
Giải thích: insert(y, x) chèn x vào vị trí chỉ số y trong danh sách.
Câu lệnh nào lấy các phần tử từ chỉ số 2 đến chỉ số 5 trong danh sách a?
a[2:5]
a[2:6]
a[3:6]
a[2::5]
Đáp án: B
Giải thích: Lệnh lát cắt a[2:6] lấy các phần tử từ chỉ số 2 đến 5.
Phương thức nào sẽ trả về số lần xuất hiện của phần tử x trong danh sách ds?
ds.count(x)
ds.find(x)
ds.index(x)
ds.search(x)
Đáp án: A
Giải thích: count(x) trả về số lần x xuất hiện trong danh sách.
Để xóa phần tử có giá trị x trong danh sách ds, lệnh nào sau đây là đúng?
ds.pop(x)
ds.remove(x)
ds.delete(x)
ds.clear(x)
Đáp án: B
Giải thích: remove(x) xóa phần tử đầu tiên có giá trị x trong danh sách.
Câu lệnh nào dùng để tạo một bản sao của danh sách ds?
ds.copy()
ds.sort()
ds.reverse()
ds.append()
Đáp án: A
Giải thích: copy() tạo một bản sao của danh sách ds.
PHẦN II. Câu trắc nghiệm đúng sai. Thí sinh trả lời từ câu 1 đến câu 2. Trong mỗi ý a), b), c), d) ở mỗi câu, thí sinh chọn đúng hoặc sai
Cho một danh sách các số nguyên a. Hãy chọn đoạn mã Python nào sau đây sẽ tạo ra một danh sách b chứa các phần tử ở nửa sau của a và in từng phần tử của b ra màn hình.
a) b = a[len(a)//2:]
b) b = a[:len(a)//2]
c) b = a[-1:]
d) b = a[::-1]
a) Đúng. a[len(a)//2:] sẽ lấy các phần tử từ nửa sau của a, từ chỉ số len(a)//2 đến cuối danh sách.
b) Sai. a[:len(a)//2] sẽ lấy các phần tử ở nửa đầu của a, từ đầu đến chỉ số len(a)//2 - 1.
c) Sai. a[-1:] chỉ lấy phần tử cuối cùng của a, không phải nửa sau.
d) Sai. a[::-1] sẽ đảo ngược danh sách a hoàn toàn, không phải lấy nửa sau.
Cho tệp data.txt chứa các số nguyên trên từng dòng. Để đọc tất cả các dòng của tệp và lưu vào danh sách numbers (các phần tử trong danh sách là số nguyên), lựa chọn nào sau đây là đúng?
a) numbers = [int(line) for line in open("data.txt", "r")]
b) numbers = list(open("data.txt", "r"))
c) numbers = open("data.txt", "r").readlines()
d) numbers = [float(line) for line in open("data.txt")]
a) Đúng. Lệnh này đọc từng dòng trong tệp và chuyển mỗi dòng thành số nguyên trước khi thêm vào danh sách numbers, phù hợp với yêu cầu.
b) Sai. list(open("data.txt", "r")) sẽ tạo danh sách các dòng từ tệp nhưng không chuyển chúng thành số nguyên.
c) Sai. open("data.txt", "r").readlines() cũng chỉ tạo danh sách các dòng dưới dạng chuỗi mà không chuyển đổi thành số nguyên.
d) Sai. Dùng float(line) sẽ chuyển mỗi dòng thành số thực, không phù hợp vì yêu cầu là chuyển thành số nguyên.
PHẦN III. Câu trả lời ngắn. Thí sinh trả lời từ câu 1 đến câu 3
Giả sử bạn có danh sách a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Làm thế nào để tạo một danh sách chỉ chứa các phần tử ở vị trí chỉ số lẻ của a?
Đáp án:Sử dụng cú pháp b = a[1::2].
Giải thích:a[1::2] sẽ bắt đầu từ phần tử có chỉ số 1 và lấy các phần tử cách nhau một bước nhảy là 2. Điều này sẽ lấy ra các phần tử ở vị trí lẻ của a, tức là [2, 4, 6, 8, 10].
Cho một mảng hai chiều a kích thước n x n chứa các số thực. Viết cách lấy ra và in các phần tử của cột chỉ số chẵn trong a.
Đáp án:Sử dụng vòng lặp để duyệt qua các hàng, rồi dùng lát cắt để lấy các phần tử của cột chỉ số chẵn: for row in a: print(row[::2]).
Giải thích:row[::2] sẽ lấy các phần tử từ vị trí 0 với bước nhảy là 2, tức là các phần tử ở cột chỉ số chẵn. Vòng lặp duyệt qua từng hàng của a, và lát cắt ::2 giúp chọn đúng các phần tử cần thiết.
Cho tệp bangDiem.txt với cấu trúc gồm dòng đầu tiên là số lượng học sinh và số môn học, dòng thứ hai là danh sách các tên môn học, và các dòng tiếp theo là tên học sinh kèm điểm số các môn học. Làm thế nào để đọc tệp và tách ra danh sách tên học sinh cùng danh sách điểm số của từng học sinh?
Đáp án:Dùng hàm readlines() để đọc từng dòng của tệp và chuyển dữ liệu thành danh sách. Dòng đầu tiên sẽ dùng để xác định số lượng học sinh và môn học, dòng thứ hai để lấy tên môn học, và các dòng tiếp theo để lấy tên học sinh và điểm số của họ.
Giải thích:Hàm readlines() sẽ đọc tất cả các dòng trong tệp bangDiem.txt và trả về dưới dạng một danh sách chuỗi. Dòng đầu tiên có thể được chuyển thành số nguyên để biết số học sinh và số môn học, dòng thứ hai sẽ chứa danh sách tên môn học, còn các dòng tiếp theo sẽ chứa thông tin về tên học sinh và điểm số của từng môn.


