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ố01234567
Giá trị10"One"915"Two"TrueFalse

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ập A[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]25 chỉ nhân một phần tử, khác hoàn toàn với việc lặp danh sách kiểu A25 (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ập A[len(A)] luôn báo lỗi. - Phép + dùng để ghép danh sách: A + [x] thêm cuối, [x] + A thêm đầu. - Lệnh del A[i] xóa phần tử ở chỉ số i. - Phép A[i]*k lấy một phần tử nhân số — kết quả không còn là danh sách.
Chế độ đọc sách →