Professional Documents
Culture Documents
Slide Python
Slide Python
HÀM PYTHON
TỔNG QUAN VỀ NGÔN NGỮ PYTHON
Python là ngôn ngữ lập trình hướng đối tượng, bậc cao, mạnh mẽ.
Được phát triển cuối thập kỷ 80 và đầu thập kỷ 90 tại Viện Toán Tin, Hà Lan.
Python là một trong những ngôn ngữ phổ biến nhất thế giới.
Python kế thừa từ nhiều ngôn ngữ như ABC, Module-3, C, C++, Unix Shell,…
LỊCH SỬ PHÁT TRIỂN
Python có một thư viện chuẩn khá rộng lớn, dễ dàng tương thích và tích hợp với
Windows, macOS, Linux.
Python hỗ trợ lập trình GUI, có thể tích hợp với các ngôn ngữ lập trình khác.
Python được dùng trong nhiều lĩnh vực như lập trình web, data analysis, xử lý
ảnh, lập trình game, bảo mật mạng và máy tính, …
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Từ khóa
Từ khóa là những từ dành riêng đặc biệt có ý nghĩa và mục đích cụ thể và không
thể được sử dụng cho bất kỳ mục đích nào ngoài những mục đích cụ thể đó.
Ta có thể lấy danh sách các từ khóa có sẵn bằng cách sử dụng help( ).
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Từ khóa
Dưới đây là các từ khóa có trong Python 3.8.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Định danh
Một định danh (identifier) trong Python là một tên được sử dụng để nhận diện
một biến, một hàm, một lớp, hoặc một đối tượng.
Định danh có thể được đặt sẵn bởi ngôn ngữ lập trình (đó chính là các từ khóa)
hoặc do người lập trình đặt.
Đặt tên định danh trong Python cần tuân thủ các quy tắc.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Định danh
Các quy tắc đặt tên cho định danh:
Định danh chỉ được sử dụng các chữ cái, chữ số và dấu gạch dưới “_”.
Bắt đầu bằng chữ cái hoặc dấu gạch dưới, không được bắt đầu bằng chữ số.
Định danh do người lập trình đặt không được trùng từ khóa.
Định danh
nguyenhuuhung 1901hung
nguyen_huu_hung 1_a (kí tự đầu là số)
_nguyenhuuhung huu hung (chứa dấu cách)
hung19012000 $a (kí tự đầu không hợp lệ)
_if if (trùng từ khóa)
_19012000 a.b (chứa dấu .)
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Định danh
Một số lưu ý khi định danh:
Đặt định danh dễ hiểu, nên tách các từ bằng dấu gạch dưới “_” (sinh_vien).
Đặt tên liên quan đến đối tượng cần lập trình.
Python phân biệt chữ cái thường và chữ cái hoa (Sinh_vien khác sinh_vien).
Tên lớp bắt đầu với một chữ cái hoa, các định danh khác bắt đầu với một chữ
cái thường.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Định danh
Một số lưu ý khi định danh:
Có thể đặt tên biến, hàm hay cấu trúc như dạng: sinhVien, sachGiaoKhoa.
Định danh bắt đầu với một dấu dạch dưới _ thì là định danh private (_var).
Định danh bắt đầu với 2 dấu gạch dưới __ thì mức độ private cao hơn (__var).
Nếu định danh bắt đầu và kết thúc bằng 2 dấu gạch dưới (__init__ chẳng hạn)
thì định danh đó là tên đặc biệt được ngôn ngữ định nghĩa.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Dữ liệu có nhiều loại khác nhau như chữ viết, con số, hình ảnh, âm thanh, …
Trong Python có các kiểu dữ liệu như Number, String, List, Tuple, Set, Dictionary, …
Đối với mỗi kiểu dữ liệu khác nhau ta có cách xử lý dữ liệu khác nhau.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Biến
Biến là một vị trí trong bộ nhớ được sử dụng để lưu trữ dữ liệu (giá trị).
Trong Python, bạn không cần khai báo biến trước khi sử dụng, chỉ cần gán cho
biến một giá trị và nó sẽ tồn tại.
Không cần phải khai báo kiểu biến, kiểu biến sẽ được nhận tự động dựa vào giá
trị mà bạn đã gán cho biến.
Hàm
Python cung cấp cho chúng ta nhiều hàm đã lập trình sẵn như print, input, id, …
Ta cũng có thể lập trình hàm tùy vào mục đích sử dụng.
Hàm được lập trình với mục đích sử dụng nhiều lần.
Biểu thức
Biểu thức là sự ghép nối các toán tử (operator) và các toán hạng (operand) theo
một quy tắc xác định.
Các toán hạng trong biểu thức có thể là biến, hàm hoặc một biểu thức khác.
Các toán tử trong biểu thức rất đa dạng như cộng, trừ, nhân chia, so sánh, …
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Biểu thức
VD: Tính diện tích hình chữ nhật có chiều dài là chieu_dai, chiều rộng là chieu_rong.
Câu lệnh
Câu lệnh (statement) diễn tả một hoặc một nhóm các thao tác trong giải thuật.
Trong Python, một câu lệnh được kết thúc bằng ký tự dòng mới, nghĩa là một câu
lệnh sẽ kết thúc khi bạn xuống dòng.
Chúng ta có thể mở rộng câu lệnh trên nhiều dòng với ký tự tiếp tục dòng lệnh (\).
sum = 1 + 3 + 5 + \
7 + 9 + 11 + \
13 + 15 + 17
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Câu lệnh
Trong Python, viết tiếp câu lệnh thường sử dụng dấu ngoặc đơn ( ), ngoặc vuông
[ ] hoặc ngoặc nhọn { }.
sum = (1 + 3 + 5 +
7 + 9 + 11 +
13 + 15 + 17)
Dấu ( ) ở đây ngầm ý tiếp tục dòng lệnh, 2 dấu ngoặc còn lại cũng có chức năng
tương tự.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Câu lệnh
Có thể đặt nhiều lệnh trên cùng một dòng, phân cách nhau bởi dấu chấm phẩy ‘;’.
a = 1; b = 2; c = 3
Khối lệnh
Trong Python, những khối lệnh sẽ được nhận biết thông qua thụt lề.
Số khoảng trống trong độ thụt lề là biến đổi, nhưng tất cả các lệnh bên trong
khối phải được thụt cùng một số lượng khoảng trống như nhau.
Thông thường, chúng ta thường thụt lề 4 dấu cách hay phím tab.
Chú thích
Mô tả, diễn tả ý nghĩa câu lệnh đang dùng, giải thích ý nghĩa của một hàm nào đó.
Mục đích giúp người lập trình dễ nhớ, dễ đọc và hiểu đoạn chương trình.
Chú thích không ảnh hưởng đến hoạt động của chương trình.
Khi gặp chú thích, trình biên dịch sẽ tự động bỏ qua không dịch phần đó.
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Chú thích
Bắt đầu một comment đơn dòng bởi dấu #, mà nó không ở bên trong một
chuỗi nào.
a = 19 #biến a có kiểu int
Bắt đầu một comment đa dòng bởi 3 dấu nháy đơn hoặc 3 dấu nháy kép và
kết thúc cũng bằng 3 dấu tương ứng.
''' Khai báo biến a
Biến a có kiểu là int'''
a = 19
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Thư viện
Để sử dụng một thư viện, ta dùng cú pháp: import <tên thư viện>
Để sử dụng một hàm trong thư viện, ta dùng cú pháp: <tên thư viện>.<tên hàm>
import math
2
print(math.floor(2.57))
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Thư viện
Ta cũng có thể import một module trong thư viện theo cú pháp:
Để import nhiều module, ta ngắn cách cách module bởi dấu phẩy ‘,’ :
from <tên thư viện> import <tên module 1>, <tên module 2>, …
CÁC PHẦN TỬ CƠ BẢN CỦA PYTHON
Thư viện
Để import tất cả module, ta dùng cú pháp: from <tên thư viện> import *
Khi dùng from để import, ta không cần sử dụng tên thư viện để gọi hàm đó nữa.
Integrated Development Environment (IDE) thường được gọi là "Môi trường phát
triển tích hợp", là một loại phần mềm máy tính có công dụng hỗ trợ các lập trình
viên trong việc phát triển phần mềm.
Cài đặt Python với Visual Studio Code theo hướng dẫn tại:
https://viettuts.vn/python/huong-dan-lap-trinh-python-voi-visual-studio-code
Cài đặt Python với Visual Studio theo hướng dẫn tại:
http://ilearnpython.com/tao-project-python-trong-visual-studio-2019.html
CÁC KIỂU DỮ LIỆU CHUẨN TRONG PYTHON
Python hỗ trợ số nguyên, số thực và số phức, chúng lần lượt được định nghĩa là
các lớp int, float, complex trong Python.
Số nguyên và số thập phân được phân biệt bằng sự có mặt hoặc vắng mặt của
dấu thập phân (3 là số nguyên, 3.2 là số thực).
Python cũng hỗ trợ số phức và sử dụng hậu tố j hoặc J để chỉ phần ảo (1 + 2j).
Số thực trong Python bị giới hạn đến 16 số sau dấu thập phân.
Để kiểm tra xem biến hoặc giá trị thuộc lớp số nào ta dùng hàm type( ).
a = 1 + 2j
<class 'complex'>
print(type(a))
KIỂU DỮ LIỆU NUMBER
print(complex(1,2)) 1+2j
Decimal
Thực hiện phép tính 0.1 + 0.2 trong Python cho ta kết quả không mong đợi.
Điều này xảy ra do máy tính chỉ hiểu được các số nhị phân nên hầu hết số thực ta
lưu trong máy tính chỉ được lưu gần đúng.
Decimal
import decimal
Trong khi số thực chỉ lấy 16 số sau dấu thập phân thì module Decimal cho phép
tùy chỉnh độ dài của số.
Decimal
Tuy độ chính xác cao hơn nhưng các phép toán với số Decimal được thực hiện
chậm hơn so với các phép toán với số float.
Khi tạo các ứng dụng tài chính, cần biểu diễn phần thập phân chính xác.
Phân số
Python cung cấp các phép toán liên quan đến phân số thông qua sử dụng module
Fraction.
Ta có thể tạo đối tượng phân số (Fraction) từ số thực hoặc khai báo tử số, mẫu số.
import fractions
7/2
print(fractions.Fraction(3.5))
2/3
print(fractions.Fraction(4,6))
KIỂU DỮ LIỆU NUMBER
Phân số
Khi tạo phân số từ float, ta có thể nhận được những kết quả không mong muốn,
điều này đã nói ở phần Decimal.
Ta cũng có thể khởi tạo một phân số từ string, đây là cách khởi tạo số thập phân
khá được ưa thích.
String trong Python là một dãy các ký tự nằm liên kề nhau trong bộ nhớ.
Máy tính không xử lý các ký tự, chúng chỉ làm việc với số nhị phân.
Những kí tự chúng ta nhìn thấy trên màn hình đều được mã hóa thành các bit nhị
phân 0, 1 và được giải mã ngược lại.
Chuỗi kí tự có thể viết trên nhiều dòng bằng cách sử dụng cặp 3 dấu nháy
('''''') hoặc ("""""").
Không thể đặt dấu nháy đơn trong cặp dấu nháy đơn hoặc cặp dấu nháy kép
trong cặp dấu nháy kép vì chương trình sẽ báo lỗi.
Có thể đặt dấu nháy đơn trong cặp dấu nháy kép hoặc dấu nháy kép trong cặp
dấu nháy đơn.
KIỂU DỮ LIỆU STRING
Escape Sequence Mô tả
\a Phát ra tiếng bíp
\b Đưa con trỏ về lại một khoảng trắng
\n Đưa con trỏ xuống dòng tiếp theo
\t In ra Tab
\’ In ra dấu nháy đơn ‘
\” In ra dấu nháy kép “
\\ In ra dấu gạch chéo \
KIỂU DỮ LIỆU STRING
Trong Python, các kí tự của chuỗi còn được đánh chỉ số từ phải qua trái từ -1
đến -n với n là độ dài chuỗi.
Để truy cập một phần tử của chuỗi, ta sử dụng cú pháp: <chuỗi>[chỉ số]
Cắt chuỗi
Để cắt chuỗi, ta dùng cú pháp: <chuỗi>[vị trí bắt đầu:vị trí kết thúc]
Cắt chuỗi
Có thể để trống “vị trí bắt đầu” hoặc “vị trí kết thúc”.
Nếu bỏ trống “vị trí bắt đầu”, mặc định cắt từ vị trí 0 đến “vị trí kết thúc” – 1.
Nếu bỏ trống “vị trí kết thúc”, mặc định cắt từ “vị trí bắt đầu” đến hết chuỗi.
s = "HUST"
HUSTHUST
print(s * 2)
KIỂU DỮ LIỆU STRING
Toán tử not in: c in s, trả về True nếu kí tự c không xuất hiện trong chuỗi s, nếu
không trả về False.
s = "HUST"
c1 = 'S'
True
c2 = 's'
True
print(c1 in s)
print(c2 not in s)
KIỂU DỮ LIỆU STRING
name = "Hung"
age = 21 Hung is 21 years old.
print("%s is %d years old." %(name, age))
Chú ý: Không có dấu phẩy giữa chuỗi và phần giá trị cần định dạng.
KIỂU DỮ LIỆU STRING
name = "Hung"
age = 21 Hung is 21 years old.
print(f"{name} is {age} years old.")
name = "Hung"
age = 21 Hung is 21 years old.
print("{} is {} years old.".format(name, age))
KIỂU DỮ LIỆU STRING
Nếu không truyền chỉ số vào trong {} thì chỉ số mặc định đánh từ 0.
name1 = "Hung"
name2 = "Long" This is Hung, that is Long.
print("This is {}, that is {}.".format(name1, name2))
name1 = "Hung"
name2 = "Long" This is Long, that is Hung.
print("This is {1}, that is {0}.".format(name1, name2))
KIỂU DỮ LIỆU STRING
c là kí tự muốn thay thế vào ô trống, nếu để trống thì mặc định là khoảng trắng.
print(row_1)
print(row_2)
print(row_3)
print(row_4)
print(row_5)
Kết quả
print(row_6)
print(row_7)
KIỂU DỮ LIỆU STRING
s = "Say hello"
9
print(len(s))
Phương thức capitalize(): trả về một chuỗi với kí tự đầu tiên được viết hoa và
viết thường tất cả những kí tự còn lại.
s = "aBCdE"
Abcde
print(s.capitalize())
KIỂU DỮ LIỆU STRING
s = "aBCdE"
ABCDE
print(s.upper())
Phương thức lower(): trả về một chuỗi với tất cả các kí tự được chuyển thành
các kí tự viết thường.
s = "aBCdE"
abcde
print(s.lower())
KIỂU DỮ LIỆU STRING
s = "aBCdE"
AbcDe
print(s.swapcase())
Phương thức title(): trả về một chuỗi với định dạng tiêu đề, có nghĩa là các từ sẽ
được viết hoa chữ cái đầu tiên, còn lại là viết thường.
Phương thức center() trả về một chuỗi được căn giữa bởi các kí tự fillchar với
chiều rộng width.
s = "hello"
--hello---
print(s.center(10,'-'))
KIỂU DỮ LIỆU STRING
Cách hoạt động của hai phương thức trên tương tự phương thức center nhưng
phương thức rjust căn lề phải, phương thức ljust căn lề trái.
s = "hello"
-----hello
print(s.rjust(10,'-'))
hello-----
print(s.ljust(10,'-'))
KIỂU DỮ LIỆU STRING
Phương thức join() nối chuỗi các chuỗi trong tập hợp thành một chuỗi.
Phương thức replace trả về một bản sao của chuỗi ban đầu sau khi đã thay thế
count chuỗi old đầu tiên bằng chuỗi new.
s = "School of Electronics and Telecomunication - HUST"
print(s.replace("o", "0"))
print(s.replace("o", "0", 5))
Phương thức replace trả về một chuỗi với phần đầu và phần đuôi của chuỗi
được bỏ đi các kí tự chars.
Nếu chars bị bỏ trống thì mặc định các kí tự bị bỏ đi là các khoảng trắng và
escape sequence.
s = "+-+-+-Hello-+-+-+"
Hello
print(s.strip("+-"))
Hello
print(s.strip("-+"))
KIỂU DỮ LIỆU STRING
Cách hoạt động của hai phương thức trên tương tự phương thức center nhưng
phương thức rstrip bỏ đi ở phần đuôi, phương thức lstrip bỏ đi ở phần đầu.
s = "+-+-+-Hello-+-+-+"
+-+-+-Hello
print(s.rstrip("+-"))
Hello-+-+-+
print(s.lstrip("-+"))
KIỂU DỮ LIỆU STRING
Phương thức split trả về một list chuỗi con bằng cách tách chuỗi ban đầu thành
num + 1 chuỗi con bởi kí tự char.
Cách hoạt động của phương thức rsplit tương tự phương thức split nhưng khác
ở chỗ là rsplit tách từ phải sang trái.
Phương thức partition trả về một tuple với 3 phần tử lần lượt là chuỗi trước
chuỗi cắt, chuỗi cắt và chuỗi sau chuỗi cắt.
Nếu chuỗi cắt không có trong chuỗi ban đầu, mặc định trả về phần tử đầu tiên là
chuỗi ban đầu và hai phần tử sau là rỗng.
s = "Nguyen Huu Hung"
('Ng', 'u', 'yen Huu Hung')
print(s.partition("u"))
('Nguy', 'en', ' Huu Hung')
print(s.partition("en"))
KIỂU DỮ LIỆU STRING
Cách hoạt động của phương thức rpartition tương tự phương thức partition
nhưng khác ở chỗ là rpartition chia từ phải sang trái.
Nếu chuỗi cắt không có trong chuỗi ban đầu, mặc định trả về hai phần tử đầu
tiên là chuỗi rỗng và phần tử cuối cùng là chuỗi ban đầu.
Phương thức count trả về số lần xuất hiện của sub trong chuỗi.
start là vị trí bắt đầu đếm, end là vị trí kết thúc đếm.
s = "Aababbab"
3
print(s.count("ab"))
2
print(s.count("ab", 2))
0
print(s.count("ab", 2 , 5))
KIỂU DỮ LIỆU STRING
Phương thức startswith (endswith) trả về giá trị True nếu chuỗi bắt đầu (kết
thúc) bằng chuỗi prefix.
s = "Legends Never Die"
True
print(s.startswith('Legend'))
True
print(s.endswith('ie'))
KIỂU DỮ LIỆU STRING
Phương thức find trả về một số nguyên là vị trí đầu tiên của sub khi tìm từ trái
sang phải.
Phương thức rfind hoạt động tương tự phương thức find nhưng tìm từ phải sang
trái.
Phương thức index hoạt động tương tự phương thức find nhưng khác là sẽ có lỗi
nếu không tìm thấy chuỗi sub trong chuỗi ban đầu.
Phương thức rindex hoạt động tương tự phương thức index nhưng tìm từ phải
sang trái.
KIỂU DỮ LIỆU STRING
Phương thức islower trả về True nếu tất cả các kí tự trong chuỗi đều là viết
thường, ngược lại là False.
Phương thức isupper trả về True nếu tất cả các kí tự trong chuỗi đều là viết hoa,
ngược lại là False.
KIỂU DỮ LIỆU STRING
Phương thức istitle trả về True nếu chuỗi đó là một dạng title, ngược lại
là False.
Phương thức isdigit trả về True nếu tất cả các kí tự trong chuỗi đều là chữ số,
ngược lại là False.
KIỂU DỮ LIỆU STRING
Phương thức istitle trả về True nếu chuỗi đó là một dạng title, ngược lại
là False.
Phương thức isspace trả về True nếu tất cả các kí tự trong chuỗi đều là kí tự
khoảng trắng, ngược lại là False.
KIỂU DỮ LIỆU STRING
Phương thức isalnum trả về True nếu chuỗi đó chỉ chứa các kí tự chữ và số,
ngược lại là False.
Phương thức isalpha trả về True nếu tất cả các kí tự trong chuỗi đều kí tự chữ,
ngược lại là False.
KIỂU DỮ LIỆU STRING
Phương thức isnumeric trả về True nếu tất cả các kí tự trong chuỗi đều là chữ
số, ngược lại là False.
Phương thức isdigit trả về True nếu tất cả các kí tự trong chuỗi đều là chữ số,
ngược lại là False.
KIỂU DỮ LIỆU LIST
KIỂU DỮ LIỆU TUPLE
KIỂU DỮ LIỆU SET
KIỂU DỮ LIỆU DICTIONARY
CÁC TOÁN TỬ CƠ BẢN
CÁC CẤU TRÚC LẬP TRÌNH
HÀM PYTHON