Trả lời nhanh
Trong Python, đoạn lệnh trích xâu con gồm ba kí tự đầu tiên của S là t = S[:3] (hoặc S[0:3]). Trong Pascal dùng t := copy(S, 1, 3). Nếu S ngắn hơn ba kí tự thì kết quả là toàn bộ xâu S, chương trình không báo lỗi. Cả hai cách đều không làm thay đổi xâu S ban đầu.
Đề bài
Cho xâu S. Viết đoạn lệnh trích ra xâu con của S bao gồm ba kí tự đầu tiên của S.
Cách làm bằng Python
Python đánh chỉ số các kí tự từ 0. Phép cắt lát (slicing) S[a:b] lấy các kí tự có chỉ số từ a đến b − 1, tức là không lấy vị trí b.
![Sơ đồ chỉ số xâu Python và phép cắt lát S[:3] lấy ba kí tự đầu tiên](https://tailieumoi.vn/wp-content/uploads/2026/10/cho-xau-s-viet-doan-lenh-trich-ra-xau-con-cua-s-ba-33097-hinh-1.webp)
Vì ba kí tự đầu có chỉ số 0, 1, 2 nên ta viết:
S = input()t = S[:3]print(t)
Khi bỏ trống chỉ số đầu, Python hiểu là bắt đầu từ 0. Do đó S[:3] và S[0:3] cho cùng kết quả. Với S = “Python”, kết quả là “Pyt”. Với S = “Hà Nội”, kết quả là “Hà ” (hai chữ cái và một dấu cách) vì dấu cách cũng là một kí tự.
Cách làm bằng Pascal
Pascal đánh chỉ số từ 1 và dùng hàm copy(s, vt, n): lấy n kí tự của s bắt đầu từ vị trí vt.
readln(S);t := copy(S, 1, 3);writeln(t);
Ở đây vị trí bắt đầu là 1 (kí tự đầu tiên), số kí tự lấy là 3.
Bảng so sánh hai ngôn ngữ
| Yêu cầu | Python | Pascal |
|---|---|---|
| 3 kí tự đầu | S[:3] | copy(S, 1, 3) |
| 3 kí tự cuối | S[-3:] | copy(S, length(S) − 2, 3) |
| Kí tự thứ 2 đến thứ 4 | S[1:4] | copy(S, 2, 3) |
Điểm khác biệt cần nhớ: Python chỉ số từ 0 và nhận cặp [đầu : cuối), Pascal chỉ số từ 1 và nhận (vị trí, số lượng).
Các trường hợp đặc biệt
- Xâu rỗng: kết quả cũng là xâu rỗng.
- Xâu có ít hơn 3 kí tự: cả S[:3] và copy(S, 1, 3) trả về toàn bộ xâu, ví dụ S = “ab” cho “ab”.
- Cần đúng 3 kí tự: kiểm tra len(S) >= 3 (Python) hoặc length(S) >= 3 (Pascal) trước khi lấy.
Lỗi sai thường gặp
- Viết S[:2] vì tưởng chỉ số cuối được lấy; thực tế S[:3] mới lấy ba kí tự.
- Dùng S[3] (chỉ một kí tự thứ tư) thay vì cắt lát.
- Trong Pascal, viết copy(S, 0, 3): vị trí 0 không hợp lệ, cần bắt đầu từ 1.
- Tưởng rằng phép cắt lát làm thay đổi S; thực tế xâu trong Python không thể sửa tại chỗ, phép cắt chỉ tạo xâu mới.
Bài luyện tập có đáp án
- Với S = “Informatics”, S[:3] bằng gì? Đáp án: “Inf”.
- Viết lệnh Python lấy hai kí tự cuối của S. Đáp án: t = S[-2:].
- Viết lệnh Pascal lấy 3 kí tự bắt đầu từ vị trí thứ 4. Đáp án: t := copy(S, 4, 3);
Câu hỏi thường gặp
Cách trích ba kí tự đầu của xâu S trong Python?
Dùng cắt lát: S[:3] hoặc S[0:3]; kết quả là xâu mới gồm ba kí tự đầu tiên của S.
Nếu S có ít hơn 3 kí tự thì sao?
Python và Pascal đều trả về toàn bộ xâu S, không báo lỗi; nếu cần chính xác ba kí tự thì kiểm tra độ dài trước.
Trong Pascal dùng hàm nào để trích xâu con?
Dùng hàm copy(S, vt, n), ví dụ copy(S, 1, 3) lấy 3 kí tự bắt đầu từ vị trí 1.
Vì sao S[:3] lại lấy đúng ba kí tự mà không phải bốn?
Vì cắt lát [a:b] lấy từ chỉ số a đến b − 1; chỉ số 0, 1, 2 là ba kí tự.