Bài 12. Kiểu xâu

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Nguyễn Ngọc Tuân
Ngày gửi: 16h:39' 07-12-2022
Dung lượng: 920.0 KB
Số lượt tải: 342
Nguồn:
Người gửi: Nguyễn Ngọc Tuân
Ngày gửi: 16h:39' 07-12-2022
Dung lượng: 920.0 KB
Số lượt tải: 342
Số lượt thích:
0 người
Tiết 28-29-30
Bài 12.
DỮ LIỆU KIỂU XÂU
(3 tiết)
I. Dữ liệu kiểu xâu
Xét bài toán nhập vào họ tên của học sinh trong lớp.
Input: ?
Output: ?
Input: dãy các ký tự là họ tên
của học sinh
=> Dữ liệu vào bây giờ không phải là số mà là dãy ký tự.
1. Khái niệm
- Xâu là dãy các kí tự trong bảng mã Unicode và được đặt trong cặp
dấu nháy đơn hoặc dấu nháy kép
- Mỗi kí tự trong xâu được gọi là một phần tử của xâu.
- Số lượng kí tự trong xâu được gọi là độ dài của xâu
- Xâu có độ dài bằng 0 là xâu rỗng
Ví dụ:
- Xâu “Nguyễn Văn A” có độ dài 12
2. Cách tạo một biến kiểu xâu
Cách 1: Dùng lệnh gán.
Ví dụ: s= “Nguyễn Văn Hùng”
Cách 2: Nhập xâu từ bàn phím
= input()
Ví dụ:
s = input(“Nhập vào 1 xâu từ bàn phím)
II. Các thao tác xử lý xâu
1. Các phép toán
a. Phép ghép xâu: kí hiệu là dấu + dùng để ghép nhiều xâu thành 1
xâu.
Ví dụ: “Hà”+ “Nội” => “HàNội”
b. Phép nhân xâu: kí hiệu là dấu *
Ví dụ: “Tin học” * 3 => “Tin họcTin họcTin học”
1. Các phép toán
c. Phép so sánh: ==, != (khác), <, >,<=, >= được thực hiện theo quy tắc:
• Xâu A > xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái
sang phải trong xâu A có mã Unicode lớn hơn.
Ví dụ: “Toán học” > “Tin học”
• Xâu A > B nếu xâu B là phần đầu của xâu A.
Ví dụ: “Tin học” > “Tin”
• Hai xâu bằng nhau nếu chúng giống hoàn toàn
1. Các phép toán
d)
Phép toán in: cho biết xâu thứ nhất có xuất hiện trong xâu thứ
2 hay không? Có thì trả về kết quả là True, ngược lại là False
Ví dụ:
“học” in “Tin học” =>True
“TIN” in “Tin học” =>False
2. Chỉ số và các thao tác với chỉ số trong xâu
a. Các kí tự trong xâu được đánh chỉ số từ trái qua phải và
bắt đầu từ 0 đến độ dài xâu - 1
S = “Nguyễn Văn Hùng”
N
0
g
1
u
2
y
3
ễ
4
n
5
6
V
7
ă
8
n
9
H ù n g
10 11 12 13 14
2. Chỉ số và các thao tác với chỉ số trong xâu
b. Tham chiếu tới phần tử xâu:
[chỉ số]
S = “Nguyễn Văn Hùng”
N
g
u
y
ễ
n
0
1
2
3
4
5
S[1] ="g"
6
V
ă
n
7
8
9 10 11 12 13 14
S[7] ="V"
H
ù
n
g
2. Chỉ số và các thao tác với chỉ số trong xâu
c. Sao chép xâu:
[:]
Tạo ra một xâu mới là đoạn con của xâu gốc từ đến
- 1
N
g
u
y
ễ
n
0
1
2
3
4
5
S = "Nguyễn Văn Hùng"
P = S[7:10] => P= "Văn"
6
V
ă
n
H
ù
n
g
7
8
9 10 11 12 13 14
3. Một số hàm và phương thức làm việc với xâu
a. Hàm len(): trả về độ dài xâu
S="Tin học"
L=len(S) => 7
b. Hàm str(): chuyển đổi dữ liệu ở dạng số sang dạng xâu
str(25) => “25”
str(3.14) => “3.14”
c. Hàm int(), float(): chuyển đổi dữ liệu ở dạng xâu sang dạng số
nguyên hay số thực tương ứng.
int("15") =>15
float("12.34") => 12.34
3. Một số hàm và phương thức làm việc với xâu
d) Phương thức lower(): chuyển các ký tự của xâu gốc thành các ký tự thường
Ví dụ:
s=“ABC”
p=s.lower()
print(p)
=> p= “abc”
e) Phương thức upper(): chuyển các ký tự của xâu gốc thành in hoa
s=“abc”
p=s.upper()
print(p)
=> p= “ABC”
3. Một số hàm và phương thức làm việc với xâu
f) Phương thức split(): tách xâu gốc thành các xâu con cách nhau bởi dấu
cách
s=“Tin học”
print(s.split()) => 2 xâu con nhận được là ['Tin', 'học']
* Phương thức split(char): tách xâu gốc thành các xâu con cách nhau bởi ký
tự char, và lưu các xâu con vào list.
Ví dụ:
st="Tin-học-lớp-11"
list1=st.split("-")
=> list1= ['Tin', 'học', 'lớp', '11']
3. Một số hàm và phương thức làm việc với xâu
g) Phương thức count(st,vt1,vt2): trả về số lần xuất hiện xâu con st
trong khoảng từ vị trí vt1 tới vị trí vt2.
Ví dụ:
s="Tin-học-python"
v=s.count("n",0,5)
v2=s.count("n")
=> v= 1
=> v2=2
* Nếu không có tham số vt1 và vt2 thì mặc định vt1=0,
vt2=độ dài xâu gốc
3. Một số hàm và phương thức làm việc với xâu
h) Phương thức strip(char): trả về một bản sao của chuỗi ban đầu,
trong đó xoá tất cả ký tự char ở đầu và cuối chuỗi.
Ví dụ:
s="nam-cũng-thích-python"
p=s.strip("n")
=> p="am-cũng-thích-pytho"
+ Phương thức lstrip(char): … xoá tất cả ký tự char ở đầu chuỗi
+ Phương thức rstrip(char): … xoá tất cả ký tự char ở cuối chuỗi
3. Một số hàm và phương thức làm việc với xâu
i) Phương thức find(st): trả về vị trí của xâu st đầu tiên trong xâu gốc,
nếu st không có trong xâu gốc thì vị trí là -1
Ví dụ:
s="nam-thích-python"
vt=s.find("h")
=> vt=5
vt2=s.find("b")
=> vt2= -1
3. Một số hàm và phương thức làm việc với xâu
j) Phương thức replace(, ): trả về một bản sao của xâu ban
đầu sau khi đã thay thế các xâu con cũ bằng xâu con mới.
Ví dụ:
s="nam-thích-python"
p=s.replace("thích","học")
print(p) => p= "nam-học-python"
4. Một số bài tập
BT1. Viết chương trình nhập một câu thơ st từ bàn phím
a. Đưa ra màn hình độ dài của câu thơ vừa nhập
b. Đưa ra màn hình số từ trong câu thơ
c. Đưa ra màn hình vị trí của xâu "hà" đầu tiên có trong câu thơ
d. Thay thế tất cả các xâu "hà" thành xâu "hoà"
e. Đưa ra màn hình câu thơ ở dạng in hoa.
Kiểm tra 15 phút:
Viết chương trình nhập một xâu st từ bàn phím.
- Đưa ra màn hình độ dài xâu st vừa nhập.
- Viết xâu đó ra màn hình theo chiều dọc.
Ví dụ:
Nhập vào:
HaNoi
Đưa ra màn hình:
Độ dài xâu vừa nhập: 5
H
a
N
o
i
BÀI TẬP
Bài 1: Viết chương trình nhập vào 12 số nguyên dương là số tiền điện của 12 tháng
trong năm vừa qua của nhà em.
- Tính và đưa ra màn hình tổng số tiền điện trong năm qua của nhà em.
- Tính và đưa ra màn hình trung bình số tiền điện hàng tháng nhà em phải trả. (tbn)
- Đưa ra màn hình các tháng có số tiền điện lớn hơn số tiền trung bình năm (tbn).
Bài 2
Cho biết chương trình sau thực hiện công việc gì?
Bài 4
Tên tệp thường gồm hai phần: phần tên và phần mở
rộng, ngăn cách nhau bởi dấu chấm (.). Các file mã
nguồn của Python có phần mở rộng là “py”. Em hãy
viết chương trình nhập vào một xâu là một tên tệp và
kiểm tra xem tên tệp đó có phải là tên tệp của file mã
nguồn của Python không? Nếu có ghi ra “YES”, ngược
lại ghi ra “NO”
Ví dụ: “checkName.py”, “Hello.py” là tên tệp của file
mã
nguồn
của
Python,
“introPython.doc”,
“studentList.xls” thì không phải
Input
Output
checkName.py
YES
Hello.py
YES
introPython.doc
NO
studentList.xls
NO
Bài 5
Một nhà mạng quy định độ dài của một tin nhắn cơ sở là 70
kí tự và có giá cước là 300 VND. Em hãy viết một chương
trình nhập vào một xâu là một tin nhắn gồm các kí tự mà em
muốn gửi bạn và cho biết tin nhắn đó khi gửi đi sẽ mất phí là
bao nhiêu?
Cách 1: Cách hiểu như sau
• Nếu 1 tin nhắn có độ dài tối đa 70 hết 300 VND
• Nếu tin nhắn dài 75 kí tự ta có 2 tin hết 600 VND
• Vậy có chương trình như sau
s=input("Mời bạn nhập tin nhắn:")
du=0
if len(s)%7!=0:
du=1
sotin=len(s)//7 + du
print("Phí tin nhắn là:",sotin*300)
Cách 2: Cách hiểu như sau
• Nếu 1 tin nhắn có độ dài tối đa 70 hết 300 VND
• Nếu tin nhắn dài 75 kí tự ta có 2 tin hết số tiền là:
(75//70)*300+(75%70)*300/70
• Vậy có chương trình như sau
Bài 12.
DỮ LIỆU KIỂU XÂU
(3 tiết)
I. Dữ liệu kiểu xâu
Xét bài toán nhập vào họ tên của học sinh trong lớp.
Input: ?
Output: ?
Input: dãy các ký tự là họ tên
của học sinh
=> Dữ liệu vào bây giờ không phải là số mà là dãy ký tự.
1. Khái niệm
- Xâu là dãy các kí tự trong bảng mã Unicode và được đặt trong cặp
dấu nháy đơn hoặc dấu nháy kép
- Mỗi kí tự trong xâu được gọi là một phần tử của xâu.
- Số lượng kí tự trong xâu được gọi là độ dài của xâu
- Xâu có độ dài bằng 0 là xâu rỗng
Ví dụ:
- Xâu “Nguyễn Văn A” có độ dài 12
2. Cách tạo một biến kiểu xâu
Cách 1: Dùng lệnh gán.
Ví dụ: s= “Nguyễn Văn Hùng”
Cách 2: Nhập xâu từ bàn phím
Ví dụ:
s = input(“Nhập vào 1 xâu từ bàn phím)
II. Các thao tác xử lý xâu
1. Các phép toán
a. Phép ghép xâu: kí hiệu là dấu + dùng để ghép nhiều xâu thành 1
xâu.
Ví dụ: “Hà”+ “Nội” => “HàNội”
b. Phép nhân xâu: kí hiệu là dấu *
Ví dụ: “Tin học” * 3 => “Tin họcTin họcTin học”
1. Các phép toán
c. Phép so sánh: ==, != (khác), <, >,<=, >= được thực hiện theo quy tắc:
• Xâu A > xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái
sang phải trong xâu A có mã Unicode lớn hơn.
Ví dụ: “Toán học” > “Tin học”
• Xâu A > B nếu xâu B là phần đầu của xâu A.
Ví dụ: “Tin học” > “Tin”
• Hai xâu bằng nhau nếu chúng giống hoàn toàn
1. Các phép toán
d)
Phép toán in: cho biết xâu thứ nhất có xuất hiện trong xâu thứ
2 hay không? Có thì trả về kết quả là True, ngược lại là False
Ví dụ:
“học” in “Tin học” =>True
“TIN” in “Tin học” =>False
2. Chỉ số và các thao tác với chỉ số trong xâu
a. Các kí tự trong xâu được đánh chỉ số từ trái qua phải và
bắt đầu từ 0 đến độ dài xâu - 1
S = “Nguyễn Văn Hùng”
N
0
g
1
u
2
y
3
ễ
4
n
5
6
V
7
ă
8
n
9
H ù n g
10 11 12 13 14
2. Chỉ số và các thao tác với chỉ số trong xâu
b. Tham chiếu tới phần tử xâu:
S = “Nguyễn Văn Hùng”
N
g
u
y
ễ
n
0
1
2
3
4
5
S[1] ="g"
6
V
ă
n
7
8
9 10 11 12 13 14
S[7] ="V"
H
ù
n
g
2. Chỉ số và các thao tác với chỉ số trong xâu
c. Sao chép xâu:
Tạo ra một xâu mới là đoạn con của xâu gốc từ
N
g
u
y
ễ
n
0
1
2
3
4
5
S = "Nguyễn Văn Hùng"
P = S[7:10] => P= "Văn"
6
V
ă
n
H
ù
n
g
7
8
9 10 11 12 13 14
3. Một số hàm và phương thức làm việc với xâu
a. Hàm len(): trả về độ dài xâu
S="Tin học"
L=len(S) => 7
b. Hàm str(): chuyển đổi dữ liệu ở dạng số sang dạng xâu
str(25) => “25”
str(3.14) => “3.14”
c. Hàm int(), float(): chuyển đổi dữ liệu ở dạng xâu sang dạng số
nguyên hay số thực tương ứng.
int("15") =>15
float("12.34") => 12.34
3. Một số hàm và phương thức làm việc với xâu
d) Phương thức lower(): chuyển các ký tự của xâu gốc thành các ký tự thường
Ví dụ:
s=“ABC”
p=s.lower()
print(p)
=> p= “abc”
e) Phương thức upper(): chuyển các ký tự của xâu gốc thành in hoa
s=“abc”
p=s.upper()
print(p)
=> p= “ABC”
3. Một số hàm và phương thức làm việc với xâu
f) Phương thức split(): tách xâu gốc thành các xâu con cách nhau bởi dấu
cách
s=“Tin học”
print(s.split()) => 2 xâu con nhận được là ['Tin', 'học']
* Phương thức split(char): tách xâu gốc thành các xâu con cách nhau bởi ký
tự char, và lưu các xâu con vào list.
Ví dụ:
st="Tin-học-lớp-11"
list1=st.split("-")
=> list1= ['Tin', 'học', 'lớp', '11']
3. Một số hàm và phương thức làm việc với xâu
g) Phương thức count(st,vt1,vt2): trả về số lần xuất hiện xâu con st
trong khoảng từ vị trí vt1 tới vị trí vt2.
Ví dụ:
s="Tin-học-python"
v=s.count("n",0,5)
v2=s.count("n")
=> v= 1
=> v2=2
* Nếu không có tham số vt1 và vt2 thì mặc định vt1=0,
vt2=độ dài xâu gốc
3. Một số hàm và phương thức làm việc với xâu
h) Phương thức strip(char): trả về một bản sao của chuỗi ban đầu,
trong đó xoá tất cả ký tự char ở đầu và cuối chuỗi.
Ví dụ:
s="nam-cũng-thích-python"
p=s.strip("n")
=> p="am-cũng-thích-pytho"
+ Phương thức lstrip(char): … xoá tất cả ký tự char ở đầu chuỗi
+ Phương thức rstrip(char): … xoá tất cả ký tự char ở cuối chuỗi
3. Một số hàm và phương thức làm việc với xâu
i) Phương thức find(st): trả về vị trí của xâu st đầu tiên trong xâu gốc,
nếu st không có trong xâu gốc thì vị trí là -1
Ví dụ:
s="nam-thích-python"
vt=s.find("h")
=> vt=5
vt2=s.find("b")
=> vt2= -1
3. Một số hàm và phương thức làm việc với xâu
j) Phương thức replace(
đầu sau khi đã thay thế các xâu con cũ bằng xâu con mới.
Ví dụ:
s="nam-thích-python"
p=s.replace("thích","học")
print(p) => p= "nam-học-python"
4. Một số bài tập
BT1. Viết chương trình nhập một câu thơ st từ bàn phím
a. Đưa ra màn hình độ dài của câu thơ vừa nhập
b. Đưa ra màn hình số từ trong câu thơ
c. Đưa ra màn hình vị trí của xâu "hà" đầu tiên có trong câu thơ
d. Thay thế tất cả các xâu "hà" thành xâu "hoà"
e. Đưa ra màn hình câu thơ ở dạng in hoa.
Kiểm tra 15 phút:
Viết chương trình nhập một xâu st từ bàn phím.
- Đưa ra màn hình độ dài xâu st vừa nhập.
- Viết xâu đó ra màn hình theo chiều dọc.
Ví dụ:
Nhập vào:
HaNoi
Đưa ra màn hình:
Độ dài xâu vừa nhập: 5
H
a
N
o
i
BÀI TẬP
Bài 1: Viết chương trình nhập vào 12 số nguyên dương là số tiền điện của 12 tháng
trong năm vừa qua của nhà em.
- Tính và đưa ra màn hình tổng số tiền điện trong năm qua của nhà em.
- Tính và đưa ra màn hình trung bình số tiền điện hàng tháng nhà em phải trả. (tbn)
- Đưa ra màn hình các tháng có số tiền điện lớn hơn số tiền trung bình năm (tbn).
Bài 2
Cho biết chương trình sau thực hiện công việc gì?
Bài 4
Tên tệp thường gồm hai phần: phần tên và phần mở
rộng, ngăn cách nhau bởi dấu chấm (.). Các file mã
nguồn của Python có phần mở rộng là “py”. Em hãy
viết chương trình nhập vào một xâu là một tên tệp và
kiểm tra xem tên tệp đó có phải là tên tệp của file mã
nguồn của Python không? Nếu có ghi ra “YES”, ngược
lại ghi ra “NO”
Ví dụ: “checkName.py”, “Hello.py” là tên tệp của file
mã
nguồn
của
Python,
“introPython.doc”,
“studentList.xls” thì không phải
Input
Output
checkName.py
YES
Hello.py
YES
introPython.doc
NO
studentList.xls
NO
Bài 5
Một nhà mạng quy định độ dài của một tin nhắn cơ sở là 70
kí tự và có giá cước là 300 VND. Em hãy viết một chương
trình nhập vào một xâu là một tin nhắn gồm các kí tự mà em
muốn gửi bạn và cho biết tin nhắn đó khi gửi đi sẽ mất phí là
bao nhiêu?
Cách 1: Cách hiểu như sau
• Nếu 1 tin nhắn có độ dài tối đa 70 hết 300 VND
• Nếu tin nhắn dài 75 kí tự ta có 2 tin hết 600 VND
• Vậy có chương trình như sau
s=input("Mời bạn nhập tin nhắn:")
du=0
if len(s)%7!=0:
du=1
sotin=len(s)//7 + du
print("Phí tin nhắn là:",sotin*300)
Cách 2: Cách hiểu như sau
• Nếu 1 tin nhắn có độ dài tối đa 70 hết 300 VND
• Nếu tin nhắn dài 75 kí tự ta có 2 tin hết số tiền là:
(75//70)*300+(75%70)*300/70
• Vậy có chương trình như sau
 







Các ý kiến mới nhất