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: in

→ 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 đủ: .find(, start) → tìm bắt đầu từ vị trí 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ước0 – 3
(dấu cách)4
chân5 – 8
(dấu cách)9
trên10 – 13
(dấu cách)14
dải15 – 17
(dấu cách)18
Trường Sơnbắ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ố start trong find() 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 là xâu con hay không → trả về True/False. - Dùng lệnh find() để 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.
Chế độ đọc sách →