Giải SBT Tin học lớp 10 Bài 14, 15: Kiểu dữ liệu danh sách – xử lí danh sách – Thực hành với kiểu dữ liệu danh sách
Câu F69 trang 43 SBT Tin 10: 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.
Trả lời:
Kết quả sẽ là:
Câu F70 trang 44 SBT Tin 10: 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.
Trả lời:
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 F71 trang 44 SBT Tin 10: 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.
Trả lời:
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 F72 trang 44 SBT Tin 10: 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.
Trả lời:
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 F73 trang 44 SBT Tin 10: 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 |
Trả lời:
Tham khảo chương trình sau
Câu F74 trang 44 SBT Tin 10: 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 |
Trả lời:
Tham khảo chương trình sau
Câu F75 trang 45 SBT Tin 10: 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 |
Trả lời:
Tham khảo chương trình sau
Câu F76 trang 45 SBT Tin 10: 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 |
Trả lời:
Tham khảo chương trình sau
Câu F77 trang 45 SBT Tin 10: 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 |
Trả lời:
Tham khảo chương trình sau
Câu F78 trang 46 SBT Tin 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 |
Trả lời:
Tham khảo chương trình sau
Câu F79 trang 46 SBT Tin 10: 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 đó.
Trả 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 F80 trang 46 SBT Tin 10: 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 đó.
Trả 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: