Khởi động
Khởi động trang 123 Tin học 10: Bài toán tìm kiếm xâu con trong một xâu là một trong những bài toán tin học được ứng dụng nhiều trong thực tế. Công cụ tìm kiếm thông tin trên Internet hay lệnh tìm kiếm trong soạn thảo văn bản được xây dựng trên cơ sở bài toán tìm xâu con.
Cho biết xâu c = “Trường Sơn” và xâu m = “Bước chân trên dải Trường Sơn”.
Em hãy cho biết xâu c có là xâu con của xâu m không? Nếu có thì tìm vị trí của xâu c trong xâu m.
Trả lời:
Xâu c là xâu con của xâu m vì “Trường Sơn” có trong trong xâu “Bước chân trên dải Trường Sơn”.
Vị trí của xâu c trong xâu m là từ kí tự 20 đến hết xâu.
1. Xâu con và lệnh tìm vị trí xâu con Hoạt động
Hoạt động 1 trang 123 Tin học 10: Một số lệnh tìm kiếm xâu con trong xâu kí tự
Quan sát các ví dụ sau để tìm hiểu cách kiểm tra xâu con và tìm kiếm vị trí xâu con trong xâu kí tự.
Trả lời:
Để tìm một xâu trong xâu khác có thể dùng toán tử in hoặc lệnh find( ). Lệnh find(
) trả về vị trí của xâu con trong xâu mẹ.
Ví dụ:
Câu hỏi
Câu hỏi 1 trang 124 Tin học 10: Biểu thức lôgic sau là đúng hay sai?
>>> “010” in “001100”
Trả lời:
Biểu thức logic trên là sai vì “010” không nằm trong xâu “001100”
Câu hỏi 2 trang 124 Tin học 10: Lệnh sau trả lại giá trị gì?
>>> “ababababab”. find(“ab”,4) Trả lời:
Lệnh trên trả về giá trị 4.
2. Một số lệnh thường dùng với xâu kí tự Hoạt động
Hoạt động 2 trang 124 Tin học 10: Một số lệnh thường dùng với xâu kí tự Quan sát các ví dụ sau để biết cách sử dụng một số lệnh thường dùng với xâu kí tự như: split( ), join( ).
Trả lời:
Python có các lệnh đặc biệt để xử lí xâu là split( ) dùng để tách xâu thành danh sách và lệnh join ( ) dùng để nối danh sách các xâu thành một xâu.
- Cú pháp của lệnh split( ).
<xâu mẹ>.split(<kí tự tách>) - Cú pháp của lệnh join( ) là:
“kí tự nối”.join(<danh sách>) Câu hỏi
Câu hỏi trang 125 Tin học 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.
Trả lời:
A= “gà,vit,chó,lợn,ngựa,cá”
” ”.join(A) A.split(” ”)
Luyện tập
Luyện tập 1 trang 126 Tin học 10: 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.
Trả lời:
s=input("Nhập dãy các số: ")
a=s.split() # Tách bỏ khoảng trắng trong dãy số, đưa vào list a tong=0
for i in a:
x=float(i) #Chuyển từ xâu sang số thực tong=tong+x
print(tong)
Luyện tập 2 trang 126 Tin học 10: 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 đó.
Trả lời:
s=input("Nhập họ tên người dùng: ") a=s.split()
l=len(a) b=[]
for i in range(l-1):b.append(a[i]) #Đưa phần họ đệm vào list b hodem=" ".join(b) #Nối họ và chữ lót lại thành xâu print("Họ đệm của người dùng là:",hodem)
print("Tên của người dùng là:",a[l-1])
Hình 1. Chương trình kham khảo
Hình 2. Kết quả chạy thử chương trình Vận dụng
Vận dụng 1 trang 126 Tin học 10: 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.
Trả lời:
s=input("Nhập 2 số tự nhiên cách nhau bởi dấu cách: ") a=s.split() #Tách 2 số ra
x=int(a[0]) #Chuyển sang kiểu số nguyên y=int(a[1])
while x!=y:
if x>y:x=x-y else: y=y-x print('UCLN là:',x)
Hình 1. Chương trình tìm UwCLN của hai số
Hình 2. Kết quả chạy thử chương trình
Vận dụng 2 trang 126 Tin học 10: 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.
Trả lời:
n=int(input("Nhập số lượng HS:")) ten=[]
for i in range(n):
s=input("Nhập họ tên HS thứ "+str(i+1)+":") a=s.split()
l=len(a)
ten.append(a[l-1]) #Đưa tên các HS vào list ten t=input("Nhập vào tên 1 HS:")
d=0
for i in ten:
if i==t: d=d+1 #Đếm số HS có cùng tên vừa nhập print("Số HS có cùng tên",t,"là:",d)
Hình 1. Chương trình tìm số học sinh trùng tên
Hình 2. Kết quả chạy thử