Professional Documents
Culture Documents
Slide Cơ Sở Lập Trình - Python (Update)
Slide Cơ Sở Lập Trình - Python (Update)
CƠ SỞ LẬP TRÌNH
CHƯƠNG 0.
2
TÀI LIỆU THAM KHẢO
FaceGroup của môn học:
https://www.facebook.com/groups/oopmisdue
Link video tham khảo:
1. HowKteam:
https://www.youtube.com/playlist?list=PL33l
vabfss1zRgaWBcC__Bnt5AOSRfU71
2. s
3
PHẦN MỀM HỖ TRỢ HỌC TẬP
4
HÌNH THỨC ĐÁNH GIÁ
5
YÊU CẦU CHUNG ĐỐI VỚI SINH VIÊN
• Để môn học đạt hiệu quả cao nhất, sinh
viên nên mang theo laptop lên lớp để học;
• Tham gia đầy đủ các buổi học;
• Đọc bài giảng và tài liệu tham khảo trước
khi lên lớp;
• Tham gia làm bài tập cá nhân và nộp bài
chấm nhanh trên lớp;
• Làm đầy đủ các bài tập kết thúc chương
sau mỗi buỗi học.
6
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 1.
2/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Vì sao máy tính có năng lực mạnh mẽ …?
PHẦN
CỨNG
+
PHẦN
MỀM
3/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Các ứng dụng minh họa trí thông minh của máy tính:
Robot di chuyển hàng hóa trong kho hàng của
Amazon
Robot đánh bóng bàn
Cuộc thi MicroMouse
…
4/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Ngôn ngữ
Thuật toán
lập trình
5/25
CÁC KHÁI NIỆM
Thuật toán (Giải thuật)
Là một dãy hữu hạn các thao tác được sắp
xếp theo một trình tự xác định, sao cho từ
dữ liệu đầu vào (Input) của bài toán, ta
nhận được kết quả đầu ra (Output) cần tìm.
6/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Thuật toán (Giải thuật)
Ví dụ 1: xây dựng thuật toán giải và biện
luận phương trình bậc nhất ax + b=0
Input: a và b
Output: nghiệm của phương trình
Thuật toán:
o Nếu a ≠ 0: pt có nghiệm x = -b/a
o Ngược lại, a = 0:
- Nếu b = 0: pt có vô số nghiệm
- Nếu b ≠ 0: pt vô nghiệm
7/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Thuật toán (Giải thuật)
Ví dụ 2: xây dựng thuật toán tìm số có giá
trị lớn nhất trong 3 số a, b, c bất kỳ
Input: a, b và c
Output: giá trị lớn nhất
Thuật toán: tìm số lớn nhất
o Bước 1: max=a
o Bước 2: nếu max<b thì đặt max=b
o Bước 3: nếu max<c thì đặt max=c
o Bước 4: kết luận max là giá trị lớn nhất
8/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Ngôn ngữ lập trình
Là một tập các chỉ thị được sắp xếp theo
một trật tự nhất định, nhằm hướng dẫn
máy tính thực hiện các hành động cần thiết
để đáp ứng một mục tiêu đã định trước của
con người như truy xuất dữ liệu, tìm kiếm,
giải bài toán,...
9/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
Theo PCWorldVN
Các ngôn ngữ lập trình
10/25
Phổ biến nhất 2019 (video)
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Lập trình
Là việc cài đặt một hoặc nhiều thuật toán
có liên quan với nhau bằng một ngôn ngữ
lập trình để tạo ra một chương trình trên
máy tính
11/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Lập trình
Ví dụ 1.1: Chương trình tìm số lớn nhất trong 3 số
12/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Các kỹ thuật lập trình
Lập trình hướng cấu trúc (thủ tục/chức năng)
- Là phương pháp chia một chương trình lớn
thành các khối chức năng (Hàm/Thủ tục) nhỏ,
để dễ lập trình và kiểm tra.
13/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Các kỹ thuật lập trình
Lập trình hướng đối tượng
- Chương trình được chia thành các Đối tượng
(Object) độc lập;
- Mỗi Đối tượng sẽ quản lý riêng Phương thức
(Chức năng) và Thuộc tính (Dữ liệu) của riêng nó;
- Các Đối tượng sẽ trao đổi thông tin với nhau
thông qua các Phương thức
14/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
15/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Bài toán quản lý giao dịch Ngân hàng
Khách hàng có các giao dịch với Ngân hàng
- Nạp tiền vào Tài khoản
- Rút tiền từ Tài khoản
- Chuyển khoản giữa các Tài khoản
16/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC KHÁI NIỆM
Lập trình hướng CHỨC NĂNG Lập trình hướng ĐỐI TƯỢNG
17/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC BƯỚC XÂY DỰNG CHƯƠNG TRÌNH
Biểu diễn bằng:
Xác định bài toán • Ngôn ngữ tự nhiên
• Lưu đồ - Sơ đồ khối
Lựa chọn • Ngôn ngữ lập trình
phương pháp giải
Xây dựng
thuật toán/ thuật giải
Viết
chương trình
Lỗi cú pháp Hiệu chỉnh
Lỗi ngữ nghĩa chương trình
Thực hiện
chương trình
18/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NGÔN NGỮ LẬP TRÌNH PYTHON
Các bước để xây dựng chương trình
19/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NGÔN NGỮ LẬP TRÌNH PYTHON
Tổng quan về Python
Là một ngôn ngữ lập trình bậc cao,
do Guido van Rossum sang lập
năm 1991;
Có hình thức sáng sủa, cấu trúc rõ
ràng, dễ đọc, dễ học và dễ nhớ,
thuận tiện cho người mới học lập
trình;
Cho phép người sử dụng viết mã
lệnh với số lần gõ phím tối thiểu;
Thư viện phong phú, có cộng đồng
lớn. Guido van Rossum,
nhà sáng lập ngôn
ngữ Python.
(Theo Wikipedia)
20/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NGÔN NGỮ LẬP TRÌNH PYTHON
Vì sao nên học Python?
Là ngôn ngữ lập trình phổ biến nhất (2019)
Hỗ trợ nhiều môi trường ứng dụng:
‐ Ứng dụng Web
‐ Ứng dụng Desktop
‐ Ứng dụng Game
‐ AI và Machine Learning
‐ DataScience
‐ …
21/25
Hình: nguồn Coding Bytes
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NGÔN NGỮ LẬP TRÌNH PYTHON
Danh mục từ khóa
22/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIÊN TẬP MÃ NGUỒN PYTHON
Trình biên tập mã nguồn Python
Visual Studio Code
Pycharm
Jupyter Notebooks
Notepad++
Sublime Text
Python Shell Python Shell
23/25
Jupyter Notebooks
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIÊN TẬP MÃ NGUỒN PYTHON
VSCode
Visual Studio Code
Tải phần mềm:
https://code.visualstudio.com/Download
Python
Tải bộ cài:
https://www.python.org/downloads
24/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP KẾT THÚC CHƯƠNG
Bài 1.1. Cài đặt trên máy tính phần mềm VSCode
Bài 1.2. Tìm hiểu môi trường làm việc của VSCode
Bài 1.3. Tạo project, nhập code thử chạy và kiểm tra kết quả hai
ví dụ tại:
- Bài 1: Ví dụ1.1, Slide 12 Chương 1
- Bài 2: Slide 23 Chương 2
Bài 1.4. Đọc tài liệu đọc them và xem video tham khảo
25/25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 2.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIỂU THỨC
Toán tử toán học
Độ ưu tiên từ cao đến thấp
Toán tử Ý nghĩa Ví dụ Kết quả
** Bình phương 2 ** 3 8
% Chia lấy dư 5%2 1
// Chia lấy nguyên 5 // 2 2
/ Chia 5/2 2.5
* Nhân 5*3 15
- Trừ 5-2 3
+ Cộng 2+2 4
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIỂU THỨC
Độ ưu tiên toán tử toán học trong biểu thức
Là trình tự xử lý của máy tính khi có đồng thời
nhiều toán tử trong một biểu thức.
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GIÁ TRỊ VÀ KIỂU DỮ LIỆU
Giá trị (value): là những dữ liệu cơ bản mà máy tính
có thể tiếp nhận để xử lý như: một số, một chuỗi
ký tự,…;
Kiểu dữ liệu (type): là kiểu của dữ liệu được đưa
vào máy tính, hoặc kiểu (phương pháp) tổ chức các
tập dữ liệu trên máy tính;
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GIÁ TRỊ VÀ KIỂU DỮ LIỆU
Các kiểu dữ liệu trong Python
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GIÁ TRỊ VÀ KIỂU DỮ LIỆU
Kiểu dữ liệu (type):
Chuỗi được đặt trong cặp dấu “ “ hoặc ‘ ‘
Phép nối chuỗi: + (dấu cộng)
Phép nhân bản chuỗi: * (dấu nhân)
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
Biến là một đại lượng mang giá trị và có thể thay
đổi trong quá trình xử lý của chương trình;
Một biến được sử dụng để lưu trữ dữ liệu trong
một chương trình, và được khai báo với một kiểu
dữ liệu nhất định;
Ví dụ:
- Tuoi (tuổi) của một sinh viên
- DiaChi (địa chỉ) của một khách hàng
- TienLuong (tiền lương) của một nhân viên, …
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
Một biến sẽ có một tên và có thể chứa một giá trị;
Phép gán: = (dấu bằng)
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
10
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
11
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
Ví dụ: sử dụng biến trong bài toán hoán vị.
- Trình bày phương pháp hoán vị nước giữa hai ly A và B,
sử dụng ly trung gian C
ĐỎ XANH
A B C
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BIẾN (VARIABLE)
Khái niệm về biến:
Ví dụ: sử dụng biến trong bài toán hoán vị 3 số
nguyên.
Đã hoán vị được
giá trị của a và b
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỊNH DANH
Quy tắc đặt tên các định danh (identifier)
Tên của một định danh (biến, hàm, lớp,…) là chuỗi
gồm các ký tự: chữ cái (chữ hoa hoặc chữ
thường), chữ số và dấu gạch chân (_);
Tên không được bắt đầu bằng chữ số;
Tên trong python có phân biệt chữ HOA và chữ
thường
- spam, SPAM, Spam, sPaM: là những tên khác nhau;
Không được sử dụng từ khóa của python để đặt
tên;
Trong Python, thường bắt đầu với ký tự thường và
dùng những tên có ý nghĩa và dễ phân biệt;
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỊNH DANH
Quy tắc đặt tên các định danh (identifier)
15
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỊNH DANH
Quy tắc đặt tên cho các định danh
Ví dụ: xác định tên đúng/ sai trong các trường hợp
TT Tên biến Đúng/Sai ?
1 Employee
2 Else
3 _Name
4 Emp_Name
5 @goto
6 def
7 4myclass
8 Student&Class
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Hàm print()
Cú pháp: print(<chuỗi/ biến / biểu thức>)
Ý nghĩa: in lên màn hình giá trị một chuỗi, biến
hoặc biểu thức;
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Hàm print()
Viết không xuống dòng
print( <chuỗi/ biến / biểu thức>, end=<string> )
a=10
b=20
a=a+b
print(a) 30
print(b) 20
a=10
b=20
a=a+b
print(a, end=“ ")
30 20
print(b)
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Hàm print()
Viết không xuống dòng
print( <chuỗi/ biến / biểu thức>, sep=<string> )
a=10
print(“a=“,a) a= 10
a=10
print(“a=“,a,sep=“”) a=10
a=10
b=15
print(“a=“,a,”b=“,b,sep=“|”) a=10|b=15
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Hàm input()
Cú pháp: <Biến> = input([<Chuỗi thông báo>])
Ý nghĩa: chờ nhập từ bàn phím một chuỗi ký tự,
kết thúc nhập bằng phím enter. Giá trị được nhập
sẽ được gán vào <Biến>;
20
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Hàm len()
Cú pháp: len(<chuỗi>)
Ý nghĩa: tính và trả về chiều dài của <chuỗi>;
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Các hàm chuyển kiểu dữ liệu
str(<value>): chuyển <value> thành chuỗi;
int(< value >): chuyển <value> thành số nguyên;
float(< value >): chuyển <value> thành số thực;
22
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Các hàm chuyển kiểu dữ liệu
Hàm int() còn dùng để lấy phần nguyên của một số thực
23
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
24
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Ví dụ: viết chương trình python cho phép nhập
vào 2 số nguyên a và b, in lên màn hình tổng của 2
số đó.
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC HÀM NHẬP, XUẤT DỮ LIỆU CƠ BẢN
Lời chú thích
- Cú pháp: #<văn bản>
- Ý nghĩa: chuyển nội dung <văn bản> thành lời chú
thích/ ghi chú.
26
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Câu 2.1. Viết chương trình thực hiện yêu cầu sau:
Nhập từ bàn phím Họ tên và Tuổi của bạn
In lên màn hình câu thông báo theo mẫu:
27
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Câu 2.2. Viết chương trình tính và in lên màn hình giá bán của
các mặt hàng với công thức sau:
Giá bán = Giá niêm yết - Chiết khấu + VAT
Trong đó:
- Nhập từ bàn phím Giá niêm yết, Chiết khấu
- VAT= (Giá niêm yết – Chiết khấu)*0.01
28
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Câu 2.3. Viết chương trình để tính và in lên màn hình Tiền lãnh
cuối kỳ tiết kiệm tại ngân hàng, như sau:
- Tiền vốn đầu tư ban đầu là P đồng;
- Lãi suất tiền gửi mỗi tháng là r, được lãnh vào cuối kỳ;
- Sau n tháng, số tiền thu về cả vốn và lãi là:
Tiền lãnh cuối kỳ = P*(1+ r*n)
Trong đó:
- P, r và n được nhập từ bàn phím
29
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Câu 2.4. Viết chương trình tính và in lên màn hình diện tích của
một tam giác theo độ dài của các cạnh, theo công thức:
Diện tích =
Trong đó:
- a, b và c là độ dài của 3 cạnh tam giác, được nhập từ bàn
phím;
- S=(a+b+c)/2
Gợi ý: Sử dụng lệnh import math để khai báo thư viện math.
Lệnh math.sqrt(X) để tính căn bậc hai của một số X bất kỳ.
30
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 3.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
Nguồn: Automate the Boring Stuff with Python
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GIÁ TRỊ KIỂU BOOLEAN
Giá trị Boolean (Logic):
True: giá trị đúng
False: giá trị sai
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TOÁN TỬ SO SÁNH
Toán tử so sánh cho phép so sánh hai giá trị/
biến/ biểu thức. Kết quả trả về True hoặc False.
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TOÁN TỬ SO SÁNH
Ví dụ 3.1-1:
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TOÁN TỬ LOGIC
and, or, not
Được dụng để kết hợp các giá trị/biến/biểu thức
kiểu logic.
and True False or True False
True True False True True True
False False False False True False
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TOÁN TỬ LOGIC
AND, OR, NOT
Ví dụ 3.1-2:
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TOÁN TỬ LOGIC
Kết hợp giữa toán tử logic với toán tử so sánh
Ví dụ 3.1-3:
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 1
Cú pháp
if <Biểu thức Logic>:
//Lệnh hoặc khối lệnh
false
10
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 1
Ví dụ 3.1-4:
11
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 1
Ví dụ 3.1-5: viết chương trình giải bài toán theo sơ
đồ khối sau
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 2
Cú pháp
if <Biểu thức Logic>:
//Lệnh hoặc khối lệnh 1
else:
//Lệnh hoặc khối lệnh 2
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 2
Ví dụ 3.1-6: viết chương trình giải bài toán theo sơ
đồ khối sau
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 2
Ví dụ 3.1-7: viết chương trình giải bài toán theo sơ
đồ khối sau
15
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Cú pháp
if <Biểu thức Logic 1>:
//Lệnh hoặc khối lệnh 1
elif <Biểu thức Logic 2>:
//Lệnh hoặc khối lệnh 2
...
elif <Biểu thức Logic n-1>:
//Lệnh hoặc khối lệnh n-1
[else:
//Lệnh hoặc khối lệnh n
]
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Cú pháp
false
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Ví dụ 3.1-8: viết chương trình giải bài toán theo sơ
đồ khối sau
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Ví dụ 3.1-9: viết chương trình giải bài toán theo sơ
đồ khối sau
0:
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Ví dụ 3.1-10: viết chương trình giải bài toán theo sơ
đồ khối sau
20
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
Ví dụ 3.1-11:
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – DẠNG 3
Ví dụ 3. 1-11: viết chương trình giải bài toán theo
sơ đồ khối sau
22
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SỰ LỒNG NHAU CỦA CÁC CẤU TRÚC ĐIỀU KIỆN
Cú pháp
if <Biểu thức Logic 1>:
…
if <Biểu thức Logic 2>:
…
if (<Biểu thức Logic 3>):
…
elif:
…
else:
…
…
…
23
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SỰ LỒNG NHAU CỦA CÁC CẤU TRÚC ĐIỀU KIỆN
Cú pháp
true
<Lệnh/Khối lệnh>
24
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SỰ LỒNG NHAU CỦA CÁC CẤU TRÚC ĐIỀU KIỆN
Ví dụ 3.1-12: viết chương trình giải bài toán
theo sơ đồ khối sau
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SỰ LỒNG NHAU CỦA CÁC CẤU TRÚC ĐIỀU KIỆN
Ví dụ 3.1-12:
26
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP VÍ DỤ
Ví dụ 3.1-13: Tìm số lớn nhất giữa hai số a và b
Cách 1:
27
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP VÍ DỤ
Ví dụ 3.1-13: Tìm số lớn nhất giữa hai số a và b
Cách 2:
28
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP VÍ DỤ
Ví dụ 3.1-13: Tìm số lớn nhất giữa hai số a và b
Cách 3:
29
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP VÍ DỤ
Ví dụ 3.1-14: Giải phương trình bật nhất: ax + b =0
30
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP VÍ DỤ
Ví dụ 3.1-15: Giải và biện luận phương trình bậc
hai: ax2 + bx + c = 0
31
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP ÔN TẬP
Viết chương trình sử dụng cấu trúc IF:
Câu 3.1. Nhập 3 số thực từ bàn phím, in lên màn
hình số lớn nhất và bé nhất trong 3 số trên.
Ví dụ:
a=5
b=4.5
c=7
SLN=7
SBN=4.5
32
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP ÔN TẬP
Viết chương trình sử dụng cấu trúc IF:
Câu 3.2. Một hãng máy tính có chính sách khuyến
mại, cứ mua từ 5 máy trở lên thì giá một máy sẽ là
450$ còn không thì giá một máy sẽ là 500$. Viết
chương trình yêu cầu người dùng nhập vào số máy
muốn mua, sau đó in ra màn hình số tiền người đó
phải trả cho hãng.
Ví dụ:
So may=10 So may=4 So may=0
So tien=4500 So tien=2000 So tien=0
33
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC ĐIỀU KIỆN IF – BÀI TẬP ÔN TẬP
Viết chương trình sử dụng cấu trúc IF:
Câu 3.3. Nhập vào số KW điện tiêu thụ của một hộ
gia đình, sau đó in lên màn hình số tiền mà hộ gia
đình đó phải trả biết rằng cách tính tiền điện như
sau:
- Từ KW 1 đến KW thứ 100: giá 550 đ/1KW
- Từ KW 101 đến KW thứ 150: giá 750 đ/1KW
- Từ KW 151 đến KW thứ 200: giá 950 đ/1KW
- Từ KW 201 trở đi: giá 1350 đ/1KW
- Thuế VAT là 10%.
Thành tiền = Số KW tiêu thụ * Đơn giá + VAT
Ví dụ:
Tieu thu=110 Tieu thu=170
Phai tra=68750 Phai tra=122650
34
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 3.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC LẶP
Đặc điểm chung
Được sử dụng để giải các bài toán có tính chất lặp
lại nhiều lần một hoặc một khối công việc nào đó;
Số lần lặp có thể biết trước hoặc cho đến khi thỏa
mãn một biểu thức Logic nào đó;
Trong Python, có 2 loại cấu trúc lặp:
- while
- for
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Cú pháp
<Biểu thức
while <Biểu thức Logic>: Logic>?
<Lệnh/Khối lệnh> false
true
<Lệnh/Khối lệnh>
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-1:
Nguồn: Automate the Boring Stuff with Python
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-2:
Nguồn: Automate the Boring Stuff with Python
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-3: in các số từ 1 đến 10, mỗi số nằm trên một
dòng. Yêu cầu sử dụng cấu trúc while.
1
i=1 2
while i<=10: 3
print(i) 4
i=i+1 5
6
7
8
9
10
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-4: in các số chẵn trong dãy các số từ 1 đến 10, mỗi
số nằm trên một dòng. Yêu cầu sử dụng cấu trúc while.
num=1
while num<=11:
if num%2==0:
print(num)
num=num+1
2
4
6
8
10
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-5: Nhập từ bàn phím một số nguyên n (n>=1); in
lên màn hình tổng của n số nguyên dương đầu tiên (các số
liên tục từ 1 đến n): S=1+2+3+ … + n
Yêu cầu sử dụng cấu trúc while.
print("Tong S=",S)
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-6: in lên màn hình 6 dòng, có nội dung như sau.
Yêu cầu sử dụng cấu trúc while.
i=1
while i<=6: *
j=1 **
while j<=i: ***
print("*", end="") ****
j=j+1 *****
******
print("\n")
i=i+1
10
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-7: Nhập từ bàn phím một số nguyên n. Nếu n<=0
thì thông báo lỗi và yêu cầu nhập lại, còn lại thì dừng. Yêu
cầu sử dụng cấu trúc while.
Cách 1:
n=int(input("n="))
while n<=0:
print("Khong hop le!!!\nMoi nhap lai")
n=int(input("n="))
11
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE
Ví dụ 3.2-8:
Cách 2:
while True:
n=int(input("n="))
if n<=0:
print("Khong hop le!!!\nMoi nhap lai")
else:
break
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE – BÀI TẬP ÔN TẬP
Sử dụng cấu trúc while để thực hiện các yêu cầu sau:
Câu 3.1. Nhập từ bàn phím một số nguyên n, trong đó
n>=1 và n<=50. Nếu n không thuộc miền trên thì yêu
cầu nhập lại.
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE – BÀI TẬP ÔN TẬP
Câu 3.3. In lên màn hình bảng cửu chương 9x9
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC WHILE – BÀI TẬP ÔN TẬP
Câu 3.4. In lên màn hình theo cấu trúc sau:
a. b.
15
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cú pháp
for item in sequence:
<Process>
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
for item in range([<start>,] <end>[, <step>]):
<Process>
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
for item in range([<start>,] <end>[, <step>]):
<Process>
Ví dụ 3.2-9:
for i in range(5,10,2):
print(i)
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
for item in range([<start>,] <end>[, <step>]):
<Process>
Ví dụ 3.2-10:
for i in range(5,-1,-1):
print(i)
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
for item in range([<start>,] <end>[, <step>]):
<Process>
Ví dụ 3.2-11:
for i in range(5,10):
print(i)
20
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
for item in range([<start>,] <end>[, <step>]):
<Process>
Ví dụ 3.2-12:
for i in range(6):
print(i)
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
Ví dụ 3.2-13:
22
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Cấu trúc for với hàm range()
Ví dụ 3.2-14:
Ví dụ 3.2-15:
Ví dụ 3.2-16:
23
Nguồn: Automate the Boring Stuff with Python
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-17: in các số từ 1 đến 10, mỗi số nằm trên một
dòng. Yêu cầu sử dụng cấu trúc for.
Thuật toán:
- Với mỗi giá trị của i= [1..10], thực hiện:
• In i lên màn hình
• Xuống dòng
#Cau truc for 1
for i in range(1,11): 2
print(i) 3
4
5
#Cau truc while
6
i=1 7
while i<=10: 8
print(i) 9
i=i+1 10
24
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-18: in các số chẵn trong dãy các số từ 1 đến 10,
mỗi số nằm trên một dòng. Yêu cầu sử dụng cấu trúc for.
Thuật toán:
- Với mỗi giá trị của i= [1..10], thực hiện:
• Nếu i%2=0 thì: In i lên màn hình
• Xuống dòng
#Cau truc for 2
for i in range(1,11): 4
if i%2==0:
6
print(i)
8
#Cau truc while 10
i=1
while i<=10:
if i%2==0:
print(i)
i=i+1
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-19: Nhập từ bàn phím một số nguyên n (n>=1); in
lên màn hình tổng của n số nguyên dương đầu tiên (các số
liên tục từ 1 đến n): S=1+2+3+ … + n. Yêu cầu sử dụng cấu
trúc for.
Thuật toán:
- Nhập n
- S=0
- Với mỗi giá trị của i= [1..n], thực hiện:
• S=S+i
- In S lên màn hình.
26
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-20: Nhập từ bàn phím một số nguyên n (n>=1); in
lên màn hình tổng của n số nguyên dương đầu tiên (các số
liên tục từ 1 đến n): S=1+2+3+ … + n. Yêu cầu sử dụng cấu
trúc for.
print(“Tong=”,S)
27
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-21: in lên màn hình 6 dòng, có nội dung như sau.
Yêu cầu sử dụng cấu trúc for.
Thuật toán:
- Với mỗi giá trị của i = [1..6], thực hiện:
• Với mỗi giá trị của j = [1..i], thực hiện:
In lên màn hình dấu “*”
• Xuống dòng
*
**
***
****
*****
******
28
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR
Ví dụ 3.2-22: in lên màn hình 6 dòng, có nội dung như sau.
Yêu cầu sử dụng cấu trúc for.
for i in range(1,7):
for j in range(1, i+1):
print("* ", end="")
print("")
*
**
***
****
*****
******
29
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC FOR – BÀI TẬP ÔN TẬP
30
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SO SÁNH GIỮA CÁC CẤU TRÚC LẶP
Đặc trưng while for
Được dùng để giải các bài toán có
tính chất lặp X X
31
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
LỆNH NHẢY BREAK, CONTINUES
Ví dụ 3.2-3:
32
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Lệnh break
Được sử dụng để thoát khỏi cấu trúc lặp gần nhất
33
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Lệnh break
34
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Lệnh continue
Được sử dụng để bỏ qua các lệnh còn lại của vòng
lặp và bắt đầu chu trình lặp tiếp theo.
35
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Lệnh continue
Được sử dụng để bỏ qua các lệnh còn lại của vòng
lặp và bắt đầu chu trình lặp tiếp theo.
...
if <Biểu thức logic>:
continue
...
Bắt đầu chu kỳ lặp mới
…
36
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Ví dụ 1: In lên màn hình một dãy các số chẵn liên tục từ 1
đến 10.
for i in range(1,11):
if i%2!=0: continue
print(i)
2
4
5
6
8
10
37
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÂU LỆNH NHẢY BREAK, CONTINUE
Ví dụ 2: Nhập từ bàn phím một số nguyên n và n số nguyên;
Việc nhập sẽ dừng lại cho đến khi đủ n số nguyên hoặc số 0
được nhập vào. In lên màn hình tổng của các số nguyên
dương đã được nhập.
i=n=x=S=0
n=int(input("Nhap n="))
for i in range(1,n+1):
print("So thu ",i,": ",sep="",end="")
x=int(input())
Nhap n=10
if x<0:
So thu 1: 1
continue
So thu 2: 2
elif x==0:
So thu 3: 3
break
So thu 4: -4
else:
So thu 5: 5
S=S+x
So thu 6: 0
print("S=",S,sep="")
S=11
38
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP - CHƯƠNG 3
Bài 1. Viết chương trình nhập từ bàn phím một số
nguyên n (0<= n <=100).
In lên màn hình n!
Ví dụ:
n=5
5!=120
39
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP - CHƯƠNG 3
Bài 2. Viết chương trình nhập từ bàn phím một số
nguyên n (1<= n <=100). Cho biết n có phải là số
nguyên tố hay không. Biết rằng, n là số nguyên tố nếu
n chỉ chia hết cho 1 và chính nó.
Ví dụ 1:
n=10
10 khong la SNT
Ví dụ 2:
n=7
7 la SNT
40
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP - CHƯƠNG 3
Bài 3. Viết chương trình nhập từ bàn phím một số
nguyên dương n (n>=0). Cho biết n có bao nhiêu chữ
số. (yêu cầu sử dụng cấu trúc lặp)
Ví dụ 1:
n=123
123 co 3 chu so
Ví dụ 2:
n=4500
4500 co 4 chu so
41
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP - CHƯƠNG 3
Bài 4.
- Nhập từ bàn phím hai số thực: a và b;
- Nhập từ bàn phím một toán tử (+, -, *, /);
- In lên màn hình kết quả của biểu thức tương ứng;
- Chương trình sẽ lặp lại việc tính trên cho đến khi
bấm phím T hoặc t thì kết thúc.
a=2.5 a=2.5
Ví dụ: b=10 b=10
Toan tu:+ Toan tu:+
2.5+10=12.5 2.5+10=12.5
Tiep tuc:t Tiep tuc:x
a=2.5
b=10
Toan tu:*
2.5*10=25
Tiep tuc:t
42
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 4. HÀM
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Ví dụ 4.1:
Tính tổng của n số nguyên dương đầu tiên:
- Nhập từ bàn phím một số nguyên n
- Tính tổng S của n số nguyên đầu tiên
S=1+2+…+n
- In lên màn hình tổng S
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Lời giải không sử dụng hàm
Nhap(n)
Tinh(n)
InKQ(S)
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Phân tích bài toán để chuyển vào hàm
Hàm Nhap(n):
- Input: không có
- Output: số nguyên n
- Process: cho phép người dùng nhập từ bàn phím
một số nguyên và lưu vào biến n;
Hàm Tinh(n):
- Input: số nguyên n
- Output: trả kết quả về qua tên hàm
- Process: thực hiện tính tổng của n số nguyên
dương đầu tiên;
Hàm InKQ(S):
- Input: số nguyên S
- Output: kết quả được in lên màn hình
- Process: In lên màn hình giá trị của biến S;
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Chương trình hoàn chỉnh sử dụng hàm
Trong đó:
Hàm nhập dữ liệu
Hàm tính tổng
Hàm in kết quả
Lời gọi hàm
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Ví dụ 4.2:
Howdy!
Howdy!!!
Hello there.
Howdy!
Howdy!!!
Hello there.
Howdy!
Howdy!!!
Hello there.
Trong đó:
Phần Header
Phần thân
Lời gọi hàm
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 61
KHÁI NIỆM VỀ HÀM
Ngoài các hàm chuẩn (do Python định nghĩa
sẵn), hệ thống còn cho phép người dùng tự
thiết kế ra những hàm theo mục đích riêng;
Hàm chia các bài toán lớn thành các công
việc nhỏ hơn, giúp thực hiện những công
việc lặp lại nào đó một cách nhanh chóng mà
không phải viết lại đoạn chương trình;
Hàm phải được định nghĩa trước khi sử
dụng;
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHÁI NIỆM VỀ HÀM
Ví dụ 4.3: hàm math.sqrt(n), thực hiện tính căn
bậc hai của số nguyên n. Trong đó n là tham số của
hàm.
Nhiệm vụ của lập trình viên là
thiết kế chức năng cho hộp đen
𝑛𝑛
n=25 return 5
Input Output
Process
Hàm được ví như một cái hộp đen (Black Box) đối với người sử dụng:
- Có hoặc không có dữ liệu đầu vào (input)
- Thực hiện (process) một yêu cầu cụ thể gì đó khi được gọi (Call)
- Kết quả xử lý được trả về gọi là đầu ra (output)
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHAI BÁO HÀM
Cú pháp khai báo hàm:
def <Tên_Hàm>([<DS/Tham số>]):
Lệnh/Khối lệnh
Trong đó:
- def: là từ khóa bắt buộc khi khai báo hàm
- <Tên_Hàm>: do người lập trình tự đặt, theo quy
tắc đặt tên cho các đối tượng
- <DS/Tham số>: các tham số (nếu có)
10
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHAI BÁO HÀM
Ví dụ 4.4
Trong đó:
Định nghĩa tên hàm, hàm có tên hello, tham số name
Phần thân của hàm
Lời gọi hàm, với tham số được gán giá trị ‘Alice’
11
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 63
THAM SỐ
Khái niệm
Tham số (Parameter/ Argument - Đối số), là công cụ của
hàm, cho phép đưa dữ liệu từ ngoài vào trong hàm;
Có loại hàm không có tham số và loại hàm có tham số;
Có 2 loại tham số
Tham số vị trí
- Là sự ánh xạ tương ứng giữa vị trí khai báo tham số và
lời gọi hàm;
Tham số từ khóa
- Sử dụng tên tham số để truyền giá trị cho hàm;
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ – HÀM KHÔNG CÓ THAM SỐ
Ví dụ 4.5a: Hàm KHÔNG có tham số
def hello():
print('Hello Alice')
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ – HÀM CÓ THAM SỐ
Ví dụ 4.6a: Hàm CÓ tham số
def hello(name):
print('Hello ' + name)
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ – HÀM CÓ THAM SỐ
Ví dụ 4.6b: Hàm CÓ tham số
def show_number(n):
for i in range(1,n+1): 1
print(i) 2
3
show_number(4) 4
show_number(10)
15
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ – HÀM CÓ THAM SỐ
Ví dụ 4.6c: Hàm CÓ tham số
def show_number(m,n):
for i in range(m,n+1): 1
print(i) 2
3
show_number(1,4) 4
show_number(5,10)
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ - GIÁ TRỊ MẶC ĐỊNH CỦA THAM SỐ
Giá trị mặc định của tham số
Cú pháp:
def <Tên_Hàm>(<para1>=<value1>, <para2>=<value2>,…):
Lệnh/Khối lệnh
Ví dụ 4.7a
def show_number(n=10):
for i in range(1,n+1):
print(i)
show_number(5) n=5
show_number() n=10
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ - GIÁ TRỊ MẶC ĐỊNH CỦA THAM SỐ
Giá trị mặc định của tham số
Ví dụ 4.7b:
def show_number(m=1,n=10):
for i in range(m,n+1):
print(i)
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ - GIÁ TRỊ NONE
Giá trị None
None là một giá trị trong Python thuộc kiểu
NoneType;
Biểu diễn giá-trị-không-có-giá-trị (value-without-
a-value);
Trong các ngôn ngữ lập trình khác được gọi là null,
nil hoặc undefined;
None thường được sử dụng để kết thúc hàm(với
cú pháp return None) hoặc để khai báo giá trị mặc
định cho tham số trong hàm;
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 65
THAM SỐ - GIÁ TRỊ NONE
Nếu đặt giá trị None cho tham số, thì nó trở thành
tham số không bắt buộc:
Ví dụ 4.8a
def PhepCong(x,y=None):
if y==None:
return x
else:
return x+y
kq1=PhepCong(5)
kq2=PhepCong(5,2)
print(kq1, kq2) 57
20
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ - GIÁ TRỊ NONE
Nếu tất cả các tham số được đặt giá trị None, thì
có thể sử dụng tên tham số để truyền giá trị:
Ví dụ 4.8b
def PhepCong(x=None,y=None):
return x+y
kq1=PhepCong(5,2)
kq2=PhepCong(x=5,y=2)
kq3=PhepCong(y=2,x=5)
print(kq1, kq2, kq3) 777
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAM SỐ
Phân biệt giữa 2 loại tham số
Tham số vị trí Tham số từ khóa
Khai báo hàm: Khai báo hàm:
def PhepCong(x,y): def PhepCong(x=None,y=None):
return x+y return x+y
Hoặc:
kq=PhepCong(x=5,y=2)
Hoặc:
kq=PhepCong(y=2,x=5)
22
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NHẬN GIÁ TRỊ TỪ HÀM – TỪ KHÓA RETURN
Từ khóa return sẽ kết thúc và trả giá trị về cho hàm
Ví dụ 4.9:
def Nhap():
n=int(input('Nhap mot so nguyen='))
return n
n=Nhap()
print('So nguyen da nhap=',n)
23
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NHẬN GIÁ TRỊ TỪ HÀM – TỪ KHÓA RETURN
Từ khóa return có thể trả về 1 hoặc nhiều giá trị
Ví dụ 4.10:
def Nhap():
x=int(input('x='))
y=int(input('y='))
return x, y
a, b=Nhap()
print(‘Hai so nguyen da nhap=',a,b)
x=5
y=10
Hai so nguyen da nhap= 5 10
24
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NHẬN GIÁ TRỊ TỪ HÀM – TỪ KHÓA RETURN
Từ khóa return có thể trả về giá trị của một biểu thức
Ví dụ 4.11:
def Tong_HieuHaiSo(x,y):
return x+y,x-y
x=10
y=7
a,b=Tong_HieuHaiSo(x,y)
print('Tong va hieu=',a,b)
Tong va hieu= 17 3
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NHẬN GIÁ TRỊ TỪ HÀM – TỪ KHÓA RETURN
Có thể sử dụng nhiều từ khóa return trong hàm
Ví dụ 4.12a:
26
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 64
NHẬN GIÁ TRỊ TỪ HÀM
Ví dụ 4.12b: một cách viết tối ưu hóa code
27
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 65
NHẬN GIÁ TRỊ TỪ HÀM
Có thể sử dụng cú pháp sau để kết thúc chu kỳ
vòng lặp hoặc kết thúc hoạt động của hàm nhưng
không trả về giá trị:
return None
28
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
NHẬN GIÁ TRỊ TỪ HÀM
Giá trị None
Ví dụ 4.13:
def PhepChia(x,y):
if y==0:
return None
else:
return x/y
kq1=PhepChia(5,0)
kq2=PhepChia(5,2)
print(kq1, kq2) None 2.5
29
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
LỜI GỌI HÀM
Ý nghĩa:
Khi cần sử dụng một hàm đã định nghĩa, ta cần
thực hiện lời gọi hàm;
Hàm được gọi thông qua tên hàm, theo sau là
danh sách tham số (nếu có);
Sử dụng cú pháp hai ngôi (có phép gán =) khi hàm
trả kết quả qua tên hàm;
Một hàm có thể được gọi trong một hàm khác (gọi
là phép đệ quy);
30
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP
Sử dụng hàm để thực hiện các yêu cầu sau:
Nhập từ bàn phím một số nguyên n;
- Hàm Nhap()
Nhập liên tục từ bàn phím n số nguyên;
Đếm và in lên màn hình có bao nhiêu chữ số chẵn
đã được nhập vào.
- Hàm NhapVaDem(n) Chương trình mẫu:
n=7
- Hàm InKQ(kq) Nhap 7 so nguyen:
6
5
8
7
0
2
3
So chu so chan la: 3
31
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
PHẠM VI CỦA BIẾN
Các loại biến
Biến cục bộ
- Là biến được khai báo trong một HÀM và chỉ ảnh
hưởng trong phạm vi của HÀM đó;
- Khi ra khỏi HÀM, biến sẽ không còn giá trị sử dụng;
32
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
PHẠM VI CỦA BIẾN
Phạm vi TOÀN CỤC
def NhapBanKinh():
x=int(input("Ban kinh="))
return x
Phạm vi CỤC BỘ
def TinhChuVi(y):
PI = 3.14 Vị trí khai báo BIẾN CỤC BỘ
ChuVi=y*PI trong chương trình con
return ChuVi
Vị trí khai báo BIẾN TOÀN CỤC
BanKinh=NhapBanKinh()
ChuVi=TinhChuVi(BanKinh)
print(ChuVi)
33
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
PHẠM VI CỦA BIẾN
Cú pháp global
Sử dụng từ khóa global để khai báo 1 biến cục bộ
thành toàn cục
Ví dụ 4.14a
def Nhap():
x=int(input("x=")) #x: Bien cuc bo
global y #Khai bao: y la bien TOAN CUC
y=5
return x+y
34
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 70
PHẠM VI CỦA BIẾN
Cú pháp global
Ví dụ 4.14b
35
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 70
HÀM RỖNG – TỪ KHÓA PASS
Có thể định nghĩa một hàm rỗng với từ khóa pass
Sai
def myfunc1():
Đúng
def myfunc2():
pass
myfunc2()
36
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
XỬ LÝ NGOẠI LỆ
Khi thực hiện chương trình, người lập trình có thể chủ động
kiểm soát lỗi và bỏ qua khi phát sinh;
Ví dụ 4.15
37
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
XỬ LÝ NGOẠI LỆ
Cú pháp:
38
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: https://realpython.com/python-exceptions/
XỬ LÝ NGOẠI LỆ
Ví dụ 4.16:
def spam(divideby):
try:
result = 42 / divideby
except:
print("Sorry ! You are dividing by zero ")
else:
print("Yeah ! Your answer is :", result)
spam(1)
spam(0)
39
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: https://realpython.com/python-exceptions/
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 5.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẤU TRÚC DỮ LIỆU KIỂU LIST - DANH SÁCH
List là một giá trị có thể chứa nhiều kiểu giá
trị trong một tập hợp có thứ tự.
Một biến kiểu List có thể lưu trữ được đồng
thời nhiều giá trị (có thể khác nhau)
spam = ["cat", "bat", "rat", "elephant"]
Phần tử
Mỗi phần tử cách nhau bởi dấu ,
Tên biến
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 80
CẤU TRÚC DỮ LIỆU KIỂU LIST - DANH SÁCH
Ví dụ
biến spam được gán cho một giá trị kiểu List, trong list
chứa nhiều giá trị khác nhau;
List rỗng là list không có phần tử nào
Ví dụ: spam = [ ]
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 80
KHỞI TẠO LIST
Sử dụng phép gán
Ví dụ:
numbers = [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHỞI TẠO LIST
Sử dụng cấu trúc for
Ví dụ:
matrix = [ [x,x+1,x+2] for x in range(1,10,3) ]
print(matrix)
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
KHỞI TẠO LIST
Phương pháp constructor List
Ví dụ:
char=list("Python")
print(char)
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Có thể truy xuất đến các phần tử trong List thông
qua số chỉ mục (index);
Index bắt đầu từ số 0 (zero), phần tử thứ n trong
List sẽ có index là (n-1);
Sử dụng tên biến và số index để truy xuất;
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Ví dụ:
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 81
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Ví dụ: số index vượt quá giới hạn số phần tử
10
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 81
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Ví dụ: số index phải là số nguyên
11
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 81
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Ví dụ: List trong List
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 81
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục (index):
Ví dụ: List trong List
(1) ???
(2) ???
(3) ???
(4) ???
(5) ???
(6) ???
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục âm (Negative indexes):
Index=-1 sẽ tham chiếu đến phần tử cuối trong
List, Index=-2 là phần tử áp cuối, …
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 82
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Số chỉ mục âm (Negative indexes):
Ví dụ:
(1) ???
(2) ???
(3) ???
15
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Truy xuất tập con trong List
Slice: khung trượt (cửa sổ trượt) cho phép truy
xuất được đồng thời nhiều phần tử trong list
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 82
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Truy xuất tập con trong List
Ví dụ:
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 82
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Truy xuất tập con trong List
Ví dụ:
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 82
TRUY XUẤT CÁC PHẦN TỬ TRONG LIST
Truy xuất tập con trong List
Ví dụ:
(1) ???
(2) ???
(3)?
(4)?
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CẬP NHẬT GIÁ TRỊ CHO PHẦN TỬ TRONG LIST
Sử dụng phép gán và số Index
20
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 82
THAO TÁC TRÊN LIST
Hàm len()
Trả về chiều dài của List
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Hàm max()
Trả về phần tử có giá trị lớn nhất trong List
Hàm min()
Trả về phần tử có giá trị bé nhất trong List
Ví dụ:
numbers = [5, 3, 8, 2, 9]
print(max(numbers))
print(min(numbers))
9
2
22
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Toán tử +
numbers = [1, 2]
print(numbers)
[1, 2]
[1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4]
23
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Toán tử *
numbers = [1, 2]
print(numbers)
numbers = numbers*2
print(numbers)
[1, 2]
[1, 2, 1, 2]
[1, 2, 1, 2, 1, 2, 1, 2]
24
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Toán tử in và not
Toán tử in và not giúp xác định một giá trị có tồn
tại trong một List hay không;
Biểu thức trả về True (có) hoặc False (không);
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 87
THAO TÁC TRÊN LIST
Toán tử in và not
Ví dụ: Nhập vào tên của một thú cưng và kiểm tra
tên đó có trong danh sách hay không
myPets = ['Zophie', 'Pooka', 'Fat-tail']
print('Enter a pet name:')
name = input()
if name not in myPets:
print('I do not have a pet named ' + name)
else:
print(name + ' is my pet.')
26
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 87
THAO TÁC TRÊN LIST
Xóa phần tử trong List với hàm del()
Ví dụ:
spam=[1,2,3,4,5]
del(spam[2])
print(spam)
del(spam[1]) [1, 2, 4, 5]
print(spam) [1, 4, 5]
27
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Xóa phần tử trong List với hàm del()
Ví dụ:
students=["An","Binh","Lan","Thanh","Minh"]
del(students[2])
print(students)
del(students[1])
del(students[2]) ??? (1)
print(students) ??? (2)
28
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
THAO TÁC TRÊN LIST
Bổ sung phần tử cho List
Ví dụ:
catNames = [ ]
while True: Khởi tạo List rỗng
print('Enter the name of cat ' + str(len(catNames) + 1)
+ ' (Or enter nothing to stop.):')
name = input()
if name == '': Biến name đặt trong [ ]
break
catNames = catNames + [name] # list concatenation
29
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 85
THAO TÁC TRÊN LIST
Duyệt các phần tử trong List
Ví dụ:
students=["An","Binh","Lan","Thanh","Minh"]
#Cach 1
for x in students:
print(x ,end=", ")
#Cach 2
for x in range(len(students)):
print(students[x] ,end=", ")
30
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 85
CÁC PHƯƠNG THỨC CỦA LIST
Phương thức (method)
Một phương thức có chức năng như một hàm được định
nghĩa sẵn;
Cho phép xử lý dữ liệu trên đối tượng tương ứng;
Mỗi kiểu dữ liệu sẽ có tập phương thức riêng;
31
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
index() method
Trả về index của một phần tử được tìm thấy
trong List;
Nếu không tìm thấy phần tử trong danh sách sẽ
báo lỗi ValueError;
Ví dụ:
myPets = ['Zophie', 'Pooka', 'Fat-tail']
namePet="Pooka"
if namePet in myPets:
print("Index is", myPets.index(namePet))
else:
print("Not Found!")
Index is 1
32
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
append(), insert() method
append(x) thêm phần tử x vào cuối List;
33
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 89
CÁC PHƯƠNG THỨC CỦA LIST
append(), insert() method
names = [1, 2, 3, 4, 5]
names.append(6)
print(names)
names.insert(0,7)
print(names)
names.insert(-1,8)
print(names)
??? (1)
??? (2)
??? (3)
34
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
remove() method
remove(x): xóa phần tử x đầu tiên tìm thấy trong
List;
Ví dụ:
Ví dụ:
35
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 90
CÁC PHƯƠNG THỨC CỦA LIST
remove() method
Phân biệt giữa hàm del() và phương thức remove()
- Hàm del() xóa một phần tử khi biết index
- Hàm remove() xóa một phần tử khi biết giá trị
#Cach 2
spam.remove('bat')
36
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
sort() method
Cho phép sắp xếp các phần tử trong List có thứ tự;
Ví dụ:
37
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 91
CÁC PHƯƠNG THỨC CỦA LIST
sort() method
Mặc định sắp xếp tăng dần, thêm tham số
reverse=True để sắp xếp giảm dần;
Ví dụ:
numbers = [1, 2, 3, 4, 5]
numbers.sort(reverse=True)
print(numbers)
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
38
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
sort() method
Lưu ý:
- Hàm sort() chỉ thực hiện được khi các phần tử có cùng
kiểu dữ liệu;
39
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 91
CÁC PHƯƠNG THỨC CỦA LIST
sort() method
Lưu ý:
- Hàm sort() chỉ thực hiện được khi các phần tử có cùng
kiểu dữ liệu;
40
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 92
CÁC PHƯƠNG THỨC CỦA LIST
reverse() method
Thực hiện đảo ngược thứ tự các phần tử trong List
Ví dụ:
numbers = [1, 2, 3, 4, 5]
print(numbers)
numbers.reverse()
print(numbers)
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
41
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
clear() method
Thực hiện xóa tất cả các phần tử trong List
Ví dụ:
numbers = [1, 2, 3, 4, 5]
print(numbers)
numbers.clear()
print(numbers)
[1, 2, 3, 4, 5]
[]
42
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
count(x) method
Thực hiện đếm số phần tử x xuất hiện trong List
Ví dụ:
numbers = [1, 2, 3, 2, 5]
print(numbers.count(2))
print(numbers.count(5))
print(numbers.count(10))
2
1
0
43
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
copy() method
Thực hiện tạo ra một bản sao mới của List
Ví dụ:
numbers1 = [1, 2, 3, 4, 5]
numbers2=numbers1.copy()
print(numbers1)
print(numbers2)
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
44
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
copy() method
names = [“An”, ”Nam”, “Binh”, “Ngoc”]
x=names.copy()
print(x)
print(x.count(“Nam”))
??? (1)
??? (2)
45
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
pop(i) method
Thực hiện xóa và lấy ra giá trị của phần tử có số chỉ
mục i trong List.
Nếu tham số i để trống thì mặc định là lấy phần tử
cuối trong List.
Ví dụ:
numbers = [1, 2, 3, 4, 5] numbers = [1, 2, 3, 4, 5]
x=numbers.pop(2) x=numbers.pop()
print(numbers) print(numbers)
print(x) print(x)
[1, 2, 4, 5] [1, 2, 3, 4]
3 5
46
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
pop(i) method
names = [“An”, ”Nam”, “Binh”, “Ngoc”]
x1=names.pop(0)
x2=names.pop(-1)
print(x1)
print(x2)
print(names)
??? (1)
??? (2)
??? (3)
47
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
CÁC PHƯƠNG THỨC CỦA LIST
pop(i) method
names = [“An”, ”Nam”, “Binh”, “Ngoc”]
names.remove(“An”)
del(names[0])
x=names.pop(-2)
print(x)
print(names)
??? (1)
??? (2)
48
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
SAO CHÉP LIST
Phép tham chiếu (References)
Ví dụ: phép gán trong biến đơn
49
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 91
SAO CHÉP LIST
Phép tham chiếu (References)
50
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 99
SAO CHÉP LIST
Phép tham chiếu (References)
51
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 99
SAO CHÉP LIST
Phép tham biến (variables refer)
Không sử dụng phép gán để tạo bản sao cho List
Sử dụng hàm copy trong thư viện copy để tạo bản sao List
Ví dụ:
52
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 100
SAO CHÉP LIST
Phép tham biến (variables refer)
53
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 101
SAO CHÉP LIST
Phép tham biến (variables refer)
Ví dụ:
import copy
numbers1 = [1, 2, 3, 4, 5]
numbers2 = copy.copy(numbers1)
print(numbers2)
numbers3 = numbers1
numbers3[2] = 6
print(numbers3)
??? (1)
??? (2)
54
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Xây dựng hàm, thực hiện các yêu cầu sau:
Lưu ý: không sử dụng các hàm có chức năng tương tự có sẵn
trong python
55
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
Tạo danh sách quản lý văn phòng phẩm:
VPP=[‘but bi’, ‘but chi’, ‘vo’, ‘sach GK’, ‘but chi’, ‘vo’]
Tạo menu công việc:
Nhập số công việc cần làm?
1. Thêm danh sách sản phẩm
2. Tìm kiếm sản phẩm
3. Xóa tất cả các sản phẩm cần xóa
4. Đếm số lượng sản phẩm
5. Cập nhật sản phẩm
0. Exit
56
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
1.
Nhập tên sản phẩm cần thêm: ghim
Nhập vị trí sản phẩm: 3
Danh sách sản phẩm là:
VPP=[but bi’, ‘but chi’, ‘vo’, ‘ghim’, ‘sach GK’,
‘but chi’, ‘vo’]
Nhập tên sản phẩm cần thêm: ghim
Nhập vị trí sản phẩm: 20
Danh sách sản phẩm là:
VPP=[but bi’, ‘but chi’, ‘vo’, ‘ghim’, ‘sach GK’,
‘but chi’, ‘vo’,’ghim’]
57
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
2.
Nhập tên sản phẩm cần tìm: ghim
Sản phẩm ghim có trong danh sách ở vị trí 3, 7
58
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
3.
Nhập tên sản phẩm cần xóa: ghim
VPP=[but bi’, ‘but chi’, ‘vo’, ‘sach GK’, ‘but chi’,
‘vo’]
4.
Tổng số lượng sản phẩm hiện tại có 6 sp
But bi: 1
But chi: 2
Vo: 2
Sach GK:1
59
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP ÔN TẬP
5.
Bạn muốn cập nhật sản phẩm nào: vo
Bạn muốn cập nhật thành: ghim
60
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 6.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Cách tổ chức dữ liệu
Một Dictionary (Dict) có thể lưu trữ một tập hợp các giá trị có kiểu
khác nhau;
Dữ liệu trong Dict được tổ chức theo cặp thông tin gồm: key và
value;
Key và Value: có kiểu chuỗi hoặc số;
Key: được xem là khóa của Dict, và có giá trị là duy nhất.
Cú pháp:
{<key1: value1>, <key2: value2>, .., <keyn: valuen>}
3
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Khởi tạo giá trị
Phần tử key: value
4
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 106
CẤU TRÚC DỮ LIỆU DICTIONARY
Khởi tạo giá trị
Ví dụ:
Students={} #Khởi tạo Dict rỗng
Names = {1: 'An', 3: 'Nam', 2: 'Minh', 5: 'Lan'}
Words = {'Game': 5, 'Python': 11, 'Book': 2, 'Game': 3 }
print(Students)
print(Names)
print(Words)
{}
{1: 'An', 3: 'Nam', 2: 'Minh', 5: 'Lan'}
{'Game': 3, 'Python': 11, 'Book': 2}
5
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Thêm phần tử
Ví dụ:
Students={} #Khởi tạo Dict rỗng
Students['age']=18
Students['name']="Nam"
print(Students)
6
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Truy xuất value thông qua key
Cú pháp: Dict_Name[key]
- Ví dụ:
Dict_Name
Key
Value
7
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 106
CẤU TRÚC DỮ LIỆU DICTIONARY
Thay đổi value thông qua key
Cú pháp: Dict_Name[key] = value
- Ví dụ:
myCat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
myCat['color']='black'
print(myCat)
8
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Dict chứa trong Dict
Dạng 1:
myStudent={
1: {"name" : "An", "age" : 18, "course" : "Basic Programming"},
2: {"name" : "Nam", "age" : 19, "course" : "DataBase"},
3: {"name" : "Binh", "age" : 17, "course" : "Machine Learning"}
}
Dạng 2:
student1 = {"name" : "An", "age" : 18, "course" : "Basic Programming"}
student2 = {"name" : "Nam", "age" : 19, "course" : "DataBase"}
student3 = {"name" : "Binh", "age" : 17, "course" : "Machine Learning"}
myStudent={
1: student1,
2: student2,
3: student3
}
9
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU DICTIONARY
Dict chứa trong Dict
Truy xuất phần tử con trong Dict
myStudent={
1: {"name" : "An", "age" : 18, "course" : "Basic Programming"},
2: {"name" : "Nam", "age" : 19, "course" : "DataBase"},
3: {"name" : "Binh", "age" : 17, "course" : "Machine Learning"}
}
print(myStudent[1])
print(myStudent[1]["name"])
10
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
SO SÁNH DICTIONARY VỚI LIST
Truy xuất các phần tử
List: sử dụng index để xác định các phần tử
>>> myPets = ['cats', 'dogs', 'mouse']
>>> myPets[0]
'cats'
11
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 106
SO SÁNH DICTIONARY VỚI LIST
Cách tổ chức dữ liệu
List: tập hợp có thứ tự;
Dist: tập hợp không có thứ tự;
>>> spam = ['cats', 'dogs', 'mouse']
>>> bacon = ['dogs', 'mouse', 'cats']
>>> spam == bacon
False
12
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 106
CÁC HÀM XỬ LÝ DICTIONARY
dict()
Chuyển một tập hợp thành Dict;
myDict = dict(name = "An", age = 18, country = "Viet Nam")
print(myDict)
{'name': 'An', 'age': 18, 'country': 'Viet Nam'}
Chỉ sử dụng được hàm dict khi key có giá trị kiểu string;
myDict = dict(1 = "An", 2 = 18, 3 = "Viet Nam")
print(myDict)
myDict = dict(1 = "An", 2 = 18, 3 = "Viet Nam")
^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
13
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC HÀM XỬ LÝ DICTIONARY
len()
Trả về số phần tử của Dict;
myDict = {name = "An", age = 18, country = "Viet Nam"}
print(len(Names))
del(dictName[<key>])
Xóa phần tử <key> trong dictName;
myDict = {"name" : "An", "age" : 18, "country" : "Viet Nam"}
del(myDict["age"])
print(myDict)
{'name': 'An', 'country': 'Viet Nam'}
14
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
values() method
Trả về tập các value của các phần tử trong Dict;
>>> spam = {'color': 'red', 'age': 42}
>>> for x in spam.values():
print(x)
red
42
>>> L1[0]
‘red'
15
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
keys() method
Trả về tập các key của các phần tử trong Dict
>>> spam = {'color': 'red', 'age': 42} >>> for x in spam:
>>> for x in spam.keys(): print(x)
print(x) color
color age
age
>>> L2=list(spam.keys())
>>> L2
['color', 'age']
>>> L2[0]
'color'
16
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
items() method
Trả về tập các phần tử trong Dict
>>> spam = {'color': 'red', 'age': 42}
>>> for x in spam.items():
print(x)
>>> L3=list(spam.items())
>>> L3
[('color', 'red'), ('age', 42)]
>>> L3[0]
('color', 'red')
17
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
items() method
Truy xuất đồng thời key và value:
>>> spam = {'color': 'red', 'age': 42}
>>> for k, v in spam.items():
print('Key: ' + k + ' Value: ' + str(v))
18
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 108
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
Toán tử in và not in
>>> spam = {'name': 'Zophie', 'age': 7}
>>> 'name' in spam.keys()
True
>>> 'Zophie' in spam.values()
True
>>> 'color' in spam.keys()
False
>>> 'color' not in spam.keys()
True
>>> 'color' in spam
False
19
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
Ví dụ:
20
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 107
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
get(<key>,<default_value>) method
Trả về value của <key> trong Dict, nếu không tồn tại sẽ trả về giá trị
<default_value>
>>> picnicItems = {'apples': 5, 'cups': 2}
21
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
update(<dict>) method
Cập nhật giá trị Dict, nếu giá trị cập nhật không tồn tại thì thêm mới.
- Ví dụ:
myDict = {"name": "An", "age": 18, "country": "Viet Nam"}
myDict.update(name="Nam")
print(myDict)
myDict.update(course="Basic Programming")
print(myDict)
22
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
pop(<key>) method
Xóa một phần tử có <key> khỏi Dict, và lấy <value> được xóa;
- Ví dụ:
Students = {
"name": "An",
"age": 18,
"class": "Basic Programming"}
x = Students.pop("class")
print(x)
print(Students)
Basic Programming
{'name': 'An', 'age': 18}
23
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
popitem() method
Xóa phần tử ở cuối Dict (phần tử được thêm vào sau cùng);
- Ví dụ:
myDict = dict(name = "An", age = 15, country = "Viet Nam")
myDict.popitem()
print(myDict)
24
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
fromkeys() method
Chuyển Tuple thành Dict, phần tử của Tuple trở thành key của Dict
- Ví dụ:
keys=("age","name","class")
d=dict.fromkeys(keys)
print(d)
25
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
clear() method
Xóa tất cả các phần tử trong Dict
- Ví dụ:
d={1:10, 2:20, 3:30}
print(d)
d.clear() # d={}
print(d)
26
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 109
CÁC PHƯƠNG THỨC VÀ TOÁN TỬ CỦA DICTIONARY
copy() method hoặc dict() function
Tạo bản sao Dict (tương tự trong list)
- Ví dụ:
myDict = {"name" : "An", "age" : 18, "country" : "Viet Nam"}
d1={1:10, 2:20, 3:30}
d2=d1 # Ánh xạ
d3=d1.copy() # Tạo bản sao
d4=dict(d1) # Tạo bản sao
print("d1:", d1)
print("d2:", d2) d1: {1: 10, 2: 20, 3: 30}
print("d3:", d3) d2: {1: 10, 2: 20, 3: 30}
print("d4:", d4)
d3: {1: 10, 2: 20, 3: 30}
d1[1]=100 d4: {1: 10, 2: 20, 3: 30}
print("d1:", d1) d1: {1: 100, 2: 20, 3: 30}
print("d2:", d2) d2: {1: 100, 2: 20, 3: 30}
print("d3:", d3) d3: {1: 10, 2: 20, 3: 30}
print("d4:", d4) d4: {1: 10, 2: 20, 3: 30}
27
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
XỬ LÝ DỮ LIỆU TRÊN DICTIONARY
Duyệt Dict
Truy xuất tất cả trường key trên Dict.
myDict = {"name" : "An", "age" : 18, "country" : "Viet Nam"}
#Cách 1
for x in myDict:
print(x)
#Cách 2
for x in myDict.keys():
print(x)
name
age
country
28
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
XỬ LÝ DỮ LIỆU TRÊN DICTIONARY
Duyệt Dict
Truy xuất tất cả trường value trên Dict.
myDict = {"name" : "An", "age" : 18, "country" : "Viet Nam"}
#Cách 1
for x in myDict:
print(myDict[x])
#Cách 2
for x in myDict.values():
print(x)
An
18
Viet Nam
29
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
XỬ LÝ DỮ LIỆU TRÊN DICTIONARY
Duyệt Dict
Truy xuất đồng thời tất cả các trường key và value trên Dict.
myDict = {"name" : "An", "age" : 18, "country" : "Viet Nam"}
for k,v in myDict.items():
print(k,v)
name An
age 18
country Viet Nam
30
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
XỬ LÝ DỮ LIỆU TRÊN DICTIONARY
Sắp xếp Dict theo key
myDict = {'e': 10, 'a': 9, 'c': 15, 'b': 2, 'd': 32}
myKeys = list(myDict.keys())
myKeys.sort()
31
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
XỬ LÝ DỮ LIỆU TRÊN DICTIONARY
Sắp xếp Dict theo value
myDict = {'e': 10, 'a': 9, 'c': 15, 'b': 2, 'd': 32}
myValues=list(myDict.values())
myValues.sort()
sorted_dict={}
for x in myValues:
for k,v in myDict.items():
if x==v:
sorted_dict[k]=v
print(sorted_dict)
32
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
MỘT SỐ ỨNG DỤNG DICT TRONG THỰC TIỄN
Lưu trữ trạng thái bàn cờ vua
K for King (vua)
Q for Queen (hậu)
R for Rook (xe)
B for Bishop (tượng)
N for Knight (mã)
P for Pawn (tốt)
33
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 112
MỘT SỐ ỨNG DỤNG DICT TRONG THỰC TIỄN
Lưu trữ trạng thái bàn cờ Caro
34
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 113
MỘT SỐ ỨNG DỤNG DICT TRONG THỰC TIỄN
Bài toán quản lý danh mục
Có 3 người đi picnic, mỗi người mang theo một số món ăn (các món ăn có thể trùng
nhau ở mỗi người). Sử dụng cấu trúc dữ liệu Dictionary để quản lý danh mục các món ăn
của từng người và thống kê các món của toàn đoàn.
# Cấu trúc Dict-in-Dict
allGuests = { 'Alice': {'apples': 5},
'Bob': {'ham sandwiches': 3, 'apples': 2},
'Carol': {'cups': 3, 'apple pies': 1}}
35
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 118
BÀI TẬP ÔN TẬP
Bài 6.1. Viết chương trình nhập lần lượt vào 3 Dict (dict1, dict2, dict3), cho đến khi nhập key bằng rỗng thì dừng nhập.
Thực hiện nối 3 Dict vào 1 Dict kết quả, không được sử dụng phương thức update().
Ví dụ:
Nhap dict1:
1
10
2
20
3
30
Nhap dict2:
4
40
5
50
Nhap dict3:
6
60
7
70
8
80
dict1={1:10, 2:20, 3:30}
dict2={4:40, 5:50}
dict3={6:60, 7:70, 8:80}
dict_result={1:10, 2:20, 3:30, 4:40, 5:50, 6:60, 7:70, 8:80}
36
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
BÀI TẬP ÔN TẬP
Bài 6.2. Viết chương trình nhập lần lượt 2 Dict(dict1, dict2), cho đến khi nhập key bằng rỗng thì dừng
nhập. Thực hiện tính tổng giá trị trường value của 2 Dict.
Ví dụ:
Nhap dict1:
data1
5
data2
10
Data3
15
Nhap dict2:
data4
20
data5
25
dict1={'data1': 5, 'data2': 10, 'data3': 15}
dict2={'data4': 20, 'data5': 25}
Sum of the values: 75
37
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
BÀI TẬP
Bài tập trắc nghiệm
https://www.w3schools.com/python/exercise.asp?filename=exercise_dictionaries1
38
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 7.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
LÀM VIỆC VỚI CHUỖI
Biểu diễn chuỗi ký tự
Xử dụng cặp dấu nháy đơn ‘’ hoặc nháy kép “” để biểu diễn một
chuỗi ký tự
Ví dụ:
3
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
LÀM VIỆC VỚI CHUỖI
Hiển thị ký tự đặc biệt với dấu \
4
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 124
LÀM VIỆC VỚI CHUỖI
Hiển thị ký tự đặc biệt với dấu \
Ví dụ:
5
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
LÀM VIỆC VỚI CHUỖI
Hiển thị ký tự đặc biệt với dấu \
Ví dụ: sử dụng 1 lệnh print để hiển thị lên màn hình câu thông báo
sau:
6
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
LÀM VIỆC VỚI CHUỖI
Định nghĩa chuỗi dữ liệu thô (raw string)
Đặt ký tự r trước dấu “ hoặc ‘ bắt đầu chuỗi, để giữ lại các ký tự đặc
biệt trong chuỗi.
Ví dụ:
7
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
LÀM VIỆC VỚI CHUỖI
Biểu diễn chuỗi gồm nhiều dòng văn bản
Sử dụng 3 dấu nháy đơn ‘’’ bắt đầu và kết thúc khối văn bản để biểu
diễn chuỗi gồm nhiều dòng.
Ví dụ:
st='''Đường về nhà là vào tim ta
Dẫu nắng mưa gần xa
Thất bát, vang danh
Nhà vẫn luôn chờ ta'''
print(st)
Đường về nhà là vào tim ta
Dẫu nắng mưa gần xa
Thất bát, vang danh
Nhà vẫn luôn chờ ta
8
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU CHUỖI
Số chỉ mục Indexing
Chuỗi được tổ chức tương tự cấu trúc dữ liệu kiểu danh sách (List);
Mỗi phần tử của list là một ký tự trong chuỗi, được biểu diễn bằng
một số chỉ mục bắt đầu bằng số 0 (zero);
Ví dụ:
Element P y t h o n
Index 0 1 2 3 4 5
9
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU CHUỖI
Truy cập phần tử bằng cửa sổ trượt (Slicing)
Ví dụ:
10
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 126
CẤU TRÚC DỮ LIỆU CHUỖI
Truy cập phần tử bằng cửa sổ trượt (Slicing)
Ví dụ:
11
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
CẤU TRÚC DỮ LIỆU CHUỖI
Truy cập phần tử bằng cấu trúc lặp
Cấu trúc while
b
Cấu trúc for a
n
a
n
a
12
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 74, 75
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Toán tử in và not in
Kiểm tra một chuỗi nằm trong một chuỗi khác hay không, kết quả trả
về true hoặc false;
Ví dụ:
13
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 127
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Toán tử in và not in
Ví dụ:
14
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Toán tử in và not in
Bài tập: Viết chương trình:
- Nhập vào một xâu ký tự st1;
- Nhập vào 1 xâu st2, kiểm tra nếu st2 xuất hiện trong st1 thì yêu cầu
nhập lại xâu khác, còn lại thì dừng.
Ví dụ:
Python Programming
Python
Pro
thon
abc
15
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Toán tử so sánh ==, < , >
Ví dụ: so sánh bằng ==
Lưu ý: chuỗi được so sánh dựa trên thứ tự các ký tự trong chuỗi tính từ trái sang
phải. Chữ hoa thứ tự đứng trước chữ thường.
16
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 77
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức upper(), lower()
Trả về một chuỗi được viết hoa hoặc viết thường;
Ví dụ:
17
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 128
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức upper(), lower()
Ví dụ:
???
18
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 128
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isupper(), islower()
Trả về true hoặc false nếu một chuỗi (chữ cái) có được viết hoa hay viết
thường toàn bộ xâu;
Ví dụ:
19
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 129
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isupper(), islower()
Bài tập: Viết chương trình nhập vào một xâu str và một ký tự ch, in lên màn
hình số lượng ký tự ch xuất hiện trong xâu str (không phân biệt chữ hoa và
chữ thường).
Ví dụ:
str=Learn PYTHON Programming
ch=n
Number of character n is: 3
20
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isalpha()
isalpha(): trả về True nếu chuỗi chỉ chứa các ký tự chữ cái và không có ký tự
trắng, còn lại trả về False;
Ví dụ:
21
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isnumeric(), isdecimal()
Trả về True nếu chuỗi chỉ chứa các ký tự chữ số và không có ký tự trắng, còn
lại trả về False;
Ví dụ:
22
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Ví dụ: Chương trình nhập vào một số nguyên là tuổi một sinh viên,
chương trình kiểm tra và yêu cầu nhập lại nếu dữ liệu không phải là
số.
23
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 130
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Bài tập: Viết chương trình nhập từ bàn phím 2 số nguyên a và b.
- Yêu cầu kiểm tra tính đúng của dữ liệu khi nhập vào. Nếu dữ liệu không
hợp lệ thì yêu cầu nhập lại.
- In lên màn hình kết quả của biểu thức (a+b).
24
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 130
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isalnum()
isalnum(): trả về True nếu chuỗi chỉ chứa các ký tự chữ cái hoặc chữ số và
không có ký tự trắng, còn lại trả về False;
Ví dụ:
25
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Ví dụ: Chương trình nhập vào mật khẩu là một chuỗi ký tự chỉ bao gồm chữ
cái và chữ số, chương trình kiểm tra và yêu cầu nhập lại cho đến khi hợp lệ.
26
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 130
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức isspace()
isspace(): trả về True nếu chuỗi chỉ chứa các ký tự trắng, hoặc dấu tab, hoặc
dấu ngắt dòng, còn lại trả về False;
Ví dụ:
27
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức istitle()
istitle(): trả về True nếu chuỗi chỉ chứa các từ, mỗi từ được viết thường và
viết hoa chữ cái đầu, còn lại trả về False;
Ví dụ:
28
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức istitle()
Bài tập: Viết chương trình nhập vào họ tên của một sinh viên. Kiểm tra
tính hợp lệ của chuỗi nhập vào. Biết rằng họ tên hợp lệ nếu tất cả được
viết thường, chỉ viết hoa chữ cái đầu của từ.
Ví dụ 1:
Ho ten: NGUYEN VAN AN
Khong hop le!!!
Ví dụ 2:
Ho ten: Nguyen Van An
Hop le!!!
29
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Bài tập: Nhập vào một chuỗi ký tự làm mật khẩu cho chương trình.
Yêu cầu:
- Mật khẩu có tối thiểu 8 ký tự;
- Bao gồm: chữ cái, chữ số, chữ viết hoa và viết thường.
Nếu chuỗi mật khẩu không hợp lệ thì yêu cầu nhập lại.
Ví dụ:
abc123 ---> Không hợp lệ
aaaaa111111 ---> Không hợp lệ
aaaaBBBBBB ---> Không hợp lệ
1111111111 ---> Không hợp lệ
AAAAA111111 ---> Không hợp lệ
aaaAA111111 ---> Hợp lệ
30
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 130
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức startswith(str), endswith(str)
startswith(str): Trả về True nếu chuỗi bắt đầu bởi chuỗi str;
endswith(str): Trả về True nếu chuỗi kết thúc bởi chuỗi str, còn lại trả về False;
Có phân biệt chữ hoa và chữ thường
Ví dụ:
31
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 131
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức startswith(str), endswith(str)
Ví dụ: Viết hàm checkstring(st1,st2,st3) kiểm tra chuỗi st1 là hợp lệ nếu bắt đầu
bằng st2 hoặc kết thúc bằng st3. Hợp lệ thì hàm trả về True, còn lại trả về False.
TEST 1:
st1="Python Programming"
st2="Py"
st3="ming"
--> True
TEST 2:
st1="Python Programming"
st2="PY"
st3="MING"
--> False
32
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 131
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức join(ListOfString)
join(ListOfString): ListOfString là một List gồm các chuỗi ký tự. join() dùng để
nối các phần tử trong ListOfString bằng một chuỗi tương ứng của phương thức;
Ví dụ:
33
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 132
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức split()
split(str): dùng để tách mỗi từ nằm trong chuỗi tương ứng thành một list, mỗi
phần tử nằm trong list là một chuỗi con;
Ví dụ:
Không có tham số str
Có tham số str
34
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 132
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Ví dụ: sử dụng phương thức split() để tách mỗi dòng trong một đoạn văn bản
thành các phần tử của một List.
35
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 132
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Ví dụ: Nhập một dãy các số nguyên, mỗi số nguyên cách nhau đúng 1 dấu cách.
In lên màn hình tổng của các số nguyên đã nhập.
S=0
for x in L:
S+= x
print("Tong=",S)
36
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 132
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Bài tập: Cho đoạn văn bản như sau:
“--Người---đâu-gặp---gỡ-làm-chi---
Trăm----năm-biết-có---duyên---gì--hay--không.
Ngổn-ngang---trăm-mối---bên---lòng----
----Nên-câu---tuyệt--diệu-ngụ-trong-tính-tình.”
37
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 132
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức rjust(n,ch), ljust(n,ch), center(n,ch)
Trả về một chuỗi mới khi thêm vào chuỗi gốc các ký tự ch, sao cho chiều dài của
chuỗi đúng bằng n ký tự và chuỗi gốc được đặt nằm bên phải (rjust()), bên trái
(ljust()) hoặc ở giữa (center());
Ví dụ: trường hợp không có tham số ch
38
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 133
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức rjust(n,ch), ljust(n,ch), center(n,ch)
Trả về một chuỗi mới khi thêm vào chuỗi gốc các ký tự ch, sao cho chiều dài của
chuỗi đúng bằng n ký tự và chuỗi gốc được đặt nằm bên phải (rjust()), bên trái
(ljust()) hoặc ở giữa (center());
39
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 133
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức rjust(n,ch), ljust(n,ch), center(n,ch)
Trả về một chuỗi mới khi thêm vào chuỗi gốc các ký tự ch, sao cho chiều dài của
chuỗi đúng bằng n ký tự và chuỗi gốc được đặt nằm bên phải (rjust()), bên trái
(ljust()) hoặc ở giữa (center());
Ví dụ:
40
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 133
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức rjust(n,ch), ljust(n,ch), center(n,ch)
Ví dụ: Viết chương trình nhập vào tên và số lượng của 4 một mặt hàng bất kỳ, in lên màn
hình bảng thực đơn theo mẫu sau.
41
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức strip(str), rstrip(str), and lstrip(str)
Trả về một chuỗi mới trong đó đã xóa các ký tự có trong chuỗi str ở 2 đầu
(strip()), bên phải (rstrip()) hoặc bên trái (lstrip()) chuỗi gốc.
Ví dụ: trường hợp không có tham số str
42
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 135
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức strip(str), rstrip(str), and lstrip(str)
Trả về một chuỗi mới trong đó đã xóa các ký tự có trong chuỗi str ở 2 đầu
(strip()), bên phải (rstrip()) hoặc bên trái (lstrip()) chuỗi gốc.
Ví dụ: trường hợp có tham số str
Lưu ý:
- Có phân biệt chữ hoa và thường
- Không làm thay đổi giá trị của chuỗi gốc
43
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 135
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức strip(str), rstrip(str), and lstrip(str)
Ví dụ:
(1) ???
(2) ???
(3) ???
(1) ???
(2) ???
(3) ???
44
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 135
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức find(str,n)
Thực hiện tìm chuỗi str trong chuỗi gốc, bắt đầu từ ký tự có số chỉ mục n, n
để trống thì mặc định bằng 0.
Trả về vị trí (index) lần đầu được tìm thấy (từ trái sang phải). Nếu không tìm
thấy thì trả về -1.
Ví dụ:
45
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 79
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức find(str,n)
Ví dụ: tách domain xuất hiện trong một chuỗi văn bản.
46
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 80
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức replace(oldvalue, newvalue, n)
Tìm và thay thế các chuỗi oldvalue xuất hiện trong chuỗi gốc bằng newvalue, với
n lần tìm và thay thế;
Nếu không có n: thì mặc định là tất cả các lần xuất hiện.
Ví dụ:
string = "geeks for geeks geeks geeks geeks"
print(string.replace("geeks", "Geeks"))
print(string.replace("geeks", "GeeksforGeeks", 3))
47
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 79
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Phương thức replace(oldvalue, newvalue, n)
Bài tập:
- Nhập vào 3 xâu st1, st2, st3;
- In lên màn hình vị trí (index) đầu tiên st2 xuất hiện trong st1;
- Thay thế tất cả các xâu st2 bằng st3;
- In lên màn hình xâu kết quả.
Ví dụ:
st1=Toi hoc python, python la NNLT manh
st2=python
st3=Python
Vi tri xuat hien st2: 8
Xau ket qua: Toi hoc Python, Python la NNLT manh
48
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept. Nguồn: Python for Everybody Book – Page 79
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
Định dạng %
Dùng để nối chuỗi theo phương pháp tham số.
Các loại định dạng:
- %d: dữ liệu kiểu số nguyên (decimal);
- %g: dữ liệu kiểu số thực;
- %s: dữ liệu kiểu chuỗi (string);
Ví dụ:
n_decimal=3
n_float=2.5
st="Python"
print("Toi da hoc " + st + " lan thu " + str(n_decimal) + ", trong " + str(n_float) + " nam")
print("Toi da hoc %s lan thu %d, trong %g nam" % (st,n_decimal,n_float))
49
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
TOÁN TỬ VÀ PHƯƠNG THỨC XỬ LÝ CHUỖI
50
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
ÔN TẬP
Bài 7.1 Cho biết kết quả khi thực hiện các đoạn code sau:
a.
b.
c.
d.
Bài 7.2 Cho biết kết quả khi thực hiện các đoạn code sau:
a.
b.
c.
Bài 7.3 Cho biết kết quả khi thực hiện các đoạn code sau:
a.
b.
51
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
ÔN TẬP
Bài 7.4 Xây dựng một hàm có đầu vào là một chuỗi bất kỳ, đầu ra là 2 chuỗi, trong đó chuỗi 1
được viết thường toàn xâu, chuỗi 2 được viết hoa toàn xâu.
Input:
Learning Python
Output:
learning python
LEARNING PYTHON
Bài 7.5 Viết chương trình cho phép nhập vào một chuỗi bất kỳ, đếm số chữ cái và chữ số trong
câu đó và in kết quả ra màn hình.
Input:
Python $ Programming Class 2021
Output:
Chu cai: 22
Chu so: 4
52
Bài giảng CƠ SỞ LẬP TRÌNH - Nguyễn Thành Thủy, MIS Dept.
BÀI GIẢNG
CƠ SỞ LẬP TRÌNH
CHƯƠNG 8.
2
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỞ FILE
Cú pháp:
file_object = open(filename, mode)
file_object: tên biến
filename: tên file cần mở (bao gồm đường dẫn)
mode: chế độ mở file
3
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỞ FILE
Cú pháp:
mode:
Mode Description
Read - Default value. Opens a file for reading, error if the
r
file does not exist
Write - Opens a file for writing, creates the file if it does
w
not exist
Create - Creates the specified file, returns an error if the
x
file exists
Append - Opens a file for appending, creates the file if it
a
does not exist
t Text - Default value. Text mode
b Binary - Binary mode (e.g. images)
r+ Opens a file for updating (reading and writing)
4
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỞ FILE
Ví dụ:
f1 = open("test.txt") # equivalent to 'r' or 'rt'
f2 = open("test.txt",'w') # Write in Text mode
f3 = open("img.bmp",'r+b') # Read and Write in Binary mode
# Hoặc
f = open("test.txt", mode=‘w')
5
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỞ FILE
Mở file với cấu trúc with … as
Không cần sử dụng lệnh đóng file
Ví dụ:
with open("test.txt", encoding = 'utf-8') as f:
# perform file operations here …
6
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỞ FILE
Ví dụ: ghép cột A và B
A. Lệnh B. Mô tả
7
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐÓNG FILE
Cú pháp: file_object.close()
Ví dụ: đóng file được mở bởi thẻ file f
f.close()
8
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GHI FILE
Cú pháp: file_object.write(string)
Ví dụ: mở và ghi đè nội dung vào file test.txt
f=open("test.txt",'w')
f.write("my first file\n")
f.write("This file\n\n")
f.write("contains three lines\n")
f.close()
test.txt
my first file
This file
9
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GHI FILE
Cú pháp: file_object.writelines(List)
Ví dụ: ghi các phần tử trong List vào file test.txt
L=["Đường về nhà là vào tim ta\n","Dẫu nắng mưa gần
xa\n","Thất bát, vang danh\n","Nhà vẫn luôn chờ ta\n"]
f=open("test.txt","w",encoding="utf-8")
f.writelines(L)
test.txt
10
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
GHI FILE
Ghi file sử dụng cấu trúc with … as
Ví dụ: mở và ghi đè nội dung vào file test.txt
with open("test.txt",'w',encoding = 'utf-8') as f:
f.write("my first file\n")
f.write("This file\n\n")
f.write("contains three lines\n")
11
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỌC FILE
Cú pháp: file_object.read([size])
size: số bytes/ký tự cần đọc. Mặc định size=0 đọc
toàn bộ file.
Đường về nhà
12
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỌC FILE
Ví dụ: Đọc toàn bộ nội dung file test.txt
f=open("test.txt","r", encoding="utf-8")
st=f.read()
print(st)
f.close()
Đường về nhà là vào tim ta
Dẫu nắng mưa gần xa
Thất bát, vang danh
Nhà vẫn luôn chờ ta
Đường về nhà là vào tim ta
Dẫu có muôn trùng qua
Vật đổi, sao dời
Nhà vẫn luôn là nhà
13
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỌC FILE
Ví dụ: Sử dụng cấu trúc lặp để duyệt nội dung file,
đếm số dòng trong file.
f=open("test.txt",'r',encoding = 'utf-8')
dem=0
for row in f:
dem=dem+1
print(dem)
f.close()
14
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỌC FILE
Cú pháp: file_object.readline([size])
size: số bytes/ký tự cần đọc. Mặc định size=0 đọc
1 dòng.
Nội dung bao gồm mã xuống dòng \n.
f=open("test.txt",'r',encoding = 'utf-8')
st=f.readline()
print("Dòng 1:",st)
st=f.readline() Dòng 1: Đường về nhà là vào tim ta
print("Dòng 2:",st)
Dòng 2: Dẫu nắng mưa gần xa
f.close()
15
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
ĐỌC FILE
Cú pháp: file_object.readlines()
size: số bytes/ký tự cần đọc. Mặc định size=0 đọc
toàn bộ file.
Nội dung bao gồm mã xuống dòng \n.
['Đường về nhà là vào tim ta\n', 'Dẫu nắng mưa gần xa\n', 'Thất bát, vang
danh\n', 'Nhà vẫn luôn chờ ta\n', 'Đường về nhà là vào tim ta\n', 'Dẫu có
muôn trùng qua\n', 'Vật đổi, sao dời\n', 'Nhà vẫn luôn là nhà']
16
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
XÓA FILE
Ví dụ: xóa file test.txt
import os # Khai báo thư viện
os.remove("test.txt") # xóa file
17
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỘT SỐ PHƯƠNG THỨC XỬ LÝ FILE
file_object.readable()
Trả về True nếu file cho phép đọc, còn lại trả về
False.
f=open("test.txt","w",encoding="utf-8")
if f.readable():
print("First line:",f.readline())
else:
print("Can not read!")
18
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
MỘT SỐ PHƯƠNG THỨC XỬ LÝ FILE
file_object.writable()
Trả về True nếu file cho phép ghi, còn lại trả về
False.
f=open("test.txt","r",encoding="utf-8")
if f.writable():
f.write("OK!")
else:
print("Can not write!")
19
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
LÀM VIỆC VỚI THƯ VIỆN OS
os.getcwd()
Trả về đường dẫn thư mục hiện hành
os.chdir(strPath)
Chuyển đến thư mục strPath
os.makedirs(strPath)
Tạo thư mục có đường dẫn strPath
20
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
LÀM VIỆC VỚI THƯ VIỆN OS
os.path.exists(strPath)
Trả về True nếu đường dẫn tồn tại
os.path.isdir(strPath)
Trả về True nếu strPath là một đường dẫn
os.path.isfile(strPath)
Trả về True nếu strPath là một file
21
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 180
LÀM VIỆC VỚI THƯ VIỆN OS
Đường dẫn tương đối và tuyệt đối
22
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept. Nguồn: Automate the Boring Stuff with Python Book – Page 176
LÀM VIỆC VỚI THƯ VIỆN OS
Đường dẫn tương đối và tuyệt đối
Ví dụ: viết lệnh thực hiện
Giả sử thư mục hiện hành là C:\
1. Xem thư mục hiện hành
2. Chuyển đến Part2
3. Chuyển đến Chapter3
4. Sử dụng đường dẫn tương đối
để mở file test1.txt
5. Sử dụng đường dẫn tuyệt đối
để mở file test1.txt
23
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP
Thư mục hiện hành là C:\Chapter1.
24
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP
Thư mục hiện hành là C:\Chapter1.
25
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.
BÀI TẬP NHÓM
Project 1. Generating random Quiz files
Tài liệu “Automate the Boring Stuff with Python Book”
– Trang 186
Project 2. Multiclipboard
Tài liệu “Automate the Boring Stuff with Python Book”
– Trang 191
26
Bài giảng CƠ SỞ LẬP TRÌNH - Trần Thị Thu Thảo, MIS Dept.