You are on page 1of 114

LẬP TRÌNH PYTHON

TRONG PHÂN TÍCH DỮ LIỆU


TỔNG QUAN VỀ
NGÔN NGỮ LẬP TRÌNH PYTHON

TS. TRỊNH HOÀNG NAM


GIỚI THIỆU
• Python 1 (1989)
• Python 2 (2000)
Bài 0: Tổng quan về Python

• Python 3 (2008)
– Hiện đã có Python 3.10

• Python 4 (dự kiến 2023)

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Python
– Ngôn ngữ có mã nguồn mở
Bài 0: Tổng quan về Python

– Ngôn ngữ kịch bản


• Thích hợp với DevOps
• Khai báo biến tự nhiên, phong phú và động
• Nhiều phép tính cấp cao được cung cấp sẵn
• Thường được thông dịch thay vì biên dịch

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Python
– Ngôn ngữ lai
Bài 0: Tổng quan về Python

– Hỗ trợ module và hỗ trợ package


– Xử lý lỗi bằng ngoại lệ
– Kiểu dữ liệu động ở mức cao
– Có thể nhúng vào ứng dụng như một giao tiếp kịch bản
– Có khả năng tương tác với các module viết bằng NNLT
khác

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Ưu điểm của Python
– Cú pháp đơn giản, dễ đọc
Bài 0: Tổng quan về Python

– Mã ngắn gọn hơn so với các NNLT khác


– Có các bộ thư viện chuẩn, module ngoài
– Chạy được trên nhiều nền tảng
– Cộng đồng lập trình lớn, hệ thống thư viện đầy đủ, mã
nguồn chia sẻ nhiều

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Nhược điểm của Python
– Chương trình chạy chậm
Bài 0: Tổng quan về Python

– Giao tiếp khó khăn với thư viện viết bằng NNLT khác
– Yếu trong hỗ trợ tính toán trên di động
– Cách viết khối lệnh dễ gây nhầm lẫn
– Gỡ lỗi đòi hỏi kinh nghiệm
– Ít hỗ trợ các cơ sở dữ liệu

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TẢI VÀ CÀI ĐẶT PYTHON
• Trong Windows 10, mở Microsoft Store
– Nhập từ khóa Python vào thành Tìm kiếm (Search)
– Chọn Python 3.10 (Apps-Developer)
Bài 0: Tổng quan về Python

– Nhấn nút Get trong Giao diện chi tiết về Python để tải và tự động
cài đặt
• Sau khi cài đặt xong
– Nhấn tổ hợp phím Windows + R và gõ lệnh cmd
– Trong giao diện DOS Commander, gõ dòng lệnh python -V để
kiểm tra phiên bản cài đặt
– Tiếp tục, nhập câu lệnh sau đây để cài đặt thư viện pip install
<library name>
– Các thư viện cần thiết: numpy, pandas, matplotlib, seaborn, plotly,
basemap, sklearn, statsmodels, ...

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỬ DỤNG COLABORATORY
• Sử dụng tài khoản Gmail buh.edu.vn (sinh viên)
• Truy cập Google Drive, tạo thư mục DataScience
Bài 0: Tổng quan về Python

• Vào thư mục DataScience, tạo mới document dạng


Google colaborary (trình soạn thảo ngôn ngữ
Python)

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

BIẾN VÀ PHÉP TOÁN

TS. TRỊNH HOÀNG NAM


NỘI DUNG
• Biến, lệnh gán
• Các phép toán, biểu thức
Bài 0: Tổng quan về Python

• Các kiểu dữ liệu cơ bản


• Chuyển đổi kiểu chuỗi – số

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
HẰNG (Constant)
• Giá trị cố định như là số, ký tự, chuỗi được gọi là
hằng vì giá trị của chúng không thể thay đổi
Bài 0: Tổng quan về Python

• Hằng ký tự được xác định bởi cặp nháy đơn ‘’


• Hằng chuỗi được xác định bởi cặp nháy đơn ‘’ hoặc
nháy kép “

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TỪ KHÓA
• Từ khóa được dành riêng cho ngôn ngữ, không thể
dùng để đặt tên định danh
Bài 0: Tổng quan về Python

False class return is finally


None if for lambda continue
True def from while nonlocal
and del global not with
as elif try or yield
assert else import pass
break except in raise

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIẾN (VARIABLES)
• Biến là đại lượng lưu trữ dữ liệu, khi khai báo biến,
chương trình yêu cầu máy tính cấp cho biến vị trí trong
bộ nhớ để chứa dữ liệu.
Bài 0: Tổng quan về Python

• Mỗi biến sau khi khai báo chỉ có một địa chỉ duy nhất,
và giá trị tại đó (hay giá trị của biến) có thể thay đổi
trong thời gian tồn tại của nó.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
QUY TẮC ĐẶT TÊN BIẾN
• Tên biến chỉ bao gồm ký chữ, ký số và dấu _
• Tên biến phải bắt đầu bởi ký chữ hoặc dấu _
Bài 0: Tổng quan về Python

• Tên biến phân biệt HOA, thường


Good: spam eggs spam23 _speed
Bad: 23spam #sign var.12
Different: spam Spam SPAM

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÂU LỆNH & DÒNG LỆNH
Bài 0: Tổng quan về Python

x = 2 Lệnh gán
x = x + 2 Lệnh gán với biểu thức
print(x) Lệnh in

Biến Toán tử Hằng Hàm

TS. Trịnh Hoàng Nam


LỆNH GÁN (ASSIGNMENT)
• Lệnh gán (=) được dùng để gán giá trị ở vế phải
cho biến ở vế trái
• Tính toán giá trị của biểu thức ở vế phải và gán giá
Bài 0: Tổng quan về Python

trị này cho biến ở vế trái của lệnh gán (=)

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIỂU THỨC SỐ HỌC

Toán tử Mô tả
+ Cộng
Trừ
Bài 0: Tổng quan về Python

-
* Nhân
** Lũy thừa
/ Chia
% Chia lấy dư
// Chia lấy nguyên

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
THỨ TỰ ƯU TIÊN CÁC TOÁN TỬ

x = 1 + 2 * 3 - 4 / 5 ** 6
Bài 0: Tổng quan về Python

Cuối cùng, x có kết quả bao nhiêu? 6.999744

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
THỨ TỰ ƯU TIÊN CÁC TOÁN TỬ
• Quy tắc ưu tiên các toán tử
– Ưu tiên tính toán biểu thức trong cặp ngoặc đơn ()
Bài 0: Tổng quan về Python

– Toán tử lũy thừa


– Toán tử nhân, chia, chia lấy dư
– Cộng, trừ
– Trái sang phải

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
KIỂU DỮ LIỆU
• Biến, hằng có kiểu dữ liệu (type)
• Python tự phân biệt số nguyên và chuỗi ký tự
Bài 0: Tổng quan về Python

• Ví dụ: “+” là toán tử cộng nếu áp dụng với các số,


là toán tử ghép nếu áp dụng với các chuỗi

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỐ NGUYÊN VÀ SỐ THỰC
• Số có hai loại chính
– Số nguyên: -14, -2, 0, 1, 100
Bài 0: Tổng quan về Python

– Số thực: -2.5 , 0.0, 14.0

• Bên cạnh đó, còn có một số


loại số khác

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CHUYỂN ĐỔI KIỂU DỮ LIỆU
• Khi số nguyên và số thực
cùng xuất hiện trong biểu
thức, số nguyên sẽ tự
Bài 0: Tổng quan về Python

động chuyển đổi sang số


thực.
• Một số hàm chuyển kiểu
int() và float()
• Phép chia số nguyên cho
kết quả là số thực 

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CHUYỂN ĐỔI KIỂU DỮ LIỆU
• Sử dụng int() và float() để chuyển giữa chuỗi và số
• Lỗi phát sinh nếu chuỗi chứa ký tự không phải là
Bài 0: Tổng quan về Python

số 

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGƯỜI DÙNG NHẬP LIỆU
• Sử dụng hàm input() để yêu cầu Python dừng và
đọc dữ liệu từ bàn phím
Bài 0: Tổng quan về Python

• Hàm input() trả về một chuỗi

(Ví dụ 1-Chương 2)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CHUYỂN ĐỔI DỮ LIỆU NHẬP
• Chuyển đổi dữ liệu từ dạng chuỗi nhập từ bàn phím
sang dạng số, nếu cần
Bài 0: Tổng quan về Python

(Ví dụ 2-Chương 2)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CHÚ THÍCH TRONG PYTHON
• Nội dung đặt sau dấu # đều là chú thích
• Lý do dùng chú thích
Bài 0: Tổng quan về Python

– Mô tả hoạt động của chương trình


– Giới thiệu tác giả hoặc các thông tin bổ sung
– Thể hiện đầu vào, đầu ra của chương trình

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

CÁC CẤU TRÚC ĐIỀU KHIỂN

TS. TRỊNH HOÀNG NAM


CẤU TRÚC IF

x=5
Bài 0: Tổng quan về Python

Đúng
x < 10?
Sai print(‘Smaller’)

Đúng
x > 20?
Sai print(‘Bigger’)

print(‘Finish’)
(Ví dụ 1-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TOÁN TỬ SO SÁNH
Bài 0: Tổng quan về Python

(Ví dụ 2-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÂU LỆNH IF THIẾU

Đúng
x = = 5?
Bài 0: Tổng quan về Python

Sai print(‘Is 5’)

print(‘Still 5’)

print(‘Third 5’)

(Ví dụ 3-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CANH LỀ
• Canh lề (thụt vào) sau câu lệnh if hoặc lệnh for
– Xác định khối lệnh đi kèm với câu lệnh liền trước nó
Bài 0: Tổng quan về Python

– Các câu lệnh cùng khối thụt lề cùng mức và liên tục

• Trong khối lệnh xác định bởi canh lề không bao


gồm dòng trống hoặc dòng chú thích

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CANH LỀ
Bài 0: Tổng quan về Python

(Ví dụ 4-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CẤU TRÚC IF LỒNG
x>1?

print(‘More than 1’)


Bài 0: Tổng quan về Python

x < 10 ?

print(‘Less than 10’)

print(‘All done’)

(Ví dụ 5-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CẤU TRÚC IF ĐẦY ĐỦ
x=4

x>2?
Bài 0: Tổng quan về Python

print(‘Not bigger’) print(‘Bigger’)

print(‘All done’)

(Ví dụ 6-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA NẾU ...
• Chúng ta thực hiện lặp đi lặp lại một số hành động
giống hệt nhau
– Nhập các chuỗi ký tự từ bàn phím và xuất chúng ra màn
Bài 0: Tổng quan về Python

hình cho đến khi nhập vào chuỗi ‘done’.


– Nhập 10 nguyên số từ bàn phím và xuất ra màn hình số
có giá trị lớn nhất.
– Nhập một số nguyên dương từ bàn phím và xuất ra
màn hình tất cả số nguyên tố nhỏ hơn số đã nhập.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
n=5

No Yes
n>0?
Bài 0: Tổng quan về Python

print(n)

n=n-1

print(‘All done’)

Vòng lặp thường có (các) biến lặp với giá


trị thay đổi sau mỗi lần lặp. Một trong biến
lặp thông dụng là biến đếm (đếm số lần lặp).
(Ví dụ 11-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
n=5

No Yes
n>0?
Bài 0: Tổng quan về Python

print(n)

n=n-1

print(‘All done’)

Vòng lặp với biến đếm số lần lặp (n=5), còn


gọi là vòng lặp có số lần lặp xác định.
(Ví dụ 11-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
n=5

No Yes
n>0?
Bài 0: Tổng quan về Python

print(‘Lather’)

print(‘Rinse’)

print(‘All done’)

Vòng lặp vô tận hay vòng lặp không dừng

(Ví dụ 12-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
n=0

No Yes
n>0?
Bài 0: Tổng quan về Python

print(‘Lather’)

print(‘Rinse’)

print(‘All done’)

Vòng lặp không thực hiện

(Ví dụ 13-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
Bài 0: Tổng quan về Python

Điều kiện lặp / dừng

Vòng lặp không có biến đếm số lần lặp, không xác định số lần lặp.
Câu lệnh break giúp thoát khỏi cấu trúc lặp while; lệnh này chỉ được thực hiện
khi điều kiện trong câu lệnh if thỏa mãn.

Q Lưu đồ khối của đoạn mã trên là gì?


(Ví dụ 14-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
Bài 0: Tổng quan về Python

Kết thúc lần lặp hiện hành, chuyển sang lần lặp tiếp theo

Vòng lặp không có biến đếm số lần lặp, không xác định số lần lặp.
Câu lệnh continue giúp kết thúc khối lệnh lặp hiện hành để chuyển sang lần lặp
tiếp theo; lệnh này chỉ được thực hiện khi điều kiện trong câu lệnh if thỏa mãn.

Q Lưu đồ khối của đoạn mã trên là gì?


(Ví dụ 15-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA VỚI ĐOẠN CODE SAU?
Hành động lặp
Bài 0: Tổng quan về Python

Điều kiện dừng

(Ví dụ 15-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TRƯỜNG HỢP ĐẶC BIỆT ...

Yes No
Done?
Bài 0: Tổng quan về Python

Move i ahead

print(i)

print(‘All done’)
Cấu trúc lặp với các giá trị lặp được liệt kê trong dãy
hoặc tập hợp.

(Ví dụ 16-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÔNG THỨC CHO CẤU TRÚC LẶP FOR
Các hành động trước lặp, bao
gồm khởi tạo các giá trị cho biến
Bài 0: Tổng quan về Python

Khối lệnh chứa các


hành động được lặp Tra cứu kết quả sau khi kết thúc
với mỗi giá trị trong lặp
dãy liệt kê

(Ví dụ 17-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: TÌM GIÁ TRỊ LỚN NHẤT TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 18-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: ĐẾM SỐ PHẦN TỬ TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 19-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: TÍNH TỔNG CÁC PHẦN TỬ TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 20-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: TRUNG BÌNH CÁC PHẦN TỬ TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 21-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: LỌC CÁC PHẦN TỬ TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 22-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
VÍ DỤ: TÌM GIÁ TRỊ NHỎ NHẤT TRONG DÃY
Bài 0: Tổng quan về Python

(Ví dụ 23-Chương 3)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

HÀM

TS. TRỊNH HOÀNG NAM


ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Bạn có nhận xét gì về đoạn chương trình trên?


Sự lặp đi lặp lại (không liên tục) một số câu lệnh
Điều gì xảy ra nếu bạn muốn ghi là Fan thay vì Fun?
(Ví dụ 1-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIẢI PHÁP LÀ GÌ ...
Greeting():
Bài 0: Tổng quan về Python

Bạn có nhận xét gì về đoạn chương trình trên?

Sự lặp đi lặp lại một số câu lệnh không xảy ra

Điều gì xảy ra nếu bạn muốn ghi là Fan thay vì Fun?


(Ví dụ 2-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIẢI PHÁP LÀ GÌ ...

Hàm
Bài 0: Tổng quan về Python

Định nghĩa hàm

Lời gọi hàm

(Ví dụ 2-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
HAI LOẠI HÀM TRONG PYTHON
Bài 0: Tổng quan về Python

Hàm người dùng định nghĩa


Định nghĩa trước, sử dụng sau đó

Hàm định nghĩa sẵn


Có sẵn trong Python, chỉ việc sử dụng

(Ví dụ 2-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỊNH NGHĨA HÀM
Từ khai báo HÀM
Tên hàm, là một định danh
Bài 0: Tổng quan về Python

Danh sách tham số

Khối lệnh định nghĩa hàm

Trả về kết quả (Ví dụ 2-Chương 4)


… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỊNH NGHĨA VÀ GỌI HÀM

Hàm max có một tham số


và có kết quả trả về là ký tự
Bài 0: Tổng quan về Python

Gọi hàm max phải cung cấp


một giá trị đầu vào và cần
một biến chứa kết quả trả về

‘Hello Nam’ ‘w’


input output
max
function
(Ví dụ 3-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Bạn có nhận xét gì về đoạn chương trình trên?

(Ví dụ 4-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Bạn có nhận xét gì về đoạn chương trình trên?

(Ví dụ 5-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Bạn có nhận xét gì hàm và lời gọi hàm?


Hàm không có tham số, không có giá trị trả về
(Ví dụ 5-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...

Tham số (parameter)
Bài 0: Tổng quan về Python

Đối số (argument)

Bạn có nhận xét gì hàm và lời gọi hàm?


Hàm có một tham số, không có giá trị trả về
(Ví dụ 6-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...

Tham số (parameter)

Trả về giá trị


Bài 0: Tổng quan về Python

Lời gọi hàm kèm đối số

Bạn có nhận xét gì hàm và lời gọi hàm?


Hàm có một tham số, có giá trị trả về
(Ví dụ 7-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Bạn có nhận xét gì cách định nghĩa và sử dụng hai hàm này?
(Ví dụ 6,7-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Làm thế nào để cải tiến các hàm trên đề đạt kết quả sau:

(Ví dụ 6,7-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

Theo bạn, phương án nào hiệu quả hơn, tại sao?

(Ví dụ 8,9-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐIỀU GÌ XẢY RA ...
Bài 0: Tổng quan về Python

(Ví dụ 10-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIẾN VÀ TẦM ẢNH HƯỞNG
Biến toàn cục

Biến cục bộ
Bài 0: Tổng quan về Python

Tham số

Có ba đại lượng lưu trữ giá trị: biến toàn cục, biến cục bộ và
tham số với tầm ảnh hưởng khác nhau
(Ví dụ 11-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIẾN VÀ TẦM ẢNH HƯỞNG
Bài 0: Tổng quan về Python

Biến toàn cục có thể khai báo trước, sau khai báo hàm

(Ví dụ 11,12-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIẾN VÀ TẦM ẢNH HƯỞNG
Biến toàn cục có thể khai báo trước, sau khai báo hàm,
nhưng không được khai báo sau lời gọi hàm có sử dụng nó
Bài 0: Tổng quan về Python

(Ví dụ 13-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
BIẾN VÀ TẦM ẢNH HƯỞNG
Biến cục bộ chỉ có hiệu lực bên trong phạm vi khai báo nó
Bài 0: Tổng quan về Python

(Ví dụ 12,14-Chương 4)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

XỬ LÝ NGOẠI LỆ

TS. TRỊNH HOÀNG NAM


NGOẠI LỆ
• Lỗi chương trình
– Lỗi khi viết chương trình
Bài 0: Tổng quan về Python

• Làm cho chương trình không chạy được (thông dịch) hoặc
không dịch được (biên dịch) hoặc chương trình chạy được
nhưng không cho kết quả như mong đợi

– Lỗi khi chạy chương trình


• Làm chương trình không chạy được do dữ liệu nhập không
đúng như yêu cầu

– Ngoại lệ
• Một chức năng nào đó không chạy được do chương trình không
xử lý hết các khả năng có thể xảy ra
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGOẠI LỆ
• Lỗi chương trình trong Python
– Lỗi cú pháp (Syntax error)
Bài 0: Tổng quan về Python

• Sai cú pháp, khiến chương trình thông dịch không dịch được

– Ngoại lệ (Exception)
• Xảy ra bất thường không như thiết kế

Xử lý ngoại lệ làm cho chương trình ổn định và hoạt động


tốt trong mọi tình huống

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGOẠI LỆ
• Ví dụ lỗi cú pháp
Bài 0: Tổng quan về Python

• Ví dụ ngoại lệ Làm sao để đảm bảo phép


chia chỉ thực hiện khi y nhận
giá trị số khác 0?

(Ví dụ 1-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
XỬ LÝ NGOẠI LỆ
• Đảm bảo giá trị nhập (x) phải là một số
Bài 0: Tổng quan về Python

(Ví dụ 2-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
XỬ LÝ NGOẠI LỆ
• Đảm bảo giá trị nhập (y) phải là số khác 0 và thực
hiện phép chia 1/y
Bài 0: Tổng quan về Python

Nơi phát sinh và nơi xử lý lỗi

Nơi phát sinh và nơi xử lý lỗi

(Ví dụ 3-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
XỬ LÝ NGOẠI LỆ
• Các thành phần của cấu trúc try ... except ...
Bài 0: Tổng quan về Python

Khối xử lý nếu có lỗi

Khối xử lý nếu không có lỗi

Khối dọn dẹp, có lỗi lẫn không có lỗi

(Ví dụ 4-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
XỬ LÝ NGOẠI LỆ
Bài 0: Tổng quan về Python

(Ví dụ 5-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
AssertionError Xảy ra khi câu lệnh assert thất bại.
AttributeError Xảy ra khi gán thuộc tính hoặc tham chiếu thất bại.
Bài 0: Tổng quan về Python

EOFError Xảy ra khi hàm input () chạm vào điều kiện end-of-file.
Xảy ra khi một số thực dấy phẩy động thực thi không thành
FloatingPointError
công
GeneratorExit Xảy ra khi phương thức close() của hàm generator được gọi.
ImportError Xảy ra khi không tìm thấy module được import.
Xảy ra khi một chỉ số trong chuỗi (sequence) nằm ngoài phạm
IndexError
vi.
Xảy ra khi không tìm thấy khóa ánh xạ (từ điển) trong tập hợp
KeyError
các khóa hiện có.
Xảy ra khi người dùng nhấn phím ngắt (thông thường là Ctrl-C
KeyboardInterrupt
hoặc Delete).

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra khi một operation hết bộ nhớ nhưng tình huống vẫn
MemoryError
có thể được sửa chữa (bằng cách xóa một số đối tượng).
Xảy ra khi không tìm thấy tên cục bộ hoặc toàn cầu của
Bài 0: Tổng quan về Python

NameError
biến.
Xảy ra bằng các phương thức trừu tượng khi chúng yêu
NotImplementedError
cầu các lớp dẫn xuất ghi đè phương thức.
OSError Xảy ra khi một hàm trả về lỗi liên quan đến hệ thống
Xảy ra khi kết quả của phép toán số học quá lớn không thể
OverflowError
biểu diễn.
Xảy ra khi một proxy tham chiếu yếu sử dụng để truy cập
ReferenceError
một thuộc tính của tham chiếu sau khi thu thập rác.
Xảy ra khi phát hiện thấy lỗi không thuộc bất kỳ danh mục
RuntimeError
nào khác.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra bằng phương thức next() của một vòng lặp để báo
StopIteration
hiệu rằng không có giá trị nào được trả về bởi iterator.
SyntaxError Xảy ra khi gặp lỗi cú pháp.
Bài 0: Tổng quan về Python

IndentationError Xảy ra khi có lỗi thụt lề không chính xác.


Xảy ra khi thụt lề sử dụng các tab và dấu cách không nhất
TabError
quán.
Xảy ra khi trình thông dịch tìm thấy các lỗi nội bộ nhưng
SystemError
tình hình không quá nghiêm trọng.
SystemExit Xảy ra bởi hàm sys.exit().
Xảy ra khi một hàm hoặc phép thực thi (operation) áp dụng
TypeError
kiểu không chính xác cho một đối tượng.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra khi tham chiếu tạo thành một biến cục bộ trong một
UnboundLocalError hàm hoặc phương thức, nhưng không có giá trị nào bị ràng
buộc với biến đó.
Bài 0: Tổng quan về Python

UnicodeError Xảy ra khi có lỗi liên quan đến Unicode


Xảy ra khi lỗi liên quan đến Unicode diễn ra trong quá trình
UnicodeEncodeError
mã hóa.
Xảy ra khi lỗi liên quan đến Unicode diễn ra trong quá trình
UnicodeDecodeError
giải mã.
UnicodeTranslateError Xảy ra khi lỗi liên quan đến Unicode trong quá trình dịch.
Xảy ra khi một phép toán hoặc hàm nhận được một đối số
ValueError
có kiểu đúng nhưng giá trị không phù hợp
Xảy ra khi đối số thứ hai của phép chia hoặc phép toán
ZeroDivisionError
modulo bằng 0.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

LÀM VIỆC VỚI TẬP TIN

TS. TRỊNH HOÀNG NAM


QUY TRÌNH THỰC HIỆN
• Làm việc với tập tin trong python gồm 3 bước:
1. Mở file
Bài 0: Tổng quan về Python

2. Đọc/ghi file
3. Đóng file

• Các bước nói trên đều có thể phát sinh ngoại lệ


IOError

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ ĐÓNG TẬP TIN
• Mở file:
– f = open(filename, mode)
• Các chế độ mở file hay sử dụng:
Bài 0: Tổng quan về Python

– ‘r’: chỉ đọc


– ‘w’: chỉ ghi (và ghi đè)
– ‘a’: ghi vào cuối file
– ‘r+’: cả đọc và ghi
– ‘t’: mở file văn bản (mặc định)
– ‘b’: mở file nhị phân
• Đóng file:
– f.close()

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ ĐÓNG TẬP TIN
Bài 0: Tổng quan về Python

(Ví dụ 6-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ ĐÓNG TẬP TIN
• Mở và đóng tập tin sau khi sử dụng xong
Bài 0: Tổng quan về Python

Tập tin sau khi sử dụng xong sẽ đóng lại


(ngay cả khi có lỗi phát sinh trong quá trình thực hiện các thao tác)

(Ví dụ 7-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỌC VÀ GHI TẬP TIN
• Đọc tập tin
– read(x): đọc x byte tiếp theo, nếu không viết x thì sẽ đọc đến
cuối file
Bài 0: Tổng quan về Python

– readline(x): đọc 1 dòng từ file, tối đa là x byte, nếu không viết


x thì đọc tới khi nào gặp kí tự hết dòng hoặc hết file
– readlines(x): đọc các dòng cho đến hết file và trả về một
danh sách các string, nếu viết x thì sẽ đọc tối đa là x byte

• Ghi tập tin


– write(x): ghi x ra file, trả về số byte ghi được
– writelines(x): ghi toàn bộ nội dung x theo từng dòng, ở đây x
là list of string

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ GHI TẬP TIN VĂN BẢN
Bài 0: Tổng quan về Python

Mở tập tin ch6_08.txt trong thư mục hiện hành và ghi nội
dung với mã Unicode (ghi đè nếu tập tin này đã có)

(Ví dụ 8-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ ĐỌC TẬP TIN VĂN BẢN
Bài 0: Tổng quan về Python

Mở tập tin ch6_08.txt trong thư mục hiện hành và đọc


nội dung với mã mặc định (ASCII)

(Ví dụ 9-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
MỞ VÀ ĐỌC TẬP TIN VĂN BẢN
Bài 0: Tổng quan về Python

(Ví dụ 10-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỌC TẬP TIN
• Sử dụng phương thức read(size)
Bài 0: Tổng quan về Python

(Ví dụ 11-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỌC TẬP TIN
• Sử dụng phương thức read, tell và seek
Bài 0: Tổng quan về Python

(Ví dụ 12-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NGÔN NGỮ LẬP TRÌNH PYTHON

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

TS. TRỊNH HOÀNG NAM


NỘI DUNG
• Khái niệm lập trình hướng đối tượng
• Khái niệm lớp và đối tượng
Bài 0: Tổng quan về Python

• Lớp, đối tượng, thể hiện


• Sự kế thừa
• Sự đóng gói
• Tính đa hình

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Lập trình hướng đối tượng
– Object-oriented programming (OOP)
Bài 0: Tổng quan về Python

– Một kỹ thuật hỗ trợ, cho phép lập trình viên trực tiếp làm
việc với các đối tượng do chính họ định nghĩa
– Kỹ thuật này giúp tăng năng suất, đơn giản hoá việc
bảo trì cũng như mở rộng phần mềm

• OOP trong Python tập trung vào việc tạo code sử


dụng lại (DRY – don’t repeat yourself)

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
GIỚI THIỆU
• Các nguyên lý cơ bản của OOP
– Tính kế thừa (Inheritance)
Bài 0: Tổng quan về Python

• Một lớp (class) có thể kế thừa các thuộc tính và phương thức từ
các lớp khác đã được định nghĩa

– Tính đóng gói (Encapsulation)


• Trạng thái bên trong của một đối tượng được bảo vệ và tránh
truy cập được từ bên ngoài

– Tính đa hình (Polymorphism)


• Hai hoặc nhiều lớp có những phương thức giống nhau nhưng
có thể thực thi theo những cách thức khác nhau

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP & ĐỐI TƯỢNG
• Lớp (class), Đối tượng (object) là hai khái niệm cơ
bản của OOP
– Đối tượng (Object) là những thực thể tồn tại có đặc
Bài 0: Tổng quan về Python

điểm và hành vi.


• Đối tượng là một xe ô tô có đặc điểm tên hãng, màu sắc, loại
nguyên liệu, loại động cơ, ... ; có hành vi đi, dừng, nổ máy, rẽ
trái, rẽ phải, lùi, ...

– Lớp (Class) là một kiểu dữ liệu đặc biệt gồm nhiều


thuộc tính, phương thức do người dùng định nghĩa.
• Lớp xe ô tô có thuộc tính tên hãng, màu sắc, loại nguyên liệu,
loại động cơ, ... ; có phương thức đi, dừng, nổ máy, rẽ trái, rẽ
phải, lùi, ...
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP & ĐỐI TƯỢNG
Bài 0: Tổng quan về Python

Lớp là khuôn mẫu (template) của đối tượng


Đối tượng là thể hiện (instance) của lớp
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP VÀ ĐỐI TƯỢNG
• Vòng đời của đối tượng
– Khởi tạo (constructor)
Bài 0: Tổng quan về Python

– Sử dụng
– Hủy bỏ (destructor)

• Phương thức khởi tạo


– Dùng để thiết lập một số giá trị riêng khởi đầu khi đối
tượng được tạo ra
– Mặc định được gọi thực thi khi đối tượng được tạo ra

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP VÀ ĐỐI TƯỢNG
• Định nghĩa lớp Car với các thuộc tính và phương
thức khởi tạo
Bài 0: Tổng quan về Python

(Ví dụ 1-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP VÀ ĐỐI TƯỢNG
• Khai báo và khởi tạo các đối tượng thuộc lớp Car,
sử dụng phương thức khởi tạo
Bài 0: Tổng quan về Python

(Ví dụ 2-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
LỚP VÀ ĐỐI TƯỢNG
• Định nghĩa lớp Motor với các thuộc tính, phương
thức khởi tạo, và các phương thức khác
Bài 0: Tổng quan về Python

(Ví dụ 3-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
NẠP CHỒNG PHƯƠNG THỨC
• Python cho phép định nghĩa các phương thức trùng
tên, khác số lượng tham số, nhưng chỉ phương
thức cuối cùng là có giá trị sử dụng
Bài 0: Tổng quan về Python

(Ví dụ 4-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
ĐỊNH NGHĨA ĐẦY ĐỦ LỚP CAR
(Ví dụ 5-Chương 7)
Bài 0: Tổng quan về Python

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ KẾ THỪA (INHERITANCE)
• Giới thiệu
– Sự kế thừa cho phép một lớp có thể kế thừa thuộc tính
và phương thức từ các lớp khác đã được định nghĩa.
Bài 0: Tổng quan về Python

• Lớp đã có gọi là lớp cha


• Lớp mới phát sinh gọi là lớp con

– Lớp con kế thừa tất cả thành phần của lớp cha, có thể
mở rộng các thành phần kế thừa và bổ sung thêm các
thành phần mới.

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ KẾ THỪA (INHERITANCE)
• Tình huống
– Lớp Car
Bài 0: Tổng quan về Python

• Thuộc tính: tenxe, mausac, nguyenlieu


• Phương thức: onRun, onStop, OnLeft, OnRight

– Lớp Toyota bao gồm tất cả thuộc tính, phương thức của
lớp Car, bổ sung
• Thuộc tính: socho, loaimay
• Phương thức: onPause, onResume

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ KẾ THỪA (INHERITANCE)
Bài 0: Tổng quan về Python

(Ví dụ 6-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ ĐÓNG GÓI (ENCAPSULATION)
• Giới thiệu
– Sự đóng gói cho phép giới hạn việc truy cập vào thuộc
tính/phương thức bên trong đối tượng
Bài 0: Tổng quan về Python

– Sử dụng ký tự đặc biệt ‘_’ hoặc ‘__’ trước thuộc tính


muốn đóng gói

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ ĐÓNG GÓI (ENCAPSULATION)
• Tình huống
– Lớp Motor có
Bài 0: Tổng quan về Python

• Thuộc tính: loaixe, hangxe, phankhoi (đóng gói)


• Phương thức: doiphankhoi

– Chú ý:
• Việc thay đổi hãng xe thực hiện trực tiếp trên đối tượng
• Việc thay đổi phân khối phải thông qua phương thức
doiphankhoi

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
SỰ ĐÓNG GÓI (ENCAPSULATION)
Bài 0: Tổng quan về Python

(Ví dụ 7-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TÍNH ĐA HÌNH (POLYMORPHISM)
• Giới thiệu
– Tính đa hình cho phép hai hay nhiều lớp có những
phương thức giống nhau nhưng có thể thực thi theo
Bài 0: Tổng quan về Python

những cách thức khác nhau

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TÍNH ĐA HÌNH (POLYMORPHISM)
• Tình huống
– Tính đa hình cho phép hai hay nhiều lớp có những
phương thức giống nhau nhưng có thể thực thi theo
Bài 0: Tổng quan về Python

những cách thức khác nhau

… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam
TÍNH ĐA HÌNH (POLYMORPHISM)
Bài 0: Tổng quan về Python

(Ví dụ 8-Chương 7)
… những bước chập chững vào thế giới Khoa học dữ liệu ... TS. Trịnh Hoàng Nam

You might also like