1. Xâu con và lệnh tìm vị trí xâu con
– Biểu thức kiểm tra <xâu 1> nằm trong <xâu 2> là: <xâu 1> in <xâu 2>
. Nếu đúng thì trả lại giá trị True, nếu sai trả lại giá trị False.
– Ví dụ 1: Dùng toán tử in để kiểm tra một xâu có là xâu con của xâu khác không.
>>> "abc" in "123abc"
True
>>> "010" in "1101"
False
Tương tự danh sách, Python cũng có một số lệnh đặc biệt dành riêng cho xâu kí tự (phương thức). Cách thực hiện phương thức là: <xâu>.<phương thức>
– Cú pháp đơn của lệnh find(): <xâu mẹ>.find(<xâu con>)
. Nếu không tìm thấy thì trả về kết quả là -1.
– Cú pháp đầy đủ của lệnh find(): <xâu mẹ>.find(<xâu con>,start
)
– Ví dụ:
>>> sub = "Đà Nẵng"
>>> s = "Hà Nội - Đà Nẵng - Hồ Chí Minh"
>>> s.find(sub)
9
>>> s.find(sub,10)
-1
Câu hỏi luyện tập:
Biểu thức lôgic sau là đúng hay sai? "010" in "001100"
"010" in "001100"
Trả lời: Sai. Do xâu 010 không xuất hiện trong xâu 001100
Lệnh sau trả lại giá trị gì? "ababababab".find("ab",4)
"ababababab".find("ab",4)
Trả lời: 4. (bắt đầu tìm ab trong xâu từ vị trí thứ 4
2. Một số lệnh thường dùng với xâu ký tự
a. Lệnh split()
Tách một xâu thành danh sách các từ: <xâu mẹ>.split(<kí tự tách>)
Ví dụ:
>>> s = "Tiên học lễ hậu học văn"
>>> s.split() # Tách xâu dùng dấu cách để phân biệt tách.
['Tiên', 'học', 'lễ', 'hậu', 'học', 'văn']
>>> st = "0, 1, 2, 3, 4, 5, 6, 10"
>>> st.split(",") # Tách xâu dùng dấu "," để phân biệt tách.
['0', '1', '2', '3', '4', '5', '6', '10']
b. Lệnh join()
Nối danh sách gồm các từ thành một xâu: "kí tự nối".join(<danh sách>)
Ví dụ:
>>> A = ['Tiên', 'học', 'lễ', 'hậu', 'học', 'văn']
>>> " ".join(A) # Lệnh join() này sẽ nối các phần tử
'Tiên học lễ hậu học văn'
>>> B = ['0', '1', '2', '3', '4', '5', '6', '10']
>>> ",".join(B) # Lệnh join() này sẽ nối các phần tử
'0,1,2,3,4,5,6,10'
Cho xâu kí tự: "gà,vịt,chó,lợn,ngựa,cá"
. Em hãy trình bày cách làm để xoá các dấu "," và thay thế bằng dấu " " trong xâu này.
"gà,vịt,chó,lợn,ngựa,cá"
. Em hãy trình bày cách làm để xoá các dấu "," và thay thế bằng dấu " " trong xâu này.Trả lời: " ".join(s.split(","))
Thực hành
Nhiệm vụ 1
Viết chương trình nhập nhiều số nguyên từ bàn phím, các số cách nhau bởi dấu cách. Khi nhập xong thông báo số lượng các số đã nhập và in các số này thành hàng ngang.
Dữ liệu nhập vào là một xâu. Dùng lệnh split() để tách thành danh sách. Chuyển các phần tử của danh sách này thành số và in ra màn hình.
s = input("Nhập các số nguyên cách nhau bởi dấu cách: ")
sline = s.split()
n = len(sline)
nline = []
for x in sline:
nline.append(int(x))
print("Bạn đã nhập",n,"số.")
for k in nline:
print(k, end = " ")
Nhiệm vụ 2
Viết chương trình nhập một xâu kí tự có thể có nhiều dấu cách giữa các từ. Sau đó chỉnh sửa xâu kí tự đó sao cho giữa các từ chỉ có một dấu cách. In xâu kết quả ra màn hình.
Chuyển xâu kí tự ban đầu thành danh sách các từ đơn bằng lệnh split(), sau đó nối các từ đơn này bằng lệnh join().
s = input("Nhập đoạn văn bản: n")
sline = s.split()
skq = " ".join(sline)
print(skq)
Nhiệm vụ 3
Viết chương trình nhập số tự nhiên n, rồi nhập họ tên của n học sinh. Sau đó in ra danh sách tên học sinh theo hai cột, cột 1 là tên, cột 2 là họ đệm.
Họ tên ban đầu tách ra thành tên và họ đệm bằng lệnh split(). Các tên được đưa vào danh sách ten, các họ đệm được đưa vào danh sách hodem. Sau đó in ra danh sách theo yêu cầu.
n = int(input("Nhập số học sinh trong lớp: "))
ten = []
hodem = []
for i in range(n):
s = input("Nhập họ tên học sinh thứ "+str(i+1)+": ")
sline = s.split()
m = len(sline)-1
ten.append(sline[m])
del sline[m]
hodem.append(" ".join(sline))
print("Danh sách học sinh:")
for i in range(n):
print(ten[i],hodem[i])
Luyện tập
Câu 1.
Viết chương trình nhập nhiều số (số nguyên hoặc số thực) từ bàn phím, các số cách nhau bởi dấu cách. Sau đó in ra màn hình tổng các số đã nhập.
s = input("Nhập các số cách nhau bởi dấu cách: ")
A = s.split()
for i in range(len(A)):
A[i] = float(A[i])
print("Tổng các số đã nhập:", sum(A))
Câu 2.
Viết chương trình nhập họ tên đầy đủ của người dùng, sau đó in thông báo tên và họ đệm của người đó.
hoten = input("Nhập họ tên đầy đủ: ")
A = hoten.split()
ten = A[len(A)-1]
hodem = " ".join(A[0: len(A)-1])
print("Tên bạn là:", ten)
print("Họ đệm là:", hodem)
Vận dụng
Câu 1.
Viết chương trình nhập hai số tự nhiên từ bàn phím, cách nhau bởi dấu cách và đưa ra kết quả là ƯCLN của hai số này.
s = input("Nhập hai số nguyên m, n: ")
A = s.split()
m = int(A[0])
n = int(A[1])
while m != n:
if m < n:
n = n - m
else:
m = m - n
print("Ước chung lớn nhất là:", m)
Câu 2.
Viết chương trình nhập số tự nhiên n rồi nhập n họ tên học sinh. Sau đó yêu cầu nhập một tên và thông báo số bạn có cùng tên đó trong lớp.
n = int(input("Nhập số tự nhiên n: "))
ten = []
for i in range(n):
hoten = input("Nhập họ tên đầy đủ học sinh thứ "+ str(i+1)+": ")
B = hoten.split()
ten.append(B[len(B)-1])
print(ten)
name = input("Nhập một tên bất kì: ")
count = 0
for s in ten:
if name == s:
count = count + 1
print("Lớp có", count, "bạn có tên", name)
Câu hỏi trắc nghiệm dạng D1 và D2 Tin học 10 Bài 25. Một số lệnh làm việc với xâu kí tự
Bảng xếp hạng
Hạng | Họ tên | Điểm số | Thời gian |
---|---|---|---|
1 |
Nguyễn Trí Nhân
1 lần thi
|
79/100
|
8 phút 47 giây |