Bài tập & Lời giải
Bài tập F57: Các lát cắt
Cho xâu s không chứa dấu cách. Hãy thực hiện các công việc sau:
- Đưa ra kí tự thứ ba của xâu s.
- Đưa ra kí tự trước kí tự cuối cùng của s.
- Đưa ra 5 kí tự đầu tiên của s.
- Đưa ra toàn xâu s, trừ 2 kí tự cuối cùng.
- Đưa ra độ dài của xâu s.
Kết quả mỗi yêu cầu đưa ra trên một dòng, các dòng thông tin đưa ra không chứa dấu cách.
Dữ liệu: Nhập xâu s vào từ bàn phím.
Kết quả: Đưa các kết quả ra màn hình, mỗi kết quả ở trên một dòng.
Chú ý: Python cung cấp nhiều cách viết để trích các xâu con theo những cách khác nhau. Ngoài những cách đã nêu trong Bài 11 (sách Tin học 10), có thể tham khảo thêm các cách khác ở tài liệu hệ thống đã cung cấp qua cài đặt.
Ví dụ:
Input |
Output |
abcdefgh |
c g abcde abcdef 8 |
Xem lời giải
Bài tập F58: Xâu mới
Cho xâu s. Tạo xâu mới bằng cách tách s thành 2 phần:
- s1 chứa các kí tự đầu của s, s2 chứa các kí tự còn lại.
- Độ dài sl lớn hơn hoặc bằng 1 so với độ dài của s2.
- Tạo xâu mới bằng cách đổi chỗ s1 và s2 trong s.
Dữ liệu: Nhập xâu s vào từ bàn phím.
Kết quả: Đưa ra màn hình xâu nhận được sau biến đổi.
Gợi ý: Sử dụng kĩ thuật tách xâu con.
Ví dụ:
Input |
Output |
123456789 |
678912345 |
Xem lời giải
Bai tập F59: Tìm và sửa lỗi
Xét bài toán: Cho xâu s nhập vào từ bàn phím. Người ta thay kí tự ở vị trí chẵn trong xâu bằng kí tự “*”.
Chú ý: Vị trí các kí tự trong xâu được đánh số bắt đầu từ 0.
Hãy tìm lỗi trong chương trình sau và đề xuất một cách sửa.
Xem lời giải
Bài tập F60: Vị trí kí tự
Xét bài toán: Cho xâu s và kí tự c. Nếu c xuất hiện trong s một lần thì đưa ra vị trí của c trong s. Nếu c xuất hiện nhiều lần trong s thì đưa ra vị trí xuất hiện lần đầu tiên và lần cuối cùng của c trong s. Nếu s không chứa c thì đưa ra giá trị -1. Viết chương trình nhập xâu s và kí tự c vào từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào xâu s và kí tự c từ bàn phím.
Kết quả: Đưa kết quả ra màn hình.
Gợi ý: Tìm vị trí kí tự c trong xâu s từ đầu về cuối bằng lệnh s .find (c) và tìm ngược từ cuối về đầu bằng lệnh s. rfind (c).
Ví dụ:
Input |
Output |
Input |
Output |
Input |
Output |
abcdabacbcad a |
0 10 |
abcdefgh e |
4 |
12345678 a |
-1 |
Xem lời giải
Bài tập F61: Xoá xâu con
Xét bài toán: Cho xâu s và kí tự c. Nếu c xuất hiện nhiều hơn một lần trong s thì xoá khỏi s xâu con các kí tự liên tiếp nhau bắt đầu lần xuất hiện đầu tiên của c cho đến lần xuất hiện cuối cùng của kí tự này. Viết chương trình nhập xâu s và kí tự c vào từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào xâu s và kí tự c từ bàn phím.
Kết quả: Đưa ra màn hình kết quả nhận được.
Ví dụ:
Input |
Output |
Input |
Output |
2bc2efgh2ijk2lmn 2 |
abclmn |
abcdefgh 2 |
abcdefgh |
Xem lời giải
Bài tập F62: Thay thế
Xét bài toán: Cho xâu s. Tạo xâu mới từ s bằng cách tìm các kí tự 1 và thay nó bằng xâu “one”, các kí tự còn lại được giữ nguyên. Viết chương trình nhập xâu s vào từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập xâu s vào từ bản phím.
Kết quả: Đưa ra màn hình xâu kết quả nhận được.
Ví dụ:
Input |
Output |
32154198176 |
32one54one98one76 |
Xem lời giải
Bài tập F63: Xoá kí tự
Xét bài toán: Cho xâu s và kí tự c. Tạo xâu mới từ s bằng cách xoá các kí tự c trong xâu s. Viết chương trình nhập xâu s và kí tự c vào từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào từ bàn phím xâu s và kí tự c.
Kết quả: Đưa ra màn hình kết quả nhận được.
Ví dụ:
Input |
Output |
123c45c6c78c c |
12345678 |
Xem lời giải
Bài tập F64: Rút ngắn xâu
Xét bài toán: Cho xâu s. Tạo xâu mới từ s bằng cách xoá các kí tự tại những vị trí chia hết cho 3. Viết chương trình nhập xâu s từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào từ bàn phím xâu s.
Kết quả: Đưa ra màn hình kết quả nhận được.
Ví dụ:
Input |
Output |
12345678901234 |
235689124 |
Xem lời giải
Bài tập F65: Tìm và thay thế xâu con
a) Xét bài toán: Cho văn bản t. Tìm và thay thế xâu con old bằng xâu con new trong t. Việc thay thế sẽ được thực hiện cho đến khi văn bản không còn chứa old. Viết chương trình nhập xâu t vào từ bản phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào từ bàn phím
- Dòng thứ nhất chứa văn bản t.
- Dòng thứ hai chứa xâu old.
- Dòng thứ ba chứa xâu new.
Kết quả: Đưa ra màn hình văn bản sau khi thay thế
Ví dụ:
Input |
Output |
BBc Aaa bBbc caa Bbc DEF Bbc BBc |
BBc Aaa bBBc caa BBC DEF |
b) Bàn phím và màn hình là thiết bị vào - ra chuẩn của hệ thống. Khi thực hiện chương trình với dữ liệu kích thước lớn, việc nhập dữ liệu từ bàn phím là không khả thi hoặc không thuận lợi. Dữ liệu có thể chuẩn bị sẵn trên file văn bản và dùng file đó thay thế cho bàn phím. Tương tự như vậy, kết quả có thể đưa ra file văn bản thay thế cho màn hình. Nếu file input có tên “input.txt” và file output có tên là “output.txt” thì việc thay thế thiết bị chuẩn có dạng:
Em hãy soạn file “input.txt” với nội dung nêu ở mục a) và thực hiện nhiệm vụ nêu ở mục a) với việc thay thế bàn phím, màn hình bằng các file “input.txf”, “ouput.txt”.
Xem lời giải
Bài tập F66: Số chữ số 0
Xét bài toán: Cho số nguyên dương n. Hãy xác định số chữ số 0 có trong dạng biểu diễn thập phân của n giai thừa. Viết chương trình nhập vào số nguyên dương n từ bàn phím và thực hiện bài toán trên.
Dữ liệu: Nhập vào từ bàn phím số nguyên dương n.
Kết quả: Đưa ra màn hình một số nguyên là số lượng chữ số 0 xác định được.
Gợi ý: Dùng hàm factoria1 () trong thư viện math và hàm đổi số sang xâu str (n).
Ví dụ:
Input |
Output |
16 |
4 |
Xem lời giải
Bài tập F67: Chuẩn hoá
Xét bài toán: Cho xâu chứa nhiều từ, mỗi từ là dãy các kí tự liên tiếp không chứa dấu cách, giữa các từ cách nhau một số dấu cách. Hãy đưa xâu về dạng chuẩn hoá với các đặc điểm:
- Không có các dấu cách trước từ đầu tiên và sau từ cuối cùng.
- Các từ cách nhau đúng một dấu cách.
- Chữ cái đầu tiên của mỗi từ được viết hoa.
- Các chữ cái còn lại trong từ được viết thường.
Viết chương trình nhập vào từ bàn phím một xâu chưa chuẩn hoá và thực hiện chuẩn hoá xâu.
Dữ liệu: Nhập vào từ bàn phím một dòng chứa xâu cần chuẩn hoá.
Kết quả: Đưa ra màn hình xâu đã chuẩn hoá.
Gợi ý: Sử dụng các lệnh upper (), lower () để có kí tự hoa hay thường.
Ví dụ:
Input |
buôn tÀU buôn bè kHônG bằng ăn dè hà tiện |
Output |
Buôn Tàu Buôn Bè Không Bằng Ăn Dè Hà Tiện |
Xem lời giải
Bài tập F68: Đảo dấu vàng
Thuyền trưởng Flint cho tàu ghé lại một hòn đảo để chôn dấu bớt vàng bạc châu báu cướp được. Để giữ bí mật nơi chôn kho báu, sau khi xuống tàu, Flint dẫn thuộc hạ đi về phía trước, được một đoạn ra lệnh rẽ phải hoặc trái rồi đi tiếp, theo hướng nhìn. Một thuộc hạ của Flint đã bí mật ghi lại đường đi dưới dạng xâu kí tự từ tập {E, N, W, S}, mỗi kí tự tương ứng với một hướng đi (Đông, Bắc, Tây, Nam) và tương ứng với một đơn vị độ dài của đường đi. Cho biết xâu ghi nhận đường đi. Hãy viết chương trình xác định khoảng cách từ bến tàu đến nơi chôn kho báu và đưa ra với độ chính xác đến hai chữ số thập phân sau dấu phẩy.
Dữ liệu: Gồm một dòng chứa xâu kí tự xác định đường đi được nhập vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn khoảng cách tìm được với độ chính xác đến hai chữ số thập phân sau dấu phẩy.
Ví dụ:
Input |
Output |
EENNNWWWNNEESSEEEENN |
7.07 |