1. Xâu là một dãy các kí tự
Khái niệm: Xâu kí tự (gọi tắt là xâu) là một dãy các kí tự.
Cách tạo xâu:
s = "Thời khoá biểu"
xau = 'Hoa học trò'
Cau_tho = """ Mình về mình có nhớ ta
Mười lăm năm ấy thiết tha mặn nồng"""
Cấu trúc xâu: Tương tự như danh sách, có thể truy cập từng kí tự của xâu thông qua chỉ số (index), bắt đầu từ 0.
s = "Thời khoá biểu"
print(len(s)) # Output: 14
print(s[0]) # Output: T
print(s[10]) # Output: b
Sự khác biệt giữa xâu và danh sách: Không thể thay đổi kí tự của xâu sau khi đã tạo.
d = ["a","b","c"]
d[0] = "A" # Hợp lệ
s = "abc"
# s[0] = "A" # Lỗi
Lưu ý:
- Python không có kiểu dữ liệu kí tự riêng. Một kí tự đơn giản là xâu có độ dài bằng 1.
- Xâu rỗng:
xau_rong = ""
- Xâu kí tự trong Python là dãy các kí tự Unicode.
2. Lệnh duyệt kí tự của xâu
a. Hai cách duyệt xâu
Duyệt theo chỉ số (sử dụng range()
):
s = "Thời khoá biểu"
for i in range(len(s)):
print(s[i], end=" ") # Output: T h ờ i k h o á b i ể u
Duyệt theo kí tự:
s = "Thời khoá biểu"
for ch in s:
print(ch, end=" ") # Output: T h ờ i k h o á b i ể u
Toán tử in
: Kiểm tra một xâu có phải là xâu con của xâu khác không.
print("a" in "abcd") # Output: True
print("abc" in "abcd") # Output: True
b. Câu hỏi và bài tập củng cố
Câu 1. Sau khi thực hiện các lệnh sau, biến skq
sẽ có giá trị bao nhiêu?
s = "81723"
skq = ""
for ch in s:
if int(ch) % 2 != 0:
skq = skq + ch
print(skq) # Output: 173
Câu 2. Cho s1 = "abc"
, s2 = "ababcabca"
.
Các biểu thức logic sau cho kết quả là đúng hay sai?
a) s1 in s2
(Đúng)
b) s1 + s1 in s2
(Đúng)
c) "abcabca" in s2
(Đúng)
d) "abc123" in s2
(Sai)
Thực hành
Nhiệm vụ 1
Viết chương trình nhập số tự nhiên n là số học sinh, sau đó nhập họ và tên học sinh. Lưu họ và tên học sinh vào một danh sách. In danh sách ra màn hình, mỗi họ tên trên một dòng.
n = int(input("Nhập số học sinh trong lớp: "))
ds_lop = []
for i in range(n):
hoten = input("Nhập họ tên học sinh thứ " + str(i+1)+": ")
ds_lop.append(hoten)
print("Danh sách lớp học:")
for i in range(n):
print(ds_lop[i])
Nhiệm vụ 2
Nhập một xâu kí tự S từ bàn phím rồi kiểm tra xem xâu S có chứa xâu con “10” không.
Duyệt kí tự của xâu theo chỉ số:
S = input("Nhập xâu kí tự bất kì: ")
kq = False
for i in range(len(S)-1):
if S[i] == "1" and S[i+1] == "0":
kq = True
break
if kq:
print("Xâu gốc có chứa xâu '10'")
else:
print("Xâu gốc không chứa xâu '10'")
Luyện tập
1. 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.
S = input("Nhập xâu S: ")
S1 = S[0] + S[1] + S[2]
print(S1)
2. Viết chương trình kiểm tra xâu S có chứa chữ số không. Thông báo “S có chứa chữ số” hoặc “S không chứa chữ số nào”.
s = input("Nhập xâu S: ")
kq = False
for ch in s:
if ch in "0123456789":
kq = True
break
if kq:
print("S có chứa chữ số.")
else:
print("S không chứa chữ số nào.")
Vận dụng
1. Cho hai xâu s1, s2. Viết đoạn chương trình chèn xâu s1 vào giữa s2, tại vị trí len(s2) // 2
. In kết quả ra màn hình.
s1 = input("Nhập xâu thứ nhất: ")
s2 = input("Nhập xâu thứ hai: ")
d = len(s2) // 2
s = ""
for i in range(d):
s = s + s2[i]
s = s + s1
for i in range(d, len(s2)):
s = s + s2[i]
print(s)
2. Viết chương trình nhập số học sinh và họ tên học sinh. Sau đó đếm xem trong danh sách có bao nhiêu bạn tên là “Hương”
n = int(input("Nhập số học sinh: "))
A = []
for k in range(n):
s = input("Nhập tên học sinh thứ " + str(k+1) + " :")
A.append(s)
ten = input("Nhập tên học sinh cần tìm: ")
count = 0
for s in A:
if ten in s:
count = count + 1
if count == 0:
print("Lớp không có bạn", ten)
else:
print("Lớp có", count, "bạn tên", ten)