Giải SBT Tin 10 Bài 14, 15. Kiểu dữ liệu danh sách - xử lí danh sách có đáp án
Giải SBT Tin 10 Bài 14, 15. Kiểu dữ liệu danh sách - xử lí danh sách có đáp án
-
42 lượt thi
-
12 câu hỏi
-
30 phút
Danh sách câu hỏi
Câu 1:
Danh sách loài hoa
Đọc chương trình sau đây và cho biết kết quả in ra màn hình với dữ liệu input đã cho. Em hãy soạn thảo chương trình để kiểm tra dự đoán của mình.
Kết quả sẽ là:
Câu 2:
Danh sách và xâu
Python không cho phép thay đổi kí tự trong xâu. Để có thể thực hiện các phép biến đổi thay kí tự trong xâu s, người ta phải biểu diễn s dưới đạng danh sách kí tự ds. Em hãy chỉ ra cách biến đổi s thành ds.
Sử dụng hàm list (s) để tạo danh sách kí tự từ xâu s.
Ví dụ:
Kết quả
Câu 3:
Tạo bản sao
Xét a là một danh sách. Phép gán b = a không tạo ra một danh sách mới mà chỉ tạo ra tên khác để truy cập tới a. Em hãy chỉ ra một số cách tạo b là danh sách bản sao của a.
Có thể tạo danh sách b là bản sao của danh sách a bằng một trong hai cách:
Cách 1. Dùng phép gán: b = a[: ]
Cách 2. Dùng phép gán: b = a. copy ()
Câu 4:
Danh sách con
Trong Python, việc xử lí xâu và danh sách có nhiều điểm tương đồng. Cách tạo danh sách con được viết giống như tạo xâu con. Em hãy đọc lại cách tạo xâu con và nêu cách viết câu lệnh đưa ra danh sách con của a như sau:
- Gồm m phần tử đầu tiên của danh sách a.
- Gồm các phần tử từ vị trí p đến trước vị trí q, của danh sách a.
- Gồm các phần tử từ vị trí m đến cuối danh sách a.
Việc tạo danh sách con giống như tạo xâu con:
a[:m] - câu lệnh đưa ra danh sách m phần tử đầu tiên của a.
a[p:q] - câu lệnh đưa ra danh sách con tử phần tử ở vị trí p đến phần tử ở vị trí q - 1
a[m: ] - câu lệnh đưa ra danh sách các phần tử cuối của a bắt đầu từ vị trí m.
Câu 5:
Các số chẵn
Lập trình nhập dãy số nguyên từ thiết bị vào chuẩn, các số trên một dòng, cách nhau một dấu cách và đưa ra thiết bị ra chuẩn trên một dòng các số chẵn, cách nhau một dấu cách.
Ví dụ:
Input |
Output |
5 10 6 3 9 2 4 |
10 6 2 4 |
Tham khảo chương trình sau
Câu 6:
Các số dương
Lập trình nhập dãy số nguyên từ thiết bị vào chuẩn, các số trên một dòng, cách nhau một dấu cách và đưa ra thiết bị ra chuẩn trên một dòng các số dương, các số ghi cách nhau, một dấu cách.
Ví dụ:
Input |
Output |
-8 6 -7 -2 1 4 -3 10 |
6 1 4 10 |
Tham khảo chương trình sau
Câu 7:
Số lớn hơn
Lập trình nhập dãy số nguyên từ thiết bị vào chuẩn, các số trên một dòng, cách nhau một dấu cách và đưa ra thiết bị ra chuẩn trên một dòng các số lớn hơn số đứng trước nó, các số ghi cách nhau một dấu cách.
Ví dụ:
Input |
Output |
6 -5 3 -9 -8 1 -2 0 |
3 -8 1 0 |
Tham khảo chương trình sau
Câu 8:
Số lớn nhất
Cho một dãy số nguyên. Hãy lập trình đưa ra số có giá trị lớn nhất của dãy và vị trí của số đó trong dãy. Vị trí các số được đánh số bắt đầu từ 1. Nếu trong dãy có nhiều số cùng là lớn nhất, hãy đưa ra thứ tự vị trí nhỏ nhất của số lớn nhất.
Dữ liệu: Gồm một dòng chứa các số của dãy được nhập vào từ bàn phím, các số cách nhau một dấu cách.
Kết quả: Đưa ra thiết bị ra chuẩn giá trị số lớn nhất và vị trí của nó, hai kết quả này cách nhau một dấu cách.
Ví dụ:
Input |
Output |
4 2 6 3 5 6 2 0 -1 3 |
6 3 |
Tham khảo chương trình sau
Câu 9:
Phân lớp
Cho dãy các số nguyên a1, a2, …, an, Hãy lập trình đưa các số khác 0 lên đầu dãy, giữ nguyên thứ tự xuất hiện, các số 0 đưa về vị trí cuối dãy. Trong chương trình không dùng thêm dãy phụ làm trung gian.
Dữ liệu: Nhập vào từ bàn phím một dòng chứa các số của dãy, mỗi số cách nhau một dấu cách.
Kết quả: Đưa ra màn hình, các số trên một dòng, cách nhau một dấu cách.
Ví dụ:
Input |
Output |
5 0 8 1 0 0 6 0 3 |
5 8 1 6 3 0 0 0 0 |
Tham khảo chương trình sau
Câu 10:
Kiểm tra sắp xếp
Mảng a1, a2, …, an, đã được sắp xếp không giảm nếu ai ≤ ai+1, i = 1, 2,…, n-1. Lập trình nhập mảng số nguyên, kiểm tra và đưa ra thông báo 'Yes” nếu mảng đó đã được sắp xếp không giảm hoặc “No” trong trường hợp ngược lại.
Dữ liệu: Nhập vào từ thiết bị vào chuẩn, gồm một dòng chứa các phần tử của mảng, các số cách nhau một dấu cách.
Kết quả: Đưa ra thiết bị ra chuẩn thông báo xác định được.
Ví dụ:
Input |
Output |
2 4 6 6 22 8 |
Yes |
Tham khảo chương trình sau
Câu 11:
Hoàn thiện chương trình
Chương trình ở hình sau thực hiện nhập từ thiết bị vào chuẩn một danh sách số nguyên A = (a1, a2, …, an); Các số ghi trên cùng một dòng, mỗi số cách nhau một dấu cách. Tính và đưa ra thiết bị ra chuẩn các giá trị b1, b2, …, bn, trong đó bi, (với i từ 1 đến n) là ước số chung lớn nhất của các số a1, a2, …, ai. Các số đưa ra trên một dòng, cách nhau một dấu cách. Tuy nhiên chương trình vẫn có lỗi, em hãy tìm lỗi và nêu các phương pháp khắc phục các lỗi đó.
Câu lệnh sai: b[i] = gcd(b[i-1], a[i]).
Chưa nêu rõ gcd ở thư viện nào. Trường hợp này có hai cách sửa:
Cách 1. Sửa câu lệnh sai thành: b[i] = math.gcd(b[i-1],a[i]).
Cách 2. Chỉ rõ nạp gcd từ thư viện math bằng cách viết lại câu lệnh đầu tiên như sau: from math import gcd.
Câu 12:
Tìm và sửa lỗi
Chương trình ở hình sau thực hiện nhập từ thiết bị vào chuẩn một danh sách số nguyên A = (a1, a2, …, an), các số ghi trên cùng một dòng, mỗi số cách nhau một dấu cách. Tính và đưa ra thiết bị ra chuẩn các giá trị là b1, b2, …, bn, trong đó bi (với i từ 1 đến n) là tổng của các số a1, a2, …, an.. Các số đưa. ra trên một dòng, mỗi số cách nhau một dấu cách. Tuy nhiên, chương trình vẫn có lỗi, em hãy tìm lỗi và nêu các phương pháp khắc phục các lỗi đó.
Các câu lệnh đưa ra không đáp ứng yêu cầu các số phải được đưa ra trên cùng một dòng. Tham khảo chương trình sau: