Bài 23 Một số lệnh làm việc với dữ liệu danh sách
Lớp 10Tin Học15 câu hỏiBài tập
Phần 1
Câu 1
(Câu 23.1 trang 47 SBT Tin học 10) Giả sử A = [2, 4, '5', 'Hà Nội', 'Việt Nam', 9]. Hãy cho biết kết quả các câu lệnh sau: (a) 4 in A; (b) 5 in A; (c) 'Hà' in A; (d) "Việt Nam" in A; (e) '9' in A. Phương án nào đúng?
A(a) True; (b) False; (c) False; (d) True; (e) False.
B(a) True; (b) True; (c) False; (d) True; (e) False.
C(a) True; (b) False; (c) True; (d) True; (e) False.
D(a) True; (b) False; (c) False; (d) True; (e) True.
Phần 2
Câu 1
(Câu 23.2 trang 48 SBT Tin học 10) Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh xác định và in ra số các phần tử lớn hơn 0 của A. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo biến đếm bằng dem = 0 trước khi duyệt danh sách.
b)Có thể dùng vòng lặp for k in A để lần lượt xét từng phần tử của danh sách A.
c)Nếu k > 0 thì cần tăng biến đếm bằng dem = dem + 1.
d)Để đếm các phần tử lớn hơn 0, chỉ cần dùng điều kiện k < 0.
Câu 2
(Câu 23.3 trang 48 SBT Tin học 10) Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh tạo và in ra danh sách B chỉ gồm các số chẵn có trong A. 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ể dùng vòng lặp for k in A để duyệt từng phần tử của A.
c)Nếu k%2 == 0 thì k là số chẵn và có thể thêm k vào B bằng B.append(k).
d)Để tạo danh sách các số chẵn, cần thêm vào B tất cả các phần tử có điều kiện k%2 != 0.
Câu 3
(Câu 23.4 trang 48 SBT Tin học 10) Dãy Fibonacci được xác định bởi F₀ = 0, F₁ = 1, ..., Fₙ = Fₙ₋₁ + Fₙ₋₂ với n ≥ 2. Trong bài toán đếm thỏ, nếu đầu năm có một cặp thỏ sơ sinh thì số cặp thỏ ở các tháng đầu lần lượt tuân theo dãy Fibonacci. Nhận định nào sau đây đúng hoặc sai?
[Hình Ảnh]
[Hình Ảnh]
a)Tháng Giêng và tháng Hai đều có 1 cặp thỏ.
b)Tháng Ba có 2 cặp thỏ.
c)Tháng Năm có 5 cặp thỏ.
d)Công thức tổng quát của dãy là f(n) = f(n - 1) - f(n - 2) với n > 3.
Câu 4
(Câu 23.4 trang 48 SBT Tin học 10) Viết chương trình nhập n từ bàn phím, tạo và in ra dãy số A bao gồm n số hạng đầu của dãy Fibonacci. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo danh sách Fibonacci ban đầu bằng Fibonacci = [0, 1].
b)Có thể nhập n bằng lệnh n = int(input("Nhập số tự nhiên n >= 2: ")).
c)Trong vòng lặp, có thể thêm số hạng mới bằng Fibonacci.append(Fibonacci[i - 1] + Fibonacci[i - 2]).
d)Muốn tạo dãy Fibonacci, mỗi số hạng mới phải bằng tích của hai số hạng đứng ngay trước nó.
Câu 5
(Câu 23.5 trang 49 SBT Tin học 10) Mã hoá văn bản bằng phương pháp tịnh tiến kí tự: thay mỗi kí tự trong bản rõ bằng kí tự đứng cách nó k đơn vị trong bảng mã ASCII. Nhận định nào sau đây đúng hoặc sai?
a)Văn bản ban đầu được gọi là bản rõ.
b)Văn bản thu được sau khi mã hoá được gọi là bản mã.
c)Số tự nhiên k được gọi là khoá.
d)Mã hoá bằng tịnh tiến kí tự là thay mỗi kí tự bằng chính nó, không phụ thuộc vào k.
Câu 6
(Câu 23.5 trang 49 SBT Tin học 10) Viết chương trình nhập khoá k là số tự nhiên nhỏ hơn 5, thực hiện mã hoá một danh sách kí tự bằng phương pháp tịnh tiến kí tự và in bản mã ra màn hình. Nhận định nào sau đây đúng hoặc sai?
a)Có thể dùng hàm ord(kitu) để lấy số thứ tự của kí tự trong bảng mã ASCII.
b)Có thể dùng hàm chr(n) để xác định kí tự có số thứ tự là n trong bảng mã ASCII.
c)Khi mã hoá, có thể thêm kí tự mới vào bản mã bằng ban_ma.append(chr(ord(kitu) + khoa)).
d)Khi mã hoá bằng khoá k, cần dùng chr(ord(kitu) - khoa) để lấy kí tự đứng sau k vị trí trong bảng mã ASCII.
Câu 7
(Câu 23.6 trang 50 SBT Tin học 10) Giải mã một bản mã đã được mã hoá theo phương pháp tịnh tiến kí tự với khoá k < 5. Nhận định nào sau đây đúng hoặc sai?
a)Để giải mã, cần đổi các kí tự của bản mã thành kí tự đứng trước nó k vị trí trong bảng mã ASCII.
b)Có thể duyệt từng kí tự trong danh sách bản mã bằng vòng lặp for kitu in ban_ma.
c)Có thể thêm kí tự giải mã vào bản rõ bằng ban_ro.append(chr(ord(kitu) - khoa)).
d)Khi giải mã, cần tiếp tục cộng thêm khoá k vào mã ASCII của từng kí tự trong bản mã.
Câu 8
(Câu 23.7 trang 50 SBT Tin học 10) Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh xoá tất cả các phần tử nhỏ hơn 0 trong A và in danh sách nhận được ra màn hình. Nhận định nào sau đây đúng hoặc sai?
a)Cần kiểm tra từng phần tử của danh sách A.
b)Nếu một phần tử k nhỏ hơn 0 thì có thể xoá phần tử đó khỏi danh sách.
c)Có thể dùng lệnh A.remove(k) để xoá phần tử k khỏi danh sách.
d)Để xoá các phần tử nhỏ hơn 0, cần giữ lại tất cả các phần tử có k < 0.
Câu 9
(Câu 23.8 trang 50 SBT Tin học 10) Cho dãy số [1, 2, -5, 5, 8, -8]. Em hãy viết chương trình chèn xâu "Số âm" vào sau phần tử nhỏ hơn 0 đầu tiên của dãy đã cho. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo danh sách A = [1, 2, -5, 5, 8, -8].
b)Có thể dùng biến i để duyệt các chỉ số của danh sách A.
c)Khi tìm thấy phần tử A[i] < 0 đầu tiên, cần dùng A.insert(i + 1, "Số âm") để chèn xâu vào sau phần tử đó.
d)Khi tìm thấy phần tử A[i] < 0 đầu tiên, cần dùng A.insert(i, "Số âm") để chèn xâu vào sau phần tử đó.
Câu 10
(Câu 23.8 trang 50 SBT Tin học 10) Về chương trình chèn xâu "Số âm" vào sau phần tử âm đầu tiên của danh sách A = [1, 2, -5, 5, 8, -8], nhận định nào sau đây đúng hoặc sai?
a)Điều kiện A[i] < 0 dùng để phát hiện phần tử âm.
b)Sau khi chèn xâu "Số âm" vào đúng vị trí, có thể dùng lệnh break để kết thúc vòng lặp.
c)Kết quả nhận được là [1, 2, -5, "Số âm", 5, 8, -8].
d)Chương trình phải chèn xâu "Số âm" vào sau tất cả các phần tử âm trong danh sách.
Câu 11
(Câu 23.9 trang 50 SBT Tin học 10) Cho danh sách A gồm tên một số địa danh du lịch của Việt Nam. Em hãy viết chương trình nhập vào tên một địa danh, xác định địa danh đó có trong danh sách hay chưa; nếu có thì in ra số thứ tự của địa danh ấy trong danh sách, nếu chưa có thì chèn thêm tên địa danh đó vào cuối danh sách. Nhận định nào sau đây đúng hoặc sai?
a)Vì cần xác định thứ tự trong danh sách nên có thể duyệt danh sách theo chỉ số của từng phần tử.
b)Có thể dùng biến da_co để ghi nhận địa danh đã có trong danh sách hay chưa.
c)Nếu ten == dia_danh[i] thì có thể gán da_co = True và thu_tu_diadanh = i + 1.
d)Nếu địa danh chưa có trong danh sách thì cần xoá toàn bộ danh sách cũ.
Câu 12
(Câu 23.9 trang 50 SBT Tin học 10) Về việc tìm và bổ sung địa danh du lịch trong danh sách, nhận định nào sau đây đúng hoặc sai?
a)Có thể nhập tên địa danh cần tìm bằng lệnh ten = input("Địa danh cần tìm: ").
b)Nếu sau khi duyệt danh sách mà da_co == False thì có thể thêm địa danh mới bằng dia_danh.append(ten).
c)Nếu địa danh đã có trong danh sách thì có thể in ra vị trí thứ thu_tu_diadanh của địa danh đó.
d)Lệnh append(ten) dùng để xoá địa danh ten khỏi danh sách.
Câu 13
(Câu 23.10 trang 50 SBT Tin học 10) Trong danh sách các địa danh du lịch có thể có địa danh xuất hiện nhiều lần. Viết chương trình để xoá bớt các trường hợp trùng lặp, sao cho mỗi địa danh trong danh sách chỉ có một lần. Nhận định nào sau đây đúng hoặc sai?
a)Có thể dùng vòng lặp ngoài với chỉ số i để lần lượt chọn từng địa danh cần kiểm tra.
b)Có thể dùng vòng lặp trong với chỉ số j để kiểm tra các địa danh đứng sau vị trí i.
c)Nếu dia_danh[i] trùng với dia_danh[j] thì có thể xoá phần tử trùng lặp ở vị trí sau.
d)Để xoá trùng lặp, cần giữ nguyên mọi phần tử trùng nhau trong danh sách.
Câu 14
(Câu 23.10 trang 50 SBT Tin học 10) Về thuật toán xoá các địa danh trùng lặp trong danh sách, nhận định nào sau đây đúng hoặc sai?
a)Sau khi chọn ten = dia_danh[i], cần so sánh ten với các phần tử phía sau nó trong danh sách.
b)Nếu ten == tentieptheo thì có thể xoá tentieptheo khỏi danh sách.
c)Nếu ten != tentieptheo thì cần tăng j lên để kiểm tra phần tử tiếp theo.
d)Sau khi xoá một phần tử trùng lặp, luôn phải tăng j ngay lập tức vì độ dài danh sách không thay đổi.