Tin học 10 – Bài 25. Một số lệnh làm việc với xâu kí tự

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.

Python
>>> "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ụ:

Python
>>> 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"

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)

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ụ:

Python
>>> 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ụ:

Python
>>> 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.

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.

Python
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().

Python
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.

Python
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.

Python
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 đó.

Python
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.

Python
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.

Python
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ự

Thời gian làm bài: 30 phút
Đáp án chỉ hiển thị sau khi hoàn thành bài làm
Câu hỏi sẽ được hiển thị ngẫu nhiên
Vui lòng nhập họ và tên để bắt đầu làm bài

NB

Phương án nào sau đây mô tả đúng về xâu con trong một xâu kí tự?

NB

Lệnh nào sau đây được sử dụng để kiểm tra một xâu có phải là xâu con của xâu khác hay không?

NB

Phương pháp nào sau đây được sử dụng để tìm vị trí xuất hiện đầu tiên của một xâu con trong xâu mẹ?

NB

Lệnh split() được sử dụng để làm gì?

NB

Lệnh join() được sử dụng để làm gì?

TH

Phương án nào sau đây giải thích đúng về sự khác biệt giữa lệnh split() và lệnh join()?

TH

Phương án nào sau đây mô tả đúng về cách sử dụng lệnh find()?

TH

Phương án nào sau đây giải thích đúng về cách sử dụng toán tử in?

VD

Một chương trình cần kiểm tra xem một xâu kí tự có chứa từ "Python" không. Phương án nào sau đây là phù hợp?

VD

Một chương trình cần tìm vị trí xuất hiện đầu tiên của từ "Java" trong một xâu kí tự. Phương án nào sau đây là phù hợp?

NB

Phương án nào sau đây mô tả đúng về lệnh split() khi không chỉ định kí tự tách?

NB

Phương án nào sau đây mô tả đúng về lệnh join()?

TH

Phương án nào sau đây giải thích đúng về sự khác biệt giữa việc sử dụng lệnh find() và toán tử in?

TH

Phương án nào sau đây giải thích đúng về cách sử dụng lệnh split() với kí tự tách?

VD

Một chương trình cần tách một xâu kí tự thành danh sách các từ dựa trên dấu phẩy. Phương án nào sau đây là phù hợp?

VD

Một chương trình cần nối một danh sách các từ thành một xâu duy nhất với dấu cách làm kí tự nối. Phương án nào sau đây là phù hợp?

NB

Phương án nào sau đây mô tả đúng về việc sử dụng lệnh find() khi không tìm thấy xâu con?

NB

Phương án nào sau đây mô tả đúng về việc sử dụng toán tử in khi tìm thấy xâu con?

TH

Phương án nào sau đây giải thích đúng về cách sử dụng lệnh find() với tham số start?

VD

Một chương trình cần tìm vị trí xuất hiện đầu tiên của từ "Python" trong một xâu kí tự, bắt đầu tìm kiếm từ vị trí thứ 5. Phương án nào sau đây là phù hợp?

Một chương trình xử lý xâu kí tự cần thực hiện các tác vụ sau:
Các phát biểu:

NB Sử dụng lệnh find() để tìm vị trí xuất hiện đầu tiên của một xâu con trong xâu mẹ là đúng hay sai?

NB Sử dụng toán tử in để kiểm tra một xâu có là xâu con của xâu khác là đúng hay sai?

TH Lệnh split() được sử dụng để nối các phần tử của một danh sách thành một xâu là đúng hay sai?

VD Lệnh join() được sử dụng để tách một xâu thành danh sách các từ là đúng hay sai?

Một chương trình cần xử lý dữ liệu từ một danh sách các từ:
Các phát biểu:

NB Lệnh join() có thể nối các phần tử của một danh sách thành một xâu bằng cách sử dụng dấu cách làm kí tự nối là đúng hay sai?

NB Lệnh split() có thể tách một xâu thành danh sách các từ dựa trên dấu phẩy là đúng hay sai?

TH Sử dụng lệnh find() để kiểm tra một xâu có là xâu con của xâu khác là đúng hay sai?

VD Sử dụng toán tử in để tìm vị trí xuất hiện đầu tiên của một xâu con là đúng hay sai?

Một chương trình cần thực hiện các tác vụ liên quan đến xâu kí tự:
Các phát biểu:

NB Lệnh find() trả về vị trí xuất hiện đầu tiên của một xâu con trong xâu mẹ là đúng hay sai?

NB Lệnh split() trả về một danh sách các từ khi tách một xâu là đúng hay sai?

TH Sử dụng lệnh join() để tìm vị trí xuất hiện của một xâu con là đúng hay sai?

VD Sử dụng toán tử in để nối các phần tử của một danh sách thành một xâu là đúng hay sai?

Một chương trình cần xử lý dữ liệu từ một xâu kí tự:
Các phát biểu:

NB Lệnh split() có thể tách một xâu thành danh sách các từ dựa trên dấu cách là đúng hay sai?

NB Lệnh join() có thể nối các phần tử của một danh sách thành một xâu bằng cách sử dụng dấu phẩy làm kí tự nối là đúng hay sai?

TH Sử dụng lệnh find() để kiểm tra một xâu có là xâu con của xâu khác là đúng hay sai?

VD Sử dụng toán tử in để tìm vị trí xuất hiện đầu tiên của một xâu con là đúng hay sai?

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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *