Bài 22 Kiểu dữ liệu danh sách

Lớp 10Tin Học16 câu hỏiBài tập

Phần 1

Câu 1

(Câu 22.1 trang 46 SBT Tin học 10) Giả sử danh sách được xác định như sau: A = [1, 2, 3, 10, "Việt", True]. Câu lệnh print(A[2], A[4], A[5], len(A)) in ra màn hình kết quả nào?
A3 Việt True 6
B2 Việt True 6
C3 Việt False 6
D3 Việt True 5

Câu 2

(Câu 22.2 trang 46 SBT Tin học 10) Giả sử A là danh sách được xác định trong Câu 22.1. Các câu lệnh sau có ý nghĩa gì: (a) del A[0]; (b) A = [0, 2] + A; (c) A[1] = A[1]*2; (d) A = A + [15]. Phương án nào đúng?
A(a) Xoá phần tử đầu tiên; (b) thêm hai phần tử 0, 2 vào đầu danh sách; (c) nhân phần tử thứ hai với 2; (d) thêm phần tử 15 vào cuối danh sách.
B(a) Xoá phần tử cuối cùng; (b) thêm hai phần tử 0, 2 vào cuối danh sách; (c) nhân phần tử đầu tiên với 2; (d) thêm phần tử 15 vào đầu danh sách.
C(a) Xoá toàn bộ danh sách; (b) thay danh sách bằng [0, 2]; (c) nhân mọi phần tử với 2; (d) xoá phần tử 15 khỏi danh sách.
D(a) Xoá phần tử thứ hai; (b) thêm hai phần tử 0, 2 vào giữa danh sách; (c) cộng thêm 2 vào phần tử thứ hai; (d) thêm phần tử 15 vào vị trí đầu tiên.

Câu 3

(Câu 22.3 trang 46 SBT Tin học 10) Cho A = [1, -2, -3.5, 4, 6, -2.5]. Hãy cho biết kết quả đúng của các đoạn lệnh sau: (a) tính tổng các phần tử lớn hơn 0 rồi in s; (b) cộng thêm 3 vào mỗi phần tử của A; (c) đếm các phần tử nhỏ hơn 0 trong A[1], A[2], A[3]. Phương án nào đúng?
A(a) In ra 11; (b) A = [4, 1, -0.5, 7, 9, 0.5]; (c) in ra 2.
B(a) In ra 8; (b) A = [4, 1, 0.5, 7, 9, 0.5]; (c) in ra 3.
C(a) In ra 11; (b) A = [1, -2, -3.5, 4, 6, -2.5]; (c) in ra 1.
D(a) In ra -3; (b) A = [3, 1, -0.5, 7, 9, 0.5]; (c) in ra 2.

Câu 4

(Câu 22.4 trang 47 SBT Tin học 10) Em hãy viết các câu lệnh xoá phần tử đầu tiên và phần tử cuối cùng trong danh sách A cho trước. Phương án nào đúng?
AXoá phần tử đầu tiên bằng del A[0]; xoá phần tử cuối cùng bằng del A[len(A)-1].
BXoá phần tử đầu tiên bằng del A[1]; xoá phần tử cuối cùng bằng del A[len(A)].
CXoá phần tử đầu tiên bằng del A[-1]; xoá phần tử cuối cùng bằng del A[0].
DXoá phần tử đầu tiên bằng A = []; xoá phần tử cuối cùng bằng del A.

Phần 2

Câu 1

(Câu 22.5 trang 47 SBT Tin học 10) Em hãy viết chương trình nhập một số tự nhiên n và tạo một danh sách các ước số thực sự của n. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo danh sách rỗng bằng day_uocso = [].
b)Có thể nhập n bằng lệnh n = int(input("Nhập số tự nhiên n: ")).
c)Các ước số thực sự của n đều không vượt quá n//2 nên có thể duyệt i trong range(1, n//2 + 1).
d)Nếu n%i != 0 thì i là ước số thực sự của n và cần thêm i vào danh sách.

Câu 2

(Câu 22.5 trang 47 SBT Tin học 10) Về chương trình tạo danh sách các ước số thực sự của n, nhận định nào sau đây đúng hoặc sai?
a)Điều kiện n%i == 0 dùng để kiểm tra i có phải là ước của n hay không.
b)Có thể dùng day_uocso.append(i) để thêm i vào cuối danh sách các ước số.
c)Sau khi duyệt xong, có thể in danh sách các ước số thực sự của n ra màn hình.
d)Ước số thực sự của n luôn bao gồm chính n nên cần duyệt đến n và thêm n vào danh sách.

Câu 3

(Câu 22.6 trang 47 SBT Tin học 10) Cho một danh sách A. Viết chương trình tạo danh sách B có các phần tử là các phần tử của A theo trình tự ngược lại. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo danh sách B rỗng bằng B = [].
b)Có thể lấy phần tử cuối cùng của A bằng A[len(A) - 1].
c)Có thể thêm phần tử cuối cùng của A vào B bằng B.append(A[len(A) - 1]).
d)Để tạo danh sách ngược, bắt buộc phải sắp xếp các phần tử của A theo thứ tự tăng dần.

Câu 4

(Câu 22.6 trang 47 SBT Tin học 10) Về chương trình đảo ngược danh sách A bằng cách lấy dần phần tử cuối, nhận định nào sau đây đúng hoặc sai?
a)Có thể dùng vòng lặp while len(A) > 0 để xử lí cho đến khi A hết phần tử.
b)Sau khi đưa phần tử cuối của A vào B, có thể xoá phần tử đó khỏi A bằng del A[len(A) - 1].
c)Kết quả in ra là danh sách B chứa các phần tử của A ban đầu theo trình tự ngược lại.
d)Khi dùng cách này, danh sách A ban đầu vẫn giữ nguyên đầy đủ các phần tử sau vòng lặp.

Câu 5

(Câu 22.7 trang 47 SBT Tin học 10) Em hãy viết chương trình tạo danh sách gồm các chữ số của một số tự nhiên n được nhập từ bàn phím. Nhận định nào sau đây đúng hoặc sai?
a)Có thể nhập n bằng lệnh n = int(input("Nhập số nguyên dương n = ")).
b)Có thể khởi tạo danh sách các chữ số bằng ds = [].
c)Có thể dùng biến luu = n để lưu lại giá trị ban đầu của n trước khi tách chữ số.
d)Để lấy chữ số hàng đơn vị của n, cần dùng phép n // 10.

Câu 6

(Câu 22.7 trang 47 SBT Tin học 10) Về cách tạo danh sách các chữ số của n, nhận định nào sau đây đúng hoặc sai?
a)Trong vòng lặp while n > 0, phép n%10 cho biết chữ số hàng đơn vị hiện tại của n.
b)Có thể dùng ds = [n%10] + ds để đưa chữ số mới tách được vào đầu danh sách.
c)Có thể dùng n = n//10 để bỏ chữ số hàng đơn vị vừa xét.
d)Nếu dùng ds = ds + [n%10] thì luôn thu được danh sách chữ số theo đúng thứ tự ban đầu mà không cần xử lí thêm.

Câu 7

(Câu 22.8 trang 47 SBT Tin học 10) Kết quả khảo sát về tình hình thu nhập của n gia đình được nhập vào hai danh sách: danh sách thứ nhất là họ tên các chủ hộ, danh sách thứ hai là thu nhập tương ứng của từng hộ gia đình. Nhận định nào sau đây đúng hoặc sai?
a)Có thể nhập số hộ gia đình được khảo sát bằng lệnh so_ho_gd = int(input("Số hộ gia đình được khảo sát: ")).
b)Có thể khởi tạo hai danh sách rỗng là ds_chuho = [] và ds_thunhap = [].
c)Có thể dùng vòng lặp for i in range(so_ho_gd) để lần lượt nhập thông tin từng hộ gia đình.
d)Vì mỗi hộ có họ tên và thu nhập nên chỉ cần một biến số nguyên duy nhất là đủ lưu toàn bộ thông tin khảo sát.

Câu 8

(Câu 22.8 trang 47 SBT Tin học 10) Về cách tạo hai danh sách họ tên chủ hộ và thu nhập hộ gia đình, nhận định nào sau đây đúng hoặc sai?
a)Có thể nhập họ tên chủ hộ bằng lệnh input().
b)Có thể thêm họ tên chủ hộ vào danh sách bằng ds_chuho.append(hoten).
c)Có thể nhập thu nhập bằng float(input(...)) vì thu nhập có thể là số thực.
d)Khi nhập xong thu nhập, cần xoá họ tên chủ hộ khỏi danh sách ds_chuho để tiết kiệm bộ nhớ.

Câu 9

(Câu 22.9 trang 47 SBT Tin học 10) Với kết quả khảo sát tình hình thu nhập nêu trong Câu 22.8, em hãy viết chương trình xác định mức thu nhập bình quân của tất cả các hộ gia đình được khảo sát. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo tongthunhap = 0 trước khi tính tổng thu nhập.
b)Có thể duyệt danh sách thu nhập bằng vòng lặp for i in range(so_ho_gd).
c)Có thể cộng dồn thu nhập từng hộ bằng tongthunhap = tongthunhap + ds_thunhap[i].
d)Thu nhập bình quân của tất cả các hộ được tính bằng tongthunhap*so_ho_gd.

Câu 10

(Câu 22.9 trang 47 SBT Tin học 10) Với kết quả khảo sát tình hình thu nhập nêu trong Câu 22.8, em hãy viết chương trình xác định số hộ có thu nhập dưới 20 triệu và thu nhập bình quân của các hộ đó. Nhận định nào sau đây đúng hoặc sai?
a)Có thể dùng biến so_ho_ngheo để đếm số hộ có thu nhập dưới 20 triệu.
b)Có thể dùng biến tongthunhap_ngheo để cộng tổng thu nhập của các hộ có thu nhập dưới 20 triệu.
c)Nếu ds_thunhap[i] < 20 thì cần tăng so_ho_ngheo thêm 1 và cộng thu nhập hộ đó vào tongthunhap_ngheo.
d)Nếu không có hộ nào có thu nhập dưới 20 triệu thì vẫn tính thu nhập bình quân nhóm này bằng tongthunhap_ngheo/so_ho_ngheo.

Câu 11

(Câu 22.10 trang 47 SBT Tin học 10) Viết chương trình in ra họ tên và thu nhập của một hộ gia đình có thu nhập cao nhất và một hộ gia đình có thu nhập ít nhất được khảo sát nêu trong Câu 22.8. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo max_thunhap = ds_thunhap[0] và min_thunhap = ds_thunhap[0].
b)Có thể khởi tạo max_chuho = ds_chuho[0] và min_chuho = ds_chuho[0].
c)Có thể duyệt các chỉ số i của danh sách thu nhập để cập nhật hộ có thu nhập cao nhất và thấp nhất.
d)Để tìm hộ có thu nhập cao nhất và thấp nhất, bắt buộc phải xoá toàn bộ danh sách thu nhập ban đầu.

Câu 12

(Câu 22.10 trang 47 SBT Tin học 10) Về cách xác định hộ có thu nhập cao nhất và hộ có thu nhập thấp nhất, nhận định nào sau đây đúng hoặc sai?
a)Nếu max_thunhap < ds_thunhap[i] thì cần cập nhật max_thunhap và max_chuho.
b)Nếu min_thunhap > ds_thunhap[i] thì cần cập nhật min_thunhap và min_chuho.
c)Sau khi duyệt xong danh sách, có thể in ra tên chủ hộ và mức thu nhập cao nhất, thấp nhất.
d)Chỉ cần so sánh họ tên chủ hộ theo thứ tự chữ cái là xác định được hộ có thu nhập cao nhất.