Professional Documents
Culture Documents
Lập Trình Python Tổng Quan Về Python: Nguyễn Hải Triều
Lập Trình Python Tổng Quan Về Python: Nguyễn Hải Triều
Ưu điểm
Python là một ngôn ngữ phù hợp cho tất cả mọi lứa tuổi:
câu lệnh và cấu trúc của Python thật sự rất đơn giản, gần
gũi với ngôn ngữ tự nhiên
hệ thống thư viện mã nguồn mở đồ sộ, cộng đồng hỗ trợ rất
lớn
áp dụng được trong nhiều lĩnh vực như AI, web–backend,
game, IoT...
Nhược điểm
Vì Python là một ngôn ngữ LT đa nền tảng, nên:
có một số nền tảng chưa được tối ưu
tốc độ thực thi còn chậm so với C/C++, Java
hệ thống thư viện cồng kềnh, chiếm dụng bộ nhớ lớn
3 Hàm
3 Hàm
Yêu cầu OS
Tất cả các hướng dẫn trong môn học này được thực hiện bằng
Python 3.x trên Ubuntu 20.04. Khuyến khích sv sử dụng Linux.
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 7 / 56
Cài đặt môi trường và sử dụng Python Cài đặt môi trường
Google Colab
Để kết nối Colab với Drive của bạn, sử dụng các lệnh sau:
1 from google . colab import drive
2 drive . mount ( ’/ content / drive ’)
3 % cd / content / drive / ’ My Drive ’/ NTU / b er t _c lu s te ri n g # di den thu
muc NTU / b e r t _ c l u s t e r i n g tren drive cua ban
Cài đặt
Python tại https://www.python.org/downloads/. Lưu ý,
nên chọn version 3.6 hoặc 3.8.
VScode tại https://code.visualstudio.com/
Jupyter notebook thông qua pip. Bật terminal và gõ lệnh:
pip install jupyter
Đặc biệt, để tránh xung đột giữa các phiên bản Python, giữa các
thư viện giữa các project khác nhau. SV cần phải sử dụng
Virtualenv
Để cài đặt môi trường ảo, SV có thể chạy lệnh sau đây trong
terminal (hoặc Cmd trên Windows): pip install virtualenv
Kiểm tra xem Virtualenv đã được cài đặt chưa:
virtualenv –version
Đi đến thư mục của project và tạo môi trường ảo cho project
bằng lệnh:
virtualenv thư_mục_chứa_môi_trường_ảo . Thư mục đó
chứa các file thực thi của Python và module pip
Nếu có nhiều phiên bản Python ở local, thì có thể chỉ định rõ
phiên bản Python mà bạn muốn sử dụng:
virtualenv -p /usr/bin/python3.8 my_project
3 Hàm
Hello world
Python là một ngôn ngữ có cú pháp rất đơn giản. Bắt đầu với
chương trình in ra màn hình chữ Hello world. Lệnh đơn giản nhất
để in là print.
1 print ( " Hello world " )
print()
Escape sequence
Escape sequence giúp in kí tự đặc biệt ra màn hình
\\: print(’\\’) ->in ra kí tự \
\’: print(’\’ ’) ->in ra kí tự ’
\n: print(’\n ’) ->in ra kí tự xuống dòng
\t: print(’\t ’) ->in ra kí tự dấu tab
Ví dụ 2.1
Hãy viết chương trình in các dòng sau đây lên màn hình:
1 C :\\ some \ name
print()
Escape sequence
Escape sequence giúp in kí tự đặc biệt ra màn hình
\\: print(’\\’) ->in ra kí tự \
\’: print(’\’ ’) ->in ra kí tự ’
\n: print(’\n ’) ->in ra kí tự xuống dòng
\t: print(’\t ’) ->in ra kí tự dấu tab
Ví dụ 2.1
Hãy viết chương trình in các dòng sau đây lên màn hình:
1 C :\\ some \ name
đáp án:
1 print ( " C :\\\ some \\ name " )
2 # or
3 print ( r " C :\\ some \ name " )
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 18 / 56
Lập trình Python căn bản Hello world
print()
Ví dụ 2.2
Hãy viết chương trình in các dòng sau đây lên màn hình:
1 Usage : thingy [ OPTIONS ]
2 -h Display this usage message
3 -H hostname Hostname to connect to
print()
Ví dụ 2.2
Hãy viết chương trình in các dòng sau đây lên màn hình:
1 Usage : thingy [ OPTIONS ]
2 -h Display this usage message
3 -H hostname Hostname to connect to
đáp án:
1 print ( """ \
2 Usage : thingy [ OPTIONS ]
3 -h Display this usage message
4 -H hostname Hostname to connect to
5 """ )
Comments
Để ghi chú, bình luận lại những thông tin và muốn trình thông
dịch Python bỏ qua phần nội dung đó, ta sử dụng ký tự #
Ví dụ 2.3
1 print ( " Hello world " ) # chuong trinh in ra dong Hello world
Indentation
Ví dụ 2.4
1 x = 1
2 if x == True :
3 # indented four spaces
4 print ( " x is 1. " )
5 else : print ( " x is 0. " ) # in case x =0
Lưu ý
Python sử dụng thụt đầu dòng cho các khối, thay cho dấu ngoặc nhọn
{}. Có thể sử dụng cả tab và dấu cách nhưng tiêu chuẩn sử dụng bốn
dấu cách.
Sử dụng dấu : phía sau tên hàm, vòng lặp, cấu trúc điều khiển
True/False viết hoa chữ cái đầu
Không có dấu ; sau các lệnh, chỉ thị
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 21 / 56
Lập trình Python căn bản Biến và kiểu dữ liệu
Ví dụ 2.5
1 hello = " hello "
2 world = " world "
3 helloworld = hello + " " + world
4 print ( helloworld )
Python cung cấp cho chúng ta một loạt phương thức (method)
thao tác với chuỗi kí tự. Truy xuất kí tự trong chuỗi dựa vào chỉ
số theo cả hướng bắt đầu và kết thúc chuỗi. Chỉ số chuỗi bắt đầu
bằng 0.
0 1 2 3 4 5
p y t h o n
-6 -5 -4 -3 -2 -1
Ví dụ 2.6
1 text = " python "
2 print ( text [ - 6 ]) # ->p
3 print ( text [ 2 ]) # ->t
4 print ( text [ 2 :]) # -> thon
Chuỗi trong Python là bất biến, vì vậy không thể thay đổi được
ký tự riêng lẻ trong một vị trí bộ nhớ khi đã khởi tạo.
Chuỗi trong Python là bất biến, vì vậy không thể thay đổi được
ký tự riêng lẻ trong một vị trí bộ nhớ khi đã khởi tạo.
ngoài ra, bất kì đối tượng nào không phải là chuỗi thì đều có
thể sử dụng %s để chuyển định dạng kiểu chuỗi khi in.
1 KDL_list = [ 1 ,2 ,3 ]
2 print ( " kieu du lieu danh sach : % s " % KDL_list )
Bài tập
Hãy in ra chuỗi có định dạng như sau: Hello John Doe. Your
current balance is $53.44. Với data = ("John", "Doe", 53.44)
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 27 / 56
Lập trình Python căn bản Biến và kiểu dữ liệu
Method Ý nghĩa Ví dụ
.strip() loại bỏ tất cả khoảng trắng 𝑠1.𝑠𝑡𝑟𝑖𝑝()
ở đầu và cuối của chuỗi
.upper() trả về một chuỗi hoa 𝑠.𝑢𝑝𝑝𝑒𝑟()
.lower() trả về một chuỗi thường 𝑠.𝑙𝑜𝑤𝑒𝑟()
s=’Khoa CNTT’
.replace() thay thế một chuỗi cho chuỗi khác s1 = ’Khoa’; s2 = ’Lop’
print(s.replace(s1,s2))
s=’Khoa-CNTT’
.split() dùng để tách chuỗi thành print(s.split("−"))
chuỗi con #kq: [’Khoa’, ’CNTT’]
đếm số lần xuất hiện một
.count() s.count(’K’)
chuỗi con trong chuỗi
Bảng 2: Một vài phương thức thao tác với chuỗi
Để lặp lại các chuỗi, ta có thể sử dụng toán tử * với số lần lặp
mong muốn.
Ví dụ 2.8
1 seq = " xin chao \ n " * 3
2 print ( seq )
3 # dap an
4 xin chao
5 xin chao
6 xin chao
Có thể gán nhiều giá trị cho từng biến trên một dòng như sau:
1 a, b = 3, 4
2 print (a , b )
Hàm type()
Trong một số trường hợp muốn kiểm tra kiểu dữ liệu của biến, ta
sử dụng hàm type(tên_biến).
Ví dụ 2.9
1 h = " hello "
2 w = ’ world ’
3 c=h+w
4 type ( c ) # -> str
Ví dụ 2.10
Lists
list giúp ta có thể khai báo, lưu trữ, truy xuất một dãy gồm các
đối tượng thuộc bất kì kiểu dữ liệu nào. Bản chất của list rất
giống array. Khai báo danh sách như sau:
Cú pháp 2.1
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ >= [< 𝑝𝑡1 >, < 𝑝𝑡2 >, ..., < 𝑝𝑡𝑛 >]
Ví dụ 2.11
𝑎 = [′ ℎ𝑒𝑙𝑙𝑜′ , 1, 3, ”ℎ𝑖”, 𝐹 𝑎𝑙𝑠𝑒, 3.14]
Truy xuất các phần tử trong danh sách thông qua chỉ số (giống
mảng)
𝑎[−6] −→′ ℎ𝑒𝑙𝑙𝑜′ ; 𝑎[2] −→ 3; 𝑎[4 :] −→ [𝐹 𝑎𝑙𝑠𝑒, 3.14]
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 34 / 56
Lập trình Python căn bản Kiểu dữ liệu danh sách-List
Cú pháp 2.2
thay đổi giá trị của một phần tử
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > [< 𝑐ℎ𝑖_𝑠𝑜 >] =< 𝑔𝑖𝑎_𝑡𝑟𝑖_𝑚𝑜𝑖 >
thêm phần tử vào cuối danh sách, sử dụng hàm append()
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑎𝑝𝑝𝑒𝑛𝑑(< 𝑔𝑖𝑎_𝑡𝑟𝑖 >)
thêm phần tử vào vị trí bất kì của danh sách
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑖𝑛𝑠𝑒𝑟𝑡(< 𝑣𝑖_𝑡𝑟𝑖 >, < 𝑔𝑖𝑎_𝑡𝑟𝑖 >)
xóa phần tử ở cuối danh sách
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑝𝑜𝑝()
xóa phần tử ở vị trí bất kì của danh sách
𝑑𝑒𝑙 < 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > [< 𝑣𝑖_𝑡𝑟𝑖 >]
Cú pháp 2.3
xóa phần tử đầu tiên trùng với giá trị cho trước
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑟𝑒𝑚𝑜𝑣𝑒(< 𝑔𝑖𝑎_𝑡𝑟𝑖 >)
đếm số lần xuất hiện của một giá trị trong danh sách
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑐𝑜𝑢𝑛𝑡(< 𝑔𝑖𝑎_𝑡𝑟𝑖 >)
để tạo một list khác độc lập và giống với hệt với list hiện có
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ > .𝑐𝑜𝑝𝑦()
nôí hai danh sách thông qua toán tử +
< 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ1 > + < 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ2 >
kiểm tra 1 phần tử có thuộc list, kq trả về True/False
< 𝑝ℎ𝑎𝑛_𝑡𝑢 > in < 𝑡𝑒𝑛_𝑑𝑎𝑛ℎ_𝑠𝑎𝑐ℎ >
Ví dụ 2.12
1 a =[ ’ hello ’ , 1 , 3 , " hi " , False , 3 . 1 4 ]
2 b = a ; b [ 0 ]= ’ xin_chao ’
3 print ( a [ 0 ])
Ví dụ 2.12
1 a =[ ’ hello ’ , 1 , 3 , " hi " , False , 3 . 1 4 ]
2 b = a ; b [ 0 ]= ’ xin_chao ’
3 print ( a [ 0 ])
Ví dụ 2.13
1 even_numbers = [ 2 ,4 ,6 ,8 ]
2 odd_numbers = [ 1 ,3 ,5 ,7 ]
3 all_numbers = odd_numbers + even_numbers
4 print ( all_numbers )
Ví dụ 2.14
1 print ([ 1 ,2 ,3 ] * 3 )
Ví dụ 2.15
1 a 1 =[ " b " ,2 ,3 ]
2 print ( 1 0 0 in a 1 )
Vì lists có thể chứa các đối tượng thuộc bất kì kiểu dữ liệu nào
nên các lists có thể lồng được vào nhau. Truy xuất đến các phần
tử thông qua chỉ số tương tự mảng.
Ví dụ 2.16
2 lists lồng vào nhau:
1 a 1 =[ " b " ,2 ,3 ]
2 a 2 =[ 1 ,1 . 4 ," ws " ,a 1 ]
3 print ( a 2 [ 3 ][ 0 ])
4 # -> b
Tuples
Cú pháp 2.4
tên_biến_tuple = (item1, item2,..,itemn)
Tuples
bên cạnh đó còn có: hàm len() trả về số phần tử trong tuple;
hàm max(), min() trả về giá trị lớn nhất, nhỏ nhất; phương
thức .index() trả về vị trí xuất hiện đầu tiên của phần tử cần
tìm.
các toán tử +, *, in, not in tương tự như list
Sets
Cú pháp 2.5
tên_biến_set = {item1, item2,..,itemn}
Kiểu dữ liệu set là một tập hợp các phần tử không có thứ tự,
không thể thay đổi giá trị các phần tử và không tồn tại chỉ số.
Mỗi giá trị của phần tử trong set là duy nhất (các phần tử
trùng sẽ bị lược bỏ).
1 a 1 ={ " b " ,2 ,3 ,2 }
2 print ( a 1 )
3 # -> {2 , 3 , ’b ’}
set được viết bằng dấu ngoặc {}
các sets không thể lồng vào nhau.
có thể thêm (phương thức .add()), cập nhật (phương thức
.update()), xóa phần tử trong set (phương thức .remove())
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 44 / 56
Lập trình Python căn bản Kiểu dữ liệu từ điển Dictionary
Dictionary
Cú pháp 2.6
Từ điển được sử dụng để lưu trữ các giá trị dữ liệu trong các cặp
key:value. Từ điển được viết trong dấu ngoặc nhọn và có các
khóa và giá trị
1 ten_tu_dien ={ key 1 : value 1 , key 2 : value 2 ,... , keyn : valuen }
từ điển là một tập hợp được sắp xếp theo thứ tự (lưu ý:
Python 3.6 trở về trước, từ điển không có thứ tự), có thể thay
đổi và các phần tử không được phép trùng lặp.
1 a 1 ={ 1 : ’ hello ’ ,2 : ’ hi ’ ,2 : ’ xinchao ’ , ’ hi ’: ’ xinchao ’}
2 print ( a 1 ) # - >{1: ’ hello ’, 2: ’ xinchao ’, ’ hi ’: ’ xinchao ’}
các khóa phải là bất biến: số hoặc chuỗi
Dictionary
3 Hàm
Lưu ý:
hàm không bắt buộc phải có tham số truyền vào hay kết quả
trả ra.
hàm không được gọi thì không được thực thi
Ví dụ 3.1
1 def msg_hello () :
2 print ( " xin chao " )
3 msg_hello ()
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 49 / 56
Hàm Hàm trong Python
Trong trường hợp chưa xác định số lượng tham số cần truyền vào
có thể sử dụng dấu * trước tham số đầu vào.
1 def tong (* n ) :
2 return n [ 0 ]+ n [ 1 ]
3 a=1;b=2
4 c = tong (a , b ) # goi ham de tinh tong 2 so a , b
5 print ( " tong {}+{}={} " . format (a ,b , c ) )
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 50 / 56
Hàm Hàm trong Python
demo.ipynb
1 from my_package import ins ide_pa ckage
2 def msg_hello () :
3 print ( " in thong bao ben NGOAI package " )
4 msg_hello ()
demo.ipynb
1 from my_package import ins ide_pa ckage
2 def msg_hello () :
3 print ( " in thong bao ben NGOAI package " )
4 if __name__ == ’ __main__ ’:
5 msg_hello ()
-> khi chạy trực tiếp demo.ipynb, chỉ hàm msg_hello() bên
trong nó mới được thực thi.
Trieu Hai Nguyen Python programming BM. KTPM–Khoa CNTT 53 / 56
Hàm Phạm vi hoạt động của biến
Biến cục bộ: chỉ bên trong hàm hoặc trong khối (sau dấu :)
và chỉ có tác dụng trong bản thân hàm hoặc khối đó. Biến
cục bộ sẽ bị xóa khỏi bộ nhớ khi kết thúc khối đó.
1 # vi du bien cuc bo
2 def vd_bien () :
3 x=100
4 return x
5 vd_bien ()
6 print ( " gia tri cua x la : % d " % x )
7 # -> N a m e E r r o r : name ’x ’ is not defined
V.H. Quân, C.X. Nam, H.T. Hiếu, N.H. Triều, V.C. Tài
Tự học lập trình Python căn bản. NXB ĐHQG Tp.HCM,
2019.
Mark Lutz
Learning Python (5th Edition). O’Reilly Media, Inc, 2013.
Luciano Ramalho
Fluent Python (2nd Edition). O’Reilly Media, Inc, 2021.
Python Software Foundation
https://docs.python.org/3/tutorial/