Trắc nghiệm Tin học 11 Kết nối tri thức Bài 18: Thực hành dữ liệu mảng một chiều và hai chiều - Đề 06
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 18: Thực hành dữ liệu mảng một chiều và hai chiều - Đề 06 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Cho danh sách điểm kiểm tra môn Tin học của một học sinh: `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`.
Để tính tổng điểm của học sinh này, đoạn mã Python nào sau đây là đúng và hiệu quả nhất?
- A. tong_diem = 0
for i in range(len(diem)):
tong_diem += diem[i]
- B. tong_diem = sum(diem[0] + diem[1] + diem[2] + diem[3] + diem[4])
- C. tong_diem = sum(diem)
- D. tong_diem = diem.sum()
Câu 2: Vẫn với danh sách `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`. Để tìm điểm kiểm tra cao nhất mà học sinh đạt được, sử dụng hàm nào của Python là phù hợp nhất?
- A. avg(diem)
- B. max(diem)
- C. highest(diem)
- D. find_max(diem)
Câu 3: Cho danh sách điểm `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`. Nếu muốn truy cập vào điểm kiểm tra thứ 3 trong danh sách (giả sử thứ tự tính từ 1), bạn sẽ sử dụng chỉ số nào trong Python?
- A. diem[3]
- B. diem[2]
- C. diem[4]
- D. diem[1]
Câu 4: Một chương trình yêu cầu người dùng nhập các điểm kiểm tra cách nhau bởi dấu cách, ví dụ:
- A. Sử dụng `input()` để lấy chuỗi, sau đó dùng `split()` để tách thành danh sách chuỗi, cuối cùng dùng `int()` để chuyển từng phần tử sang số nguyên.
- B. Sử dụng `input()` để lấy chuỗi, sau đó dùng `split()` để tách thành danh sách chuỗi, cuối cùng dùng một vòng lặp và `str()` để chuyển từng phần tử sang chuỗi.
- C. Sử dụng `input()` để lấy chuỗi, sau đó dùng `split()` để tách thành danh sách chuỗi, cuối cùng dùng một vòng lặp hoặc list comprehension kết hợp `float()` để chuyển từng phần tử sang số thực.
- D. Sử dụng `input()` để lấy chuỗi, sau đó dùng `join()` để tách thành danh sách chuỗi, cuối cùng dùng `float()` để chuyển từng phần tử sang số thực.
Câu 5: Xét đoạn mã Python sau:
`diem = [8.5, 7.0, 9.0, 6.5, 8.0]`
`print(diem[-1])`
Kết quả in ra màn hình là gì?
- A. 8.5
- B. Lỗi (IndexError)
- C. 6.5
- D. 8.0
Câu 6: Cho danh sách điểm `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`. Để chèn thêm điểm 7.5 vào vị trí thứ 2 (sau 8.5, trước 7.0), sử dụng phương thức nào của danh sách trong Python?
- A. diem.insert(1, 7.5)
- B. diem.append(7.5)
- C. diem.add(1, 7.5)
- D. diem[1] = 7.5
Câu 7: Cho danh sách điểm `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`. Đoạn mã nào sau đây sẽ in ra tất cả các điểm trong danh sách, mỗi điểm trên một dòng?
- A. print(diem)
- B. for i in range(len(diem)):
print(i)
- C. for d in diem:
print(d)
- D. while diem:
print(diem.pop())
Câu 8: Một mảng hai chiều (list of lists) được dùng để lưu trữ điểm của 3 học sinh trên 4 bài kiểm tra như sau:
`diem_lop = [[8.5, 7.0, 9.0, 6.5], [7.5, 8.0, 7.0, 9.0], [6.0, 6.5, 7.0, 7.5]]`
Điểm của học sinh thứ 2 (chỉ số 1) trong bài kiểm tra thứ 3 (chỉ số 2) là bao nhiêu?
- A. diem_lop[2][3] là 7.5
- B. diem_lop[1][2] là 8.0
- C. diem_lop[1][2] là 7.0
- D. diem_lop[2][1] là 6.5
Câu 9: Vẫn với mảng hai chiều `diem_lop = [[8.5, 7.0, 9.0, 6.5], [7.5, 8.0, 7.0, 9.0], [6.0, 6.5, 7.0, 7.5]]`. Để tính điểm trung bình của học sinh thứ nhất (chỉ số 0), đoạn mã nào sau đây là đúng?
- A. diem_hs1 = diem_lop[0]
tb_hs1 = sum(diem_hs1) / len(diem_hs1)
- B. tb_hs1 = sum(diem_lop[1]) / len(diem_lop[1])
- C. tb_hs1 = sum(diem_lop[0][0] + diem_lop[0][1] + diem_lop[0][2] + diem_lop[0][3]) / 4
- D. tb_hs1 = diem_lop[0].mean()
Câu 10: Xét mảng hai chiều `diem_lop = [[8.5, 7.0, 9.0, 6.5], [7.5, 8.0, 7.0, 9.0], [6.0, 6.5, 7.0, 7.5]]`. Để tính điểm trung bình của tất cả học sinh trong lớp, bạn cần thực hiện các bước nào?
- A. Tính tổng điểm của mỗi học sinh, sau đó tính trung bình các tổng đó.
- B. Tính tổng điểm của tất cả các bài kiểm tra của tất cả học sinh, sau đó chia cho tổng số bài kiểm tra (số học sinh * số bài kiểm tra).
- C. Tính điểm trung bình của mỗi học sinh, sau đó tính tổng các điểm trung bình đó.
- D. Tìm điểm cao nhất và thấp nhất trong lớp, sau đó lấy trung bình cộng của hai điểm này.
Câu 11: Cho mảng hai chiều `data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]`. Đoạn mã nào sau đây sẽ tính tổng các phần tử trên đường chéo chính (1 + 5 + 9)?
- A. tong = 0
for row in data:
tong += sum(row)
- B. tong = 0
for i in range(len(data)):
tong += data[i][len(data)-1-i]
- C. tong = 0
for i in range(len(data[0])):
tong += data[0][i] + data[1][i] + data[2][i]
- D. tong = 0
for i in range(len(data)):
tong += data[i][i]
Câu 12: Khi làm việc với mảng một chiều `my_list`, lỗi `IndexError: list index out of range` xảy ra khi nào?
- A. Bạn cố gắng truy cập một phần tử bằng chỉ số âm quá giới hạn hoặc chỉ số dương lớn hơn hoặc bằng số lượng phần tử.
- B. Bạn cố gắng thêm một phần tử vào danh sách rỗng.
- C. Bạn cố gắng xóa một phần tử không tồn tại trong danh sách.
- D. Bạn sử dụng vòng lặp `for item in my_list:` nhưng danh sách rỗng.
Câu 13: Cho danh sách `numbers = [10, 20, 30, 40, 50]`. Đoạn mã nào sau đây sẽ in ra `20 30 40`?
- A. print(numbers[1:3])
- B. print(*numbers[1:4])
- C. print(numbers[2:5])
- D. print(numbers[1], numbers[2], numbers[3], sep=" ")
Câu 14: Bạn muốn viết chương trình cho phép người dùng cập nhật điểm cho học sinh thứ 3 (chỉ số 2) ở bài kiểm tra thứ 4 (chỉ số 3) trong mảng hai chiều `diem_lop`. Trước khi thực hiện cập nhật, bạn cần kiểm tra điều gì để tránh lỗi?
- A. Kiểm tra xem điểm nhập vào có phải là số nguyên dương không.
- B. Kiểm tra xem mảng `diem_lop` có rỗng không.
- C. Kiểm tra xem số lượng học sinh có lớn hơn hoặc bằng 3 không.
- D. Kiểm tra xem số lượng học sinh (số hàng) có lớn hơn chỉ số 2 và số lượng bài kiểm tra (số cột trong hàng đó) có lớn hơn chỉ số 3 không.
Câu 15: Cho mảng hai chiều `matrix = [[1, 2], [3, 4], [5, 6]]`. Kích thước của mảng này (số hàng x số cột) là bao nhiêu?
- A. 2 x 3
- B. 3 x 2
- C. 6
- D. Không thể xác định vì các hàng có thể có độ dài khác nhau.
Câu 16: Bạn cần tìm vị trí (chỉ số) của điểm 7.0 đầu tiên xuất hiện trong danh sách `diem = [8.5, 7.0, 9.0, 6.5, 7.0, 8.0]`. Phương thức nào của danh sách Python giúp thực hiện điều này?
- A. diem.index(7.0)
- B. diem.find(7.0)
- C. diem.locate(7.0)
- D. diem.search(7.0)
Câu 17: Cho mảng hai chiều `data = [[10, 20, 30], [40, 50, 60]]`. Đoạn mã nào sau đây sẽ in ra tổng của cột thứ hai (20 + 50)?
- A. tong_cot2 = sum(data[1])
- B. tong_cot2 = data[0][1] + data[1][1] + data[2][1]
- C. tong_cot2 = 0
for row in data:
tong_cot2 += row[1]
- D. tong_cot2 = sum(data[0][1], data[1][1])
Câu 18: Khi nhập dữ liệu điểm từ người dùng dưới dạng chuỗi và chuyển sang danh sách số, tại sao việc sử dụng `float()` thay vì `int()` lại phù hợp hơn trong nhiều trường hợp?
- A. `int()` nhanh hơn `float()`.
- B. Điểm kiểm tra thường có thể là số thập phân (ví dụ: 8.5, 7.25), `float()` xử lý được cả số nguyên và số thập phân, trong khi `int()` chỉ xử lý số nguyên.
- C. `float()` sử dụng ít bộ nhớ hơn `int()`.
- D. `int()` không thể xử lý được bất kỳ chuỗi số nào.
Câu 19: Cho danh sách `scores = [9.0, 8.0, 9.0, 7.5, 9.0]`. Để đếm số lần điểm 9.0 xuất hiện trong danh sách này, sử dụng phương thức nào của danh sách Python?
- A. scores.find(9.0)
- B. scores.index(9.0)
- C. scores.sum(9.0)
- D. scores.count(9.0)
Câu 20: Bạn có một danh sách điểm `diem = [8.5, 7.0, 9.0, 6.5, 8.0]`. Bạn muốn xóa điểm 6.5 khỏi danh sách. Phương thức nào sau đây sẽ thực hiện điều đó?
- A. diem.remove(6.5)
- B. diem.pop(6.5)
- C. del diem[6.5]
- D. diem.delete(6.5)
Câu 21: Xét đoạn mã Python sau:
`my_list = [1, 2, 3]`
`my_list.append([4, 5])`
`print(len(my_list))`
Kết quả in ra màn hình là gì?
- A. 5
- B. 4
- C. 6
- D. Lỗi cú pháp
Câu 22: Vẫn với danh sách `my_list` sau khi thực hiện đoạn mã ở Câu 21 (`my_list` hiện là `[1, 2, 3, [4, 5]]`). Để truy cập vào số 5, bạn sẽ sử dụng cú pháp nào?
- A. my_list[4]
- B. my_list[3][1]
- C. my_list[3][1]
- D. my_list[3][0]
Câu 23: Bạn có danh sách tên học sinh `ten_hs = ["An", "Binh", "Hoa"]` và danh sách điểm trung bình tương ứng `dtb_hs = [8.5, 7.8, 9.2]`. Để in ra tên học sinh có điểm trung bình cao nhất, bạn cần làm gì?
- A. Tìm điểm trung bình cao nhất trong `dtb_hs`, sau đó tìm vị trí (chỉ số) của điểm đó trong `dtb_hs` và dùng chỉ số đó để truy cập vào `ten_hs`.
- B. Sắp xếp cả hai danh sách `ten_hs` và `dtb_hs` theo thứ tự giảm dần của điểm trung bình, sau đó lấy phần tử đầu tiên của `ten_hs`.
- C. Sử dụng hàm `max(ten_hs)` để tìm tên học sinh có điểm trung bình cao nhất.
- D. Tìm điểm trung bình cao nhất trong `dtb_hs`, sau đó tìm chỉ số của điểm đó trong `dtb_hs`. Sử dụng chỉ số này để lấy tên tương ứng từ `ten_hs`.
Câu 24: Cho một mảng hai chiều `table` biểu diễn dữ liệu điểm. Để duyệt qua từng phần tử trong mảng này, đoạn mã nào sau đây là đúng?
- A. for row in table:
for element in row:
print(element)
- B. for element in table:
print(element)
- C. for i in range(len(table)):
print(table[i])
- D. for row in table[0]:
for element in row:
print(element)
Câu 25: Một danh sách `numbers = [1, 5, 3, 8, 2]`. Sau khi thực hiện `numbers.sort()`, nội dung của danh sách `numbers` sẽ là gì?
- A. [1, 5, 3, 8, 2]
- B. [8, 5, 3, 2, 1]
- C. [1, 2, 3, 5, 8]
- D. None
Câu 26: Cho danh sách `data = [10, 20, 30, 40, 50]`. Đoạn mã `data[1:4] = [25, 35]` sẽ thay đổi danh sách `data` thành:
- A. [10, 20, 30, 40, 50, 25, 35]
- B. [10, 25, 35, 50]
- C. [10, 25, 35]
- D. [10, 25, 35, 40, 50]
Câu 27: Khi sử dụng mảng hai chiều để lưu trữ dữ liệu điểm, mỗi hàng thường biểu diễn thông tin của một đối tượng (ví dụ: một học sinh), và mỗi cột biểu diễn một thuộc tính (ví dụ: điểm của một bài kiểm tra). Điều này giúp tổ chức dữ liệu theo cấu trúc nào?
- A. Bảng (giống bảng tính hoặc cơ sở dữ liệu đơn giản)
- B. Cây (Tree)
- C. Đồ thị (Graph)
- D. Danh sách liên kết (Linked List)
Câu 28: Bạn cần viết một hàm nhận vào một danh sách điểm và trả về điểm trung bình. Nếu danh sách rỗng, hàm nên trả về giá trị nào để tránh lỗi chia cho 0 và thể hiện rằng không có điểm để tính trung bình?
- A. 0
- B. Một chuỗi thông báo lỗi, ví dụ:
- C. Một giá trị âm lớn, ví dụ: -999
- D. Kiểm tra độ dài danh sách trước khi chia. Nếu rỗng, trả về 0 hoặc thông báo phù hợp.
Câu 29: Cho mảng hai chiều `grid = [[1, 2, 3], [4, 5, 6]]`. Đoạn mã nào sau đây sẽ in ra tất cả các phần tử theo thứ tự cột trước, hàng sau (1, 4, 2, 5, 3, 6)?
- A. for col in range(len(grid[0])):
for row in range(len(grid)):
print(grid[row][col])
- B. for row in range(len(grid)):
for col in range(len(grid[0])):
print(grid[row][col])
- C. for col in grid[0]:
for row in grid:
print(row[col])
- D. for row in grid:
print(row)
Câu 30: Khi lưu trữ tên học sinh và điểm của họ, ví dụ: `[["An", 8.5], ["Binh", 7.8], ["Hoa", 9.2]]`, cấu trúc dữ liệu này là một dạng của mảng hai chiều. Mỗi "hàng" trong mảng này có thể chứa các loại dữ liệu khác nhau (chuỗi và số). Điều này cho thấy tính linh hoạt nào của danh sách trong Python?
- A. Danh sách có kích thước cố định.
- B. Các phần tử trong danh sách phải cùng kiểu dữ liệu.
- C. Các phần tử trong danh sách có thể có kiểu dữ liệu khác nhau.
- D. Chỉ có thể lưu trữ số trong danh sách.