Giải Tin Học 10 trang 124
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 124–125
Nguon: Tin Hoc 10 - Ket Noi Tri Thuc Voi Cuoc Song (trang 124 – 125)
⚠️ Lưu ý: Hình ảnh gửi kèm hiển thị nội dung trang 123 và 124 của Bài 25. Mình giải toàn bộ câu hỏi xuất hiện trong hai trang này: phần Khởi động và hai câu hỏi củng cố mục 1.
🔍 Kiến thức cần nhớ
Bài 25 – Một số lệnh làm việc với xâu kí tự
1. Kiểm tra xâu con
- Toán tử
in: kiểm tra một xâu có nằm trong xâu khác không.
Cú pháp:
→ Trả về True nếu xâu 1 là xâu con của xâu 2, ngược lại trả về False.
- Lệnh (phương thức)
find(): tìm vị trí xuất hiện đầu tiên của xâu con.
- Cú pháp đơn giản:
.find( ) - Cú pháp đầy đủ:
→ tìm bắt đầu từ vị trí.find( , start) start. - Nếu không tìm thấy thì trả về
-1.
💡 Mẹo nhớ: Trong Python, chỉ số (vị trí) luôn bắt đầu từ 0. Vì vậy "vị trí đầu tiên" có chỉ số là 0, không phải 1.
2. Một số lệnh thường dùng
split(): tách một xâu thành danh sách các từ.split()(không tham số): tách theo dấu cách.split(","): tách theo dấu được chỉ định (ở đây là dấu phẩy).join(): nối các phần tử của danh sách thành một xâu.
⚙️ Bài tập
Câu Khởi động
Đề bài: Cho xâu c = "Trường Sơn" và xâu m = "Bước chân trên dải Trường Sơn". Em hãy cho biết xâu c có là xâu con của xâu m không? Nếu có thì tìm vị trí của xâu c trong xâu m.
Cách 1 — Dùng toán tử in để kiểm tra
Ta kiểm tra xem cụm "Trường Sơn" có xuất hiện trong xâu m hay không:
>>> c = "Trường Sơn"
>>> m = "Bước chân trên dải Trường Sơn"
>>> c in m
True
Vì câu "Bước chân trên dải Trường Sơn" chứa nguyên vẹn cụm "Trường Sơn", nên xâu c là xâu con của xâu m.
Cách 2 — Dùng lệnh find() để tìm vị trí
>>> m.find(c)
19
Ta đếm thử các kí tự trong xâu m (chỉ số bắt đầu từ 0):
| Cụm từ | Chỉ số |
|---|---|
Bước | 0 – 3 |
| (dấu cách) | 4 |
chân | 5 – 8 |
| (dấu cách) | 9 |
trên | 10 – 13 |
| (dấu cách) | 14 |
dải | 15 – 17 |
| (dấu cách) | 18 |
Trường Sơn | bắt đầu từ 19 |
Kết luận: Xâu c là xâu con của xâu m, xuất hiện tại vị trí (chỉ số) 19.
Câu 1
Đề bài: Biểu thức lôgic sau là đúng hay sai?
>>> "010" in "001100"
Cách 1 — Quan sát trực tiếp
Ta tìm xem cụm "010" có xuất hiện liền nhau trong xâu "001100" không.
Viết các kí tự kèm chỉ số:
0 0 1 1 0 0
0 1 2 3 4 5
Lần lượt kiểm tra các đoạn 3 kí tự liên tiếp:
- Chỉ số 0–2: "001"
- Chỉ số 1–3: "011"
- Chỉ số 2–4: "110"
- Chỉ số 3–5: "100"
Không đoạn nào bằng "010".
Cách 2 — Lập luận nhanh
Trong xâu "001100", các chữ số 1 đứng liền nhau ("11"), còn cụm "010" lại yêu cầu một số 1 đứng giữa hai số 0. Vì không tồn tại cấu trúc 0–1–0 nào trong xâu nên kết quả là sai.
Kết quả:
>>> "010" in "001100"
False
Biểu thức trả về giá trị False (sai).
Câu 2
Đề bài: Lệnh sau trả lại giá trị gì?
>>> "abababab".find("ab", 4)
Cách 1 — Dò theo từng chỉ số
Đánh chỉ số cho xâu "abababab":
a b a b a b a b
0 1 2 3 4 5 6 7
Lệnh find("ab", 4) yêu cầu tìm cụm "ab" bắt đầu từ vị trí 4 trở đi.
- Tại chỉ số 4: kí tự là
a, chỉ số 5 làb→ ghép lại được "ab". ✅ Tìm thấy!
Vậy vị trí tìm thấy đầu tiên (tính từ start = 4) là 4.
Cách 2 — Suy luận theo quy luật
Xâu "abababab" lặp đi lặp lại cụm "ab". Cụm "ab" luôn bắt đầu tại các chỉ số chẵn: 0, 2, 4, 6. Vì bắt đầu tìm từ vị trí 4, nên chỉ số chẵn đầu tiên thỏa mãn chính là 4.
Kết quả:
>>> "abababab".find("ab", 4)
4
Lệnh trả về giá trị 4.
💡 Mẹo nhớ: Tham sốstarttrongfind()cho biết "bắt đầu tìm từ đâu", nhưng kết quả trả về vẫn là chỉ số tính từ đầu xâu gốc, chứ không phải tính từ vị trístart.
🎯 Ghi nhớ: - Dùng toán tửinđể kiểm tra một xâu có là xâu con hay không → trả vềTrue/False. - Dùng lệnhfind()để biết vị trí xuất hiện đầu tiên của xâu con → trả về chỉ số, không tìm thấy thì trả về-1. - Chỉ số trong Python luôn đếm từ 0, vàfind(con, start)vẫn trả chỉ số tính theo xâu gốc.
