MỘT SỐ BÀI TẬP KIỂU XÂU (CHUỖI) CƠ BẢN TRONG PYTHON
- Tạo một xâu và in ra màn hình.
- Tìm tần suất xuất hiện của một ký tự trong một xâu .
- Đảo ngược xâu .
- Tìm từ dài nhất trong một xâu, các từ cách nhau bởi một dấu cách
- Tìm từ xuất hiện nhiều nhất trong một xâu, các từ cách nhau bởi một dấu cách
- Loại bỏ khoảng trắng đầu và cuối của một xâu .
- Chuyển một xâu sang viết hoa hoặc viết thường.
- Tách một xâu dựa trên ký tự hoặc xâu trắng.
- Kiểm tra xem một xâu có phải là palindrome hay không.
- Tìm số lần xuất hiện của một xâu con trong một xâu khác.
- Đếm số các kí tự là chữ số trong xâu S cho trước
- Đếm số các kí tự là chữ cái tiếng Anh trong xâu S cho trước
- Cho trước hai xâu kí tự s1, s2. Viết đoạn chương trình in ra xâu kí tự bao gồm lần lượt các kí tự được lấy ra từ s1, s2. Nếu một trong hai xâu s1, s2 hết trước thì lấy tiếp từ xâu còn lại. Ví dụ nếu s1 = “012”, s2 = “abcde” thì xâu kết quả sẽ là “0a1b2cde”.
- Cho trước hai xâu kí tự s1, s2. Viết đoạn chương trình tính in ra xâu kí tự là phần chung đầu tiên cực đại của hai xâu s1, s2. Ví dụ nếu s1 = “abcdeghik”, s2 = “abcmnopq” thì xấu cần tính là “abc”.
- Cho trước xâu kí tự S, viết đoạn chương trình xoá đi các dấu cách thừa trong xâu S. Dấu cách thừa là các dấu cách ở đầu, cuối và giữa các từ. Quy định giữa các từ chỉ có một dấu cách. Ví dụ nếu S = ” baby table cloud ” thì sau khi sửa S sẽ trở thành “baby table cloud”.
- Viết chương trình nhập một xâu là họ tên đầy đủ (gồm họ, đệm, tên) từ bàn phím, sau đó in ra màn hình lần lượt họ, đệm và tên vừa nhập. Ví dụ:
Nhập họ tên đầy đủ: Nguyễn Xuân Quang Lâm
Họ: Nguyễn
Đệm: Xuân Quang
Tên: Lâm - Viết chương trình nhập n số nguyên từ bàn phim, các số cách nhau bởi dấu cách, sau đó in ra màn hình:
– Danh sách số đã nhập trên một hàng ngang.
– Số lớn nhất và chỉ số của số lớn nhất.
– Số nhỏ nhất và chỉ số của số nhỏ nhất. - Cho trước xâu kí tự S và xâu substr. Viết đoạn chương trình tính số lần lặp của xâu con substr trong xâu S, cho phép chồng lấn của các xâu con này.
Ví dụ nếu S = “12121332121432121”, substr = “121” thì số lần lặp là 4.
BÀI GIẢI
# bài 1
string = input('Nhập 1 xâu: ')
print(string)
# bài 2
# Cách 1:
string = "Hello, World!"
char = 'o'
print(string.count(char))
# Cách 2:
string = "Hello, World!"
char = 'o'
count=0
for ch in string:
if ch==char:
count=count+1
print(count)
# Bài 3
# Cách 1
string = "Xin chào!"
print(string[::-1])
# Cách 2
string = "Xin chào!"
dao=''
for ch in string:
dao=ch+dao
print(dao)
# Bài 4
def longest_substring(string):
sub_strings = string.split()
longest = ""
for sub in sub_strings:
if len(sub) > len(longest):
longest = sub
return longest
string = "Tim tu dai nhat"
print(longest_substring(string))
# Bài 5
def tim_tu(xau):
# Chuyển đổi xâu thành chữ thường để phân biệt chữ hoa/chữ thường
xau = xau.lower()
# Tạo một biến để lưu trữ từ xuất hiện nhiều nhất
tu_nnhat = None
dem_max = 0
# Duyệt qua tất cả các từ trong xâu
for word in xau.split(" "):
# Loại bỏ dấu câu và ký tự đặc biệt khỏi từ
word_clean = ''.join(c for c in word if c.isalnum())
# Đếm số lần xuất hiện của từ hiện tại
dem = xau.count(word_clean)
# Nếu số lần xuất hiện của từ hiện tại nhiều hơn số lần xuất hiện của từ đang lưu trữ
if dem > dem_max:
# Cập nhật từ xuất hiện nhiều nhất
tu_nnhat = word_clean
dem_max = dem
return tu_nnhat
xau = "Tìm từ xuất hiện nhiều nhất trong một xâu. Xâu này có một từ xuất hiện nhiều lần."
# Tìm từ xuất hiện nhiều nhất trong xâu
tu_nnhat = tim_tu(xau)
# Hiển thị kết quả
print("Từ xuất hiện nhiều nhất trong xâu là:", tu_nnhat)
#Bài 6
string = " Hello, World! "
print(string.strip())
# Bài 7
string = "Hello, World!"
print(string.upper()) # Chuyển sang viết hoa
print(string.lower()) # Chuyển sang viết thường
#Bài 8
string = "Hello, World!"
print(string.split(',')) # Tách chuỗi dựa trên ký tự ','
print(string.split()) # Tách chuỗi dựa trên khoảng trắng
# Bài 9
def is_palindrome(s):
# Loại bỏ khoảng trắng và chuyển đổi thành chữ thường
s = s.replace(" ", "").lower()
# So sánh xâu với xâu đảo ngược của nó
return s == s[::-1]
# Nhập xâu từ người dùng
input_string = input("Nhập một xâu: ")
# Kiểm tra xem xâu có phải là palindrome hay không
if is_palindrome(input_string):
print("Đúng, đây là một palindrome.")
else: print("Không, đây không phải là một palindrome.")
#Bài 10:
def count_occurrences(main_string, substring):
count = 0
start_index = 0
while start_index < len(main_string):
# Tìm vị trí xuất hiện đầu tiên của xâu con từ vị trí start_index
index = main_string.find(substring, start_index)
# Nếu không tìm thấy thì dừng vòng lặp
if index == -1:
break
# Nếu tìm thấy, tăng số lần xuất hiện và cập nhật vị trí bắt đầu tìm kiếm mới
count += 1
start_index = index + 1
return count
# Nhập xâu chính và xâu con từ người dùng
main_string = input("Nhập xâu chính: ")
substring = input("Nhập xâu con: ")
# Tìm và in số lần xuất hiện của xâu con trong xâu chính
result = count_occurrences(main_string, substring)
print('Số lần xuất hiện của ',substring,' trong ',main_string,':',result)
# Bài 11
S='dhg432ed32'
# Cách 1
count=0
for char in S:
if '0'<=char<='9':
count+=1
print(count)
#--------------------------------
# Cách 2
count = 0
for char in S:
if char.isdigit(): #isdigit(): hàm kiểm tra có phải số không
count += 1
print(count)
#Bài 12
S='dhVg432eAd32'
# Cách 1
count=0
for char in S:
if 'a'<=char<='z' or 'A'<=char<='Z':
count+=1
print(count)
# Cách 2:
count = 0
for char in S:
if char.isalpha(): # isalpha(): hàm kiểm tra có phải là chữ cái tiếng Anh không
count += 1
print(count)
#Bài 13
s1 = input("Nhập xâu kí tự s1: ")
s2 = input("Nhập xâu kí tự s2: ")
result = ""
i = 0
j = 0
while i < len(s1) and j < len(s2):
result += s1[i]
result += s2[j]
i += 1
j += 1
if i < len(s1):
result += s1[i:] # s1[i:]
if j < len(s2):
result += s2[j:]
print("Xâu kết quả là:", result)
#Bài 14
s1 = input("Nhập xâu kí tự s1: ")
s2 = input("Nhập xâu kí tự s2: ")
result = ""
i = 0
while i < len(s1) and i < len(s2) and s1[i] == s2[i]:
result += s1[i]
i += 1
print("Phần chung đầu tiên cực đại của hai xâu là:", result)
#Bài 15
S = input("Nhập xâu kí tự S: ")
# Xoá các dấu cách ở đầu và cuối xâu
S = S.strip()
# Tách xâu thành các từ
words = S.split()
# Ghép các từ lại với nhau bằng một dấu cách duy nhất
S = " ".join(words)
print("Xâu sau khi xoá các dấu cách thừa:", S)
#Bài 16
ho_ten = input("Nhập họ tên đầy đủ: ")
# Tách xâu thành các từ
tach_tu = ho_ten.split()
# Lấy họ (từ đầu tiên)
ho = tach_tu[0]
# Lấy đệm (từ thứ hai đến trước từ cuối cùng)
dem = " ".join(tach_tu[1:-1])
# Lấy tên (từ cuối cùng)
ten = tach_tu[-1]
# In ra họ, đệm và tên
print("Họ:", ho)
print("Đệm:", dem)
print("Tên:", ten)
#Bài 17
n = int(input("Nhập số lượng số nguyên: "))
s = input("Nhập các số nguyên cách nhau bởi dấu cách: ")
lst=s.split()
# Chuyển các phần tử trong lst thành số nguyên
for i in range(len(lst)):
lst[i]=int(lst[i])
# In ra danh sách các số đã nhập
print("Danh sách các số đã nhập:", end=" ")
for num in lst:
print(num, end=" ")
print()
# Tìm số lớn nhất và chỉ số của số lớn nhất
max_num = lst[0]
max_index = 0
for i in range(1, n):
if lst[i] > max_num:
max_num = lst[i]
max_index = i
print("Số lớn nhất là", max_num, "và nằm ở vị trí", max_index)
# Tìm số nhỏ nhất và chỉ số của số nhỏ nhất
min_num = lst[0]
min_index = 0
for i in range(1, n):
if lst[i] < min_num:
min_num = lst[i]
min_index = i
print("Số nhỏ nhất là", min_num, "và nằm ở vị trí", min_index)
#Bài 18
S = "12121332121432121"
substr = "121"
count = 0
i = 0
while i < len(S):
if S[i:i+len(substr)] == substr:
count += 1
i += 1
print(count)