Giải Tin Học 10 trang 112
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 112–113
Nguon: Tin Hoc 10 - Ket Noi Tri Thuc Voi Cuoc Song (trang 112 – 113)
🔍 Kiến thức cần nhớ
- List là kiểu dữ liệu danh sách (dãy, mảng) trong Python. Tạo list bằng lệnh gán với các phần tử đặt trong cặp dấu ngoặc vuông
[ ].
Cú pháp khởi tạo:
```python
```
- Các phần tử của danh sách có thể có kiểu dữ liệu khác nhau (số nguyên, số thực, xâu kí tự, lôgic...). Đây là điểm khác biệt quan trọng so với mảng của nhiều ngôn ngữ khác.
- Truy cập hoặc thay đổi giá trị từng phần tử thông qua chỉ số:
```python
```
- Chỉ số của danh sách bắt đầu từ 0 đến
len() − 1, trong đólen()là lệnh tính độ dài (số phần tử) của danh sách.
- Một số thao tác cơ bản:
- Thay đổi giá trị phần tử: dùng lệnh gán, ví dụ
A[1] = "One" - Xóa một phần tử: dùng lệnh
del, ví dụdel A[4] - Tạo danh sách rỗng:
a = [](độ dài 0) - Ghép hai danh sách: dùng phép
+, ví dụ[1,2] + [3,4] → [1,2,3,4]
- Duyệt các phần tử bằng vòng
for:
```python
for i in range(len(A)):
print(A[i], end = " ")
```
Biến i chạy trên vùng chỉ số từ 0 đến len(A) − 1.
💡 Mẹo nhớ: Chỉ số luôn bắt đầu từ 0, nên phần tử cuối cùng có chỉ số là len() − 1, không phải len().
⚙️ Bài tập
Câu 1
Đề bài: Cho danh sách A = [1, 0, "One", 9, 15, "Two", True, False]. Hãy cho biết giá trị các phần tử:
a) A[0] b) A[2] c) A[7] d) A[len(A)]
Cách 1 — Đánh số chỉ số từng phần tử
Trước tiên, ta lập bảng chỉ số (bắt đầu từ 0):
| Chỉ số | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| Giá trị | 1 | 0 | "One" | 9 | 15 | "Two" | True | False |
Danh sách có 8 phần tử nên len(A) = 8, chỉ số hợp lệ là từ 0 đến 7.
a) A[0] → phần tử ở vị trí 0 → 1
b) A[2] → phần tử ở vị trí 2 → 'One' (xâu kí tự)
c) A[7] → phần tử ở vị trí 7 → False
d) A[len(A)] = A[8] → chỉ số 8 vượt quá vùng chỉ số hợp lệ (0 đến 7).
→ Python báo lỗi IndexError: list index out of range (không có giá trị).
⚠️ Lưu ý thi: Câu d) là "bẫy" rất hay gặp. Nhiều bạn nghĩA[len(A)]là phần tử cuối, nhưng phần tử cuối thực ra làA[len(A) − 1]. Truy cậpA[len(A)]luôn gây lỗi vượt chỉ số.
Câu 2
Đề bài: Giả sử A là một danh sách các số, mỗi lệnh sau thực hiện gì?
a) A = A + [10] b) del A[0] c) A = [100] + A d) A = A[1]*25
Cách 1 — Phân tích từng lệnh (lấy ví dụ A = [1, 2, 3, 4, 5, 6])
a) A = A + [10]
Phép + ghép danh sách A với danh sách [10], tức là thêm phần tử 10 vào cuối danh sách A.
→ Kết quả: A = [1, 2, 3, 4, 5, 6, 10]
b) del A[0]
Lệnh del xóa phần tử đầu tiên (chỉ số 0) của danh sách. Các phần tử còn lại dồn lên, chỉ số được đánh lại từ 0.
→ Kết quả: A = [2, 3, 4, 5, 6]
c) A = [100] + A
Ghép danh sách [100] với A, tức là thêm phần tử 100 vào đầu danh sách.
→ Kết quả: A = [100, 1, 2, 3, 4, 5, 6]
d) A = A[1]*25
Lấy giá trị phần tử A[1] (là một số) nhân với 25, rồi gán lại cho biến A.
Lúc này A không còn là danh sách mà trở thành một số.
→ Với A[1] = 2: kết quả A = 2 * 25 = 50
💡 Mẹo nhớ: Phân biệt 3 cách "thêm" và "biến đổi": -A + [x]→ thêm vào cuối -[x] + A→ thêm vào đầu -A[i] * k→ chỉ lấy một phần tử nhân số, làm A mất tính danh sách
⚠️ Lưu ý thi: Cẩn thận với câu d).A[1]25chỉ nhân một phần tử, khác hoàn toàn với việc lặp danh sách kiểuA25 (lặp lại toàn bộ A 25 lần). Đề rất hay đánh lừa ở đây.
🎯 Ghi nhớ: - Chỉ số danh sách chạy từ 0 đến len() − 1. Truy cậpA[len(A)]luôn báo lỗi. - Phép+dùng để ghép danh sách:A + [x]thêm cuối,[x] + Athêm đầu. - Lệnhdel A[i]xóa phần tử ở chỉ số i. - PhépA[i]*klấy một phần tử nhân số — kết quả không còn là danh sách.
