Chuỗi là một kiểu dữ liệu cơ bản và quan trọng trong Python, được sử dụng rộng rãi trong nhiều tác vụ lập trình khác nhau. Việc thành thạo các thao tác xử lý chuỗi giúp bạn giải quyết các bài toán một cách hiệu quả hơn. Bài viết này mình sẽ giới thiệu một số bài tập về chuỗi thường gặp trong Python, từ những bài toán cơ bản như đếm ký tự đến các bài tập nâng cao hơn.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Nắm vững khái niệm và cách thao tác với chuỗi trong Python: Qua các ví dụ thực tế, bạn sẽ hiểu rõ chuỗi là gì, và các phương thức làm việc với chuỗi trong Python như thế nào.
- Làm quen với tư duy giải quyết vấn đề trong lập trình: Bạn không chỉ học code mà còn học cách phân tích bài toán và biến nó thành các bước logic để viết code giải quyết.
- Giải quyết thành thạo các bài toán chuỗi cơ bản: Sau bài viết, bạn có thể tự tin viết code để đếm nguyên âm, chuyển đổi chuỗi nhị phân, hay xử lý chuỗi theo yêu cầu riêng.
- Xây dựng nền tảng vững chắc để học lập trình Python nâng cao: Các bài tập chuỗi là bước khởi đầu quan trọng. Sau khi thành thạo, bạn sẽ dễ dàng tiếp cận các chủ đề phức tạp hơn.
Ví dụ 1: Đếm số lượng nguyên âm
Chương trình Python sau đây đếm số lượng nguyên âm trong một chuỗi cho trước.
chuoi_ky_tu = "Chao mung ban den voi the gioi lap trinh Python!"
nguyen_am = "aeiouAEIOU" # Đã bao gồm cả chữ hoa và chữ thường
dem = 0
for ky_tu in chuoi_ky_tu:
if ky_tu in nguyen_am:
dem += 1
print("Số lượng nguyên âm:", dem)
Khi chạy, chương trình sẽ cho kết quả:
Số lượng nguyên âm: 15
Giải thích:
chuoi_ky_tu = "Chao mung ban den voi the gioi lap trinh Python!"
: Khai báo một biếnchuoi_ky_tu
và gán cho biến này một chuỗi.nguyen_am = "aeiouAEIOU"
: Khai báo một biếnnguyen_am
chứa tất cả các nguyên âm (cả chữ hoa và chữ thường).dem = 0
: Khởi tạo biếndem
để lưu số lượng nguyên âm, ban đầu gán giá trị 0.for ky_tu in chuoi_ky_tu:
: Vòng lặpfor
duyệt qua từng ký tự (ky_tu
) trongchuoi_ky_tu
.if ky_tu in nguyen_am:
: Kiểm tra xem ký tự hiện tại (ky_tu
) có nằm trong chuỗinguyen_am
hay không.dem += 1
: Nếu ký tự đó là một nguyên âm, tăng biếndem
lên 1.print("Số lượng nguyên âm:", dem)
: In ra số lượng nguyên âm tìm được.
Ví dụ 2: Chuyển chuỗi nhị phân thành số nguyên
Chương trình Python sau đây chuyển đổi một chuỗi chứa các chữ số nhị phân thành số nguyên.
chuoi_nhi_phan = '11011'
def chuoi_sang_so_nguyen(chuoi_nhi_phan):
for ky_tu in chuoi_nhi_phan:
if ky_tu not in '01':
return "Lỗi. Chuỗi chứa ký tự không phải nhị phân."
so_nguyen = int(chuoi_nhi_phan, 2) #Sử dụng int(chuoi_muon_doi, cơ_số)
return so_nguyen
print("Chuỗi nhị phân:{}, Số nguyên: {}".format(chuoi_nhi_phan, chuoi_sang_so_nguyen(chuoi_nhi_phan)))
Kết quả:
Chuỗi nhị phân:11011, Số nguyên: 27
Thay đổi chuỗi chuoi_nhi_phan sang ‘1201’
Lỗi. Chuỗi chứa ký tự không phải nhị phân.
Giải thích:
chuoi_nhi_phan = '11011'
: Khai báo và gán giá trị cho biếnchuoi_nhi_phan
.def chuoi_sang_so_nguyen(chuoi_nhi_phan):
: Định nghĩa hàmchuoi_sang_so_nguyen
nhận một tham số là chuỗi nhị phân.for ky_tu in chuoi_nhi_phan:
: Vòng lặp kiểm tra từng ký tự trong chuỗi đầu vào.if ky_tu not in '01':
: Nếu có ký tự nào không phải là'0'
hoặc'1'
, hàm trả về thông báo lỗi.so_nguyen = int(chuoi_nhi_phan, 2)
: Nếu chuỗi hợp lệ (chỉ chứa'0'
và'1'
), hàm này sử dụng hàmint()
với đối số thứ hai là2
(cơ số 2) để chuyển đổi chuỗi nhị phân thành số nguyên.return so_nguyen
: Trả về giá trị là số nguyên sau khi chuyển đổi.print("Chuỗi nhị phân:{}, Số nguyên: {}".format(chuoi_nhi_phan, chuoi_sang_so_nguyen(chuoi_nhi_phan))
: Gọi hàm và in kết quả.
Ví dụ 3: Xóa tất cả các chữ số khỏi một chuỗi
Chương trình Python để loại bỏ tất cả các chữ số khỏi một chuỗi.
# Tạo một danh sách các chuỗi đại diện cho các chữ số từ 0 đến 9
chuoi_so = [str(i) for i in range(10)]
chuoi_ban_dau = 'Ch1ao2 c3ac4 b5an6 Yeu7 l8ap9 trinh0!' # Chuỗi ban đầu, chứa cả chữ và số.
chuoi_ky_tu = [] # Khởi tạo danh sách rỗng chứa kí tự sau khi lọc.
# Duyệt qua từng ký tự trong chuỗi ban đầu
for ky_tu in chuoi_ban_dau:
# Nếu ký tự không nằm trong danh sách các chuỗi số
if ky_tu not in chuoi_so:
chuoi_ky_tu.append(ky_tu) # Thêm ký tự đó vào danh sách ký tự
# Tạo một chuỗi mới từ danh sách các ký tự đã lọc
chuoi_moi = ''.join(chuoi_ky_tu)
print(chuoi_moi)
Khi chạy code trên, bạn sẽ nhận được kết quả:
Chao cac ban Yeu lap trinh!
Giải thích code:
chuoi_so = [str(i) for i in range(10)]
: Dòng này tạo ra một danh sách (list) chứa các chuỗi từ “0” đến “9”.range(10)
tạo ra một dãy số từ 0 đến 9, sau đó,str(i)
chuyển đổi từng số thành chuỗi, và[ ... for i in ... ]
là một cú pháp Python (list comprehension) để tạo danh sách một cách nhanh chóng.chuoi_ban_dau = 'Ch1ao2 c3ac4 b5an6 Yeu7 l8ap9 trinh0!'
: Đây là chuỗi ban đầu mà chúng ta muốn xử lý.chuoi_ky_tu = []
: Khởi tạo một danh sách rỗng để lưu trữ các ký tự không phải là chữ số.for ky_tu in chuoi_ban_dau:
: Vòng lặp này duyệt qua từng ký tự (ky_tu
) trongchuoi_ban_dau
.if ky_tu not in chuoi_so:
: Kiểm tra xem ký tự hiện tại có nằm trong danh sáchchuoi_so
(danh sách các chữ số) hay không. Nếuky_tu
không phải là chữ số, điều kiện này sẽ đúng (True).chuoi_ky_tu.append(ky_tu)
: Nếu điều kiện ở trên đúng (ký tự không phải là chữ số), ký tự đó sẽ được thêm vào danh sáchchuoi_ky_tu
.chuoi_moi = ''.join(chuoi_ky_tu)
: Dòng này tạo một chuỗi mới (chuoi_moi
) bằng cách nối tất cả các ký tự trong danh sáchchuoi_ky_tu
lại với nhau.''
(chuỗi rỗng) ở đầu chỉ định rằng các ký tự sẽ được nối liền, không có ký tự nào xen giữa.print(chuoi_moi)
: In chuỗi mới ra màn hình.
Dưới đây là một số bài tập để bạn thực hành thêm về xử lý chuỗi trong Python:
- Chương trình Python để sắp xếp các ký tự trong một chuỗi: Sắp xếp các chữ cái trong một chuỗi theo thứ tự bảng chữ cái (a-z).
- Chương trình Python để loại bỏ các ký tự trùng lặp khỏi một chuỗi: Loại bỏ các ký tự xuất hiện nhiều hơn một lần trong chuỗi.
- Chương trình Python để liệt kê các ký tự duy nhất cùng với số lần xuất hiện của các ký tự trong một chuỗi: Tạo một danh sách (hoặc dictionary) chứa các ký tự riêng biệt trong chuỗi và số lần mỗi ký tự đó xuất hiện.
- Chương trình Python để tìm số lượng từ trong một chuỗi: Đếm số từ có trong chuỗi (các từ được phân tách bằng dấu cách).
- Chương trình Python để loại bỏ tất cả các ký tự không phải chữ cái khỏi một chuỗi: Chỉ giữ lại các chữ cái (a-z, A-Z) trong chuỗi.
Lưu ý: Các bài tập trên không có lời giải cụ thể để khuyến khích bạn tự thực hành. Nếu gặp khó khăn, hãy xem lại kiến thức về vòng lặp, danh sách, và các phương thức xử lý chuỗi trong Python, hoặc đặt câu hỏi nhé.
Lời kết
Chúng ta vừa cùng nhau khám phá một số bài tập về chuỗi trong Python, từ việc đếm nguyên âm, chuyển đổi chuỗi nhị phân, đến xóa chữ số. Hy vọng rằng những ví dụ này không chỉ giúp bạn hiểu rõ hơn về cách xử lý chuỗi mà còn là nguồn cảm hứng để bạn ứng dụng vào các dự án thực tế. Hãy tiếp tục thực hành và khám phá thêm nhiều bài tập thú vị khác để nâng cao kỹ năng lập trình Python của mình.
Mọi người cũng đọc