NHẬN DIỆN TRẠNG THÁI MẮT SỬ DỤNG NGÔN NGỮ PYTHON (có code)...... NHẬN DIỆN TRẠNG THÁI MẮT SỬ DỤNG NGÔN NGỮ PYTHON (có code)...... NHẬN DIỆN TRẠNG THÁI MẮT SỬ DỤNG NGÔN NGỮ PYTHON (có code)...... NHẬN DIỆN TRẠNG THÁI MẮT SỬ DỤNG NGÔN NGỮ PYTHON (có code)...... NHẬN DIỆN TRẠNG THÁI MẮT SỬ DỤNG NGÔN NGỮ PYTHON (có code)......
Trang 1DỤNG NGÔN NGỮ PYTHON
Trang 2DANH MỤC CÁC BẢNG BIỂU VI DANH MỤC CÁC TỪ VIẾT TẮT VII
MỞ ĐẦU VIII
CHƯƠNG 1 CƠ SỞ DỮ LIỆU 1
1.1 KHÁI QUÁT VỀ NHẬN DIỆN KHUÔN MẶT VÀ MẮT NGƯỜI 1
1.2 CÁC THUẬT TOÁN MÔ TẢ ĐIỂM ĐẶC BIỆT 1
1.2.1 Harris corner 1
1.2.2 Scale-Invariant Feature Transform 4
1.2.3 Histograms of Oriented Gradients 4
1.2.4 Speeded Up Robust Features 6
1.2.5 Thuật toán Haar-like feature 7
CHƯƠNG 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON 11
2.1 GIỚI THIỆU PYTHON 11
2.2 LỊCH SỬ PHÁT TRIỂN CỦA PYTHON 11
2.3 ĐẶC ĐIỂM CỦA NGÔN NGỮ PYTHON 12
2.3.1 Dễ học, dễ đọc 12
2.3.2 Khối lệnh 12
2.3.3 Đa năng 12
2.3.4 Multiple paradigms 12
2.3.5 Trình thông dịch 13
2.4 XẾP HẠNG NGÔN NGỮ 13
2.5 ỨNG DỤNG CỦA NGÔN NGỮ PYTHON 14
CHƯƠNG 3 DỮ LIỆU HUẤN LUYỆN 15
3.1 BỘ PHÂN LOẠI ADABOOST 15
Trang 34.2.1 Xử lý đầu video vào 25
4.2.2 Phát hiện khuôn mặt 25
4.2.3 Nhận dạng đôi mắt 26
4.2.4 Ghi nhận trạng thái của mắt 26
CHƯƠNG 5 KẾT QUẢ MÔ PHỎNG 27
5.1 MÔI TRƯỜNG TRIỂN KHAI 27
5.2 KẾT QUẢ MÔ PHỎNG 27
CHƯƠNG 6 NHẬN XÉT 29
6.1 NHẬN XÉT 29
6.2 HƯỚNG PHÁT TRIỂN 29
TÀI LIỆU THAM KHẢO 30 PHỤ LỤC 31
Trang 4HÌNH 1-2: CHIA KHỐI TRÍCH ĐẶC TRƯNG HOG [5] 5
HÌNH 1-3: ĐẶC TRƯNG HAAR-LIKE [6] 7
HÌNH 1-4: ĐẶC TRƯNG CẠNH [7] 8
HÌNH 1-5: ĐẶC TRƯNG ĐƯỜNG [8] 8
HÌNH 1-6: ĐẶC TRƯNG XUNG QUANH TÂM [9] 8
HÌNH 1-7: ẢNH I(X, Y) [10] 8
HÌNH 1-8 : VÍ DỤ TÍNH ĐẶC TRƯNG HAAR-LIKE [11] 9
HÌNH 2-1 : BIỂU TƯỢNG CỦA NGÔN NGỮ LẬP TRÌNH PYTHON [1] 11
HÌNH 2-2: BẢNG XẾP HẠNG NGÔN NGỮ LẬP TRÌNH PHỔ BIẾN [2] 13
HÌNH 2-3: THỐNG KÊ NGÔN NGỮ GIẢNG DẠY [3] 14
HÌNH 3-1: MỘT SỐ HÌNH ẢNH POSITIVE IMAGES 16
HÌNH 3-2: MỘT SỐ HÌNH ẢNH NEGATIVE IMAGES 17
HÌNH 3-3: QUÁ TRÌNH TẠO DỮ LIỆU HO NEGATIVE IMAGES 17
HÌNH 3-4: DỮ LIỆU FILE BG.TXT 18
HÌNH 3-5: QUÁ TRÌNH TẠO DỮ LIỆU CHO POSITIVE IMAGES 18
HÌNH 3-6: DỮ LIỆU FILE INFO.DAT 19
HÌNH 3-7: QUÁ TRÌNH THU THẬP MẪU SO SÁNH 19
HÌNH 3-8: CÁC MẪU ĐÃ ĐƯỢC TẠO XONG 20
HÌNH 3-9: QUÁ TRÌNH HUẤN LUYỆN 20
HÌNH 3-10: LỚP ĐẦU TIÊN ĐƯỢC HUẤN LUYỆN XONG 21
HÌNH 3-11: PHÂN LỚP THỨ 9 ĐƯỢC HUẤN LUYỆN XONG 22
HÌNH 3-12: FILE ĐANG ĐƯỢC CHUYỂN 22
HÌNH 4-1: MÔ HÌNH CỦA HỆ THỐNG NHẬN DIỆN TRẠNG THÁI MẮT 23
Trang 5HÌNH 4-3: TRẠNG THÁI CHỚP MẮT 28
Trang 7HOG Histograms of Oriented Gradients
SURF Speeded Up Robust Features
SIFT Scale-Invariant Feature Transform
Trang 8những ứng dụng rất thực tế đó là nhận dạng trạng thái của mắt có thể được áp dụng
để để kiểm tra tài xế ngủ gật và đưa ra cảnh báo Theo dõi chuyển động của mắt đểđiều khiển các thiết bị công nghệ, xe lăn cho người tàn tật
Ngủ gật là một trong những nguyên nhân dẫn đến các vụ tai nạn giao thông Báocáo về "Rối loạn giấc ngủ và tai nạn giao thông" tại hội nghị khoa học thường niênHội Hô hấp Việt Nam và Chương trình đào tạo y khoa liên tục 2015, giáo sư TelfiloLee Chiong (Trung tâm Nationnal Jewish Health, Mỹ) cho biết thiếu ngủ là mộttrong những nguyên nhân chính gây tai nạn giao thông trên thế giới Ước tínhkhoảng 10-15% tai nạn xe có liên quan đến thiếu ngủ Nghiên cứu về giấc ngủ ở cáctài xế 19 quốc gia châu Âu cho thấy tỷ lệ buồn ngủ khi lái xe cao, trung bình 17%.Trong đó 10,8% người buồn ngủ khi lái xe ít nhất một lần trong tháng, 7% từng gâytai nạn giao thông do buồn ngủ, 18% suýt xảy ra tai nạn do buồn ngủ [4] Do đó,cảnh báo tài xế khi có hiện tượng buồn ngủ là một vấn đề thiết thực góp phần làmgiảm tỷ lệ tai nạn giao thông đang ngày càng gia tăng hiện nay
Từ những vấn đề nêu trên tôi chọn đề tài “nhận diện trạng thái mắt” dùng ngôn ngữPython mô phỏng, thực hiện nhận dạng trạng thái của mắt bằng bộ phân loạiAdaBoost rút trích đặc trưng Haar like nhận hình ảnh thu được từ camera
Nội dung đề tài được chia thành 6 chương:
Chương 1: Cơ sở dữ liệu
Chương 2: Giới thiệu ngôn ngữ Python
Chương 3: Dữ liệu huấn luyện
Chương 4: Hệ thống nhận diện trạng thái mắt
Chương 5: Kết quả mô phỏng
Chương 6: Nhận xét
Trang 91.1 Khái quát về nhận diện khuôn mặt và mắt người
Phát hiện khuôn mặt là một kỹ thuật máy tính để xác định vị trí của mặt người trongảnh Việc phát hiện mắt thực hiện trên khuôn mặt đã được phát hiện đó Có bốnhướng tiếp cận để phát hiện khuôn mặt và mắt người:
- Hướng tiếp cận dựa trên tri thức: dựa vào các thuật toán, mã hoá các đặc trưng vàquan hệ giữa các đặc trưng của khuôn mặt và mắt thành các luật
- Hướng tiếp cận dựa trên đặc trưng không thay đổi: xây dựng thuật toán để tìm racác đặc trưng của khuôn mặt và mắt, các đặc trưng này không thay đổi khi tư thếkhuôn mặt hay vị trí camera thay đổi
- Hướng tiếp cận dựa trên so sánh khớp mẫu: dùng các mẫu chuẩn của khuôn mặt
và mắt để mô tả Mẫu này được sử dụng để phát hiện khuôn mặt và mắt bằng cáchquét nó qua ảnh và tính toánh giá trị tương đồng cho mỗi vị trí Việc xuất hiện mộtkhuôn mặt tại một vị trí nào đó trong ảnh phụ thuộc vào giá trị tương đồng của điểm
đó so với mẫu chuẩn
- Hướng tiếp cận dựa trên diện mạo: trái với hướng tiếp cận dựa trên khớp mẫu, các
mô hình sẽ được học từ một tập ảnh huấn luyện mà thể hiện tính chất tiêu biểu của
sự xuất hiện mặt người và mắt trong ảnh Sau đó hệ thống sẽ xác định mặt người vàmắt Phương pháp này còn được gọi bằng phương pháp học máy
Việc tiếp cận theo mỗi hướng cần những thuật toán riêng biệt để mô tả những điểmđặc biệt
1.2 Các thuật toán mô tả điểm đặc biệt
1.1.1 Harris corner
Harris corner được Chris Harris và Mike Stephens giới thiệu vào năm 1998 Harriscorner thường được sử dụng trong các thuật toán tầm nhìn máy tính để trích xuấtgóc của một hình ảnh Một góc có thể được giải thích là đường giao nhau của haicạnh, một cạnh là sự thay đổi đột ngột độ sáng của hình ảnh Các góc là các tínhnăng quan trọng trong hình ảnh, thường được gọi là điểm quan tâm không thay đổi
Trang 10đối với dịch huyển và ánh sáng Harris corner thường được sử dụng trong việc kếthợp âm thanh và lấy cơ sở dữ liệu hình ảnh Mặc dù vẫn còn tồn tại những hạn chế,máy dò góc Harris vẫn là một kỹ thuật quan trọng và cơ bản cho nhiều ứng dụngtầm nhìn máy tính Thông thường, thuật toán phát hiện góc Harris có thể được chiathành năm bước.
Xám hoá hình ảnh: bước đầu tiên là chuyển hình ảnh thành ảnh xám để
tăng tốc độ xử lý
Tính toán không gian:
Giả sử ta có một ảnh xám I, với mỗi điểm (x, y) và độ dịch chuyển (u, v) ta
có thể tính toán sự thay đổi trung bình cường độ xám bằng một cửa sổ dịchchuyền từ (x, y) đến (x + u, y + v) như sau:
[1.1]
Với E(u, v) là sự thay đổi cường độ xám tại (u, v)
W(x, y) là cửa sổ tại (x, y) I(x, y) và I(x + u, y +v) là giá trị cường độ xámcủa pixel tại vị trí I(x,y) và I(x + u, y +v)
Giá trị I(x + u, y +v) có thể được triển khai theo công thức Taylor như sau :
I(x + u, y +v) I(x, y) + Ix(x, y)u + Iy(x, y)v [1.2]
Với Ix, Iy là đạo hàm theo thành phần x, y Vậy
Thiết lập cáu trúc tensor M:
Nếu độ dịch chuyển (u, v) nhỏ thì:
Với
Tính toán phản hồi Harris: Trong bước này, chúng ta sẽ tính giá trị tự trị
nhỏ nhất cho việc sử dụng cấu trúc với phương trình xấp xỉ sau
[1.3]
Đo đáp ứng góc :
R = det(M) – k(traceM)2 = λ1 λ2 - k (λ1+λ2)2 [1.4]
Ở đây k là hằng số xác định thực nghiệm: k = 0.04 :0.06
Trang 111.1.2 Scale-Invariant Feature Transform
Scale-Invariant Feature Transform (SIFT) là một thuật toán trong lĩnh vực thị giácmáy tính do David Lowe đưa ra từ năm 1999 Kỹ thuật SIFT được ứng dụng vàocác bài toán như: nhận dạng đối tượng, nhận dạng cử chỉ, theo dõi video Đặc trưngđược trích chọn trong SIFT là các điểm đặc biệt gọi là keypoint, các điểm này kèmtheo các mô tả về nó và một véc tơ lấy keypoint làm điểm gốc
Có bốn giai đoạn trong thuật toán để trích xuất các điểm đặc biệt và các đặc trưng:
Phát hiện cực trị không gian tỉ lệ (Scale-space Extrema Detection): áp
dụng hàm sai khác Gaussian (DoG) để tìm ra các điểm có khả năng làm điểm
Trang 12đặc trưng tiềm năng, đó là những đểm ít phụ thuộc vào sự thu phóng ảnh vàxoay ảnh.
Định vị chính xác điểm khóa (Keypoint localization): từ những điểm tiềmnăng sẽ lọc và lấy ra tập các điểm đặc trưng tốt nhất (keypoints)
Gán hướng cho các điểm khóa (Oriented Assignment): Mỗi điểm khóa sẽ
được gán cho một hoặc nhiều hướng dựa trên hướng gradient của ảnh Mọiphép toán xử lý ở các bước sau này sẽ được thực hiện trên những dữ liệu ảnh
đã được biến đổi tương đối so với hướng đã gán, kích cỡ và vị trí của mỗiđiểm khóa Nhờ đó, tạo ra một sự bất biến trong các phép xử lý này
Bộ mô tả ảnh cục bộ (Keypoint Description): Các hướng gradient cục bộ
sẽ được biễu diễn thành một dạng cho phép mô tả các tầng quan trọng củaquá trình bóp méo hình dạng cục bộ và sự thay đổi về độ sáng
1.1.3 Histograms of Oriented Gradients
Đặc trưng Histograms of Oriented Gradients (HOG) được đề xuất bởi N.Dalal năm
2005 Đặc trưng HOG dựa trên việc đếm số lần xuất hiện của các hướng đạo hàmtrong các vùng của ảnh Các toán tử HOG được cài đặt bằng cách chia nhỏ một bứcảnh thành các cell và trong mỗi cell sẽ tính histogram về các hướng của gradients.Ghép các histogram lại sẽ được một biểu diễn cho bức ảnh ban đầu Để tăng cườnghiệu năng nhận dạng, các histogram được chuẩn hóa về độ tương phản bằng cáchtính một ngưỡng cường độ trong một vùng lớn hơn của ảnh, gọi là các block và sửdụng giá trị ngưỡng đó để chuẩn hóa tất cả các cell trong khối Kết quả của bướcchuẩn hóa này là vector đặc trưng sẽ có tính bất biến cao hơn đối với các thay đổi
về điều kiện ánh sáng
Các bước cơ bản của việc tính một vector HOG cho một ảnh:
Bước 1: tính cường độ và hướng biến thiên tại mỗi pixel bằng công thức sau.
Cường độ |G| = , hướng =arctan [1.5]
Với Gx = I*Dx, Gy = I*Dy , I là hình ảnh đầu vào, Dx là bộ lọc cho chiều x, và
Dy là bộ lọc cho chiều y
Bước 2: chia ảnh đầu ra ở bước trên thành nhiều khối (block), mỗi khối có
số ô bằng nhau, mỗi ô có số pixels bằng nhau Các khối được xếp chồng lênnhau một ô như ở hình 1-2
Trang 13Hình 1-2: Chia khối trích đặc trưng HOG [5]
Số khối được tính bằng công thức:
[1.6]
Trong đó Wimage, Himage, Wblock, Hblock, Wcell, Hcell lần lượt là chiều rộng, chiềucao của ảnh, khối và ô
Bước 3: tính vector đặc trưng cho từng khối.
Chia không gian hướng thành p bin (số chiều vectơ đặc trưng của ô)
Góc hướng nghiêng tại pixel (x,y) có độ lớn α(x,y) được rời rạc hóa vào mộttrong p bin
Rời rạc hóa unsigned-HOG (p=9):
[1.7]
Rời rạc hóa signed-HOG (p=18):
[1.8]
Giá trị bin được xác định bởi tổng cường độ biến thiên của các pixels thuộc
về bin đó Nối các vectơ đặc trưng ô để được vectơ đặc trưng khối Số chiềuvectơ đặc trưng của khối tính theo công thức sizefeature/block=ncell* sizefeature/cell.Trong đó ncell là số ô trong khối và sizefeature/cell là số chiều vectơ đặc trưng của
ô bằng 9 (unsignedHOG) hoặc 18 (signed-HOG)
Bước 4: tính vector đặc trưng cho ảnh.
Chuẩn hóa vectơ đặc trưng các khối bằng một trong các công thức sau:
Trang 14Speeded Up Robust Features (SURF) được giới thiệu vào năm 2006 bởi nhóm cácnhà nghiên cứu bao gồm Herbert Bay, Tinne Tuytelaars và Luc Van Gool Cách tiếpcận của phương pháp này tương đối giống với SIFT SURF cũng sử dụng khônggian scale để tìm điểm đặc trưng, các đặc trưng được mô tả dưới dạng vector và cókèm thêm hướng Hai phần chính trong thuật toán này là phát hiện và mô tả.
Phát hiện : việc phát hiện đặc trưng dựa trên không gian scale và sử dụng ma trận
Hessian
Mô tả : việc mô tả đặc trưng sử dụng đặc trưng Haar Wavelet Sử dụng Integral
Images để tăng tốc độ tính toán Mỗi điểm đặc trưng sẽ được thêm một hướng dùng
để nhận dạng khi ảnh bị xoay Mô tả điểm đặc trưng được thể hiện dưới dạng vectorgồm 64 thành phần
Thuật toán SURF được chia thành 3 bước chính như sau:
Bước 1: các điểm quan tâm được lựa chọn tại những vị trí đặc trưng trên
bức ảnh như tại các góc, những đốm màu, các các ngã ba
Bước 2: vùng phụ cận của các điểm quan tâm được mÔ tả bằng các vector
đặc tính Bộ mô tả phải có sự riêng biệt, cùng một thời điểm, có dữ liệu thừa,sai số phát hiện, biến dạng hình học và trắc quang
Bước 3: các vector mô tả được hòa hợp giữa các bức ảnh Sự hòa hợp thông
thường dựa trên khoảng cách giữa các vector, chẳng hạn khoảng cáchMahalanobis hoặc Euclidean Kích thước của bộ mô tả có sự tác động trựctiếp tới thời gian thực hiện quá trình, và do vậy kích thước của bộ mô tả nhỏ
là tốt nhất
1.1.5 Thuật toán Haar-like feature
Một trong những phương pháp phát hiện đối tượng hiệu quả nhất hiện nay là pháthiện đối tượng sử dụng đặc trưng Haar dựa trên bộ phân loại tầng được để xuất bởiPaul Viola và Michael Jones Đây là một phương pháp học máy dựa trên cách tiếpcận sử dụng chức năng tầng được huấn luyện bởi cách ảnh tích cực và tiêu cực vàsau đó dùng để phát hiện các đối tượng ở các ảnh khác
Mỗi đặc trưng Haar–like là sự kết hợp của hai hay ba hình chữ nhật trắng hay đennhư trong hình sau:
Trang 15- Đặc trưng xung quanh tâm (center-surround features):
Hình 1-6: Đặc trưng xung quanh tâm [9]
Cách tính đặc trưng Haar-Like
Dùng các đặc trưng trên, ta có thể tính được giá trị của đặc trưng Haar-like là sựchênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như trongcông thức sau:
f(x) = Tổngvùng đen(các mức xám của pixel) - Tổngvùng trắng(các mức xám củapixel)
Cách tính nhanh đặc trưng Haar-Like dựa trên đạo hàm ảnh bậc nhất ii(x, y) của ảnhi(x, y), là tổng giá trị các pixel tính từ gốc trái đến (x, y):
[1.11]
Trang 16Hình 1-7: Ảnh i(x, y) [10]
Việc tính toán đạo hàm ảnh rất nhanh bằng việc cộng tích luỹ như sau:
s(x, y) = s(x, y - 1) + i(x, y)ii(x, y) = ii(x - 1, y) + s(x, y)Trong đó s(x, y) là tổng của cột x tính từ đầu dòng đến vị trí (x, y)
Hình 1-8 : Ví dụ tính đặc trưng Haar-Like [11]
Ví dụ tính đặc trưng Haar-Like của ô chữ nhật D:
D = (ii(x, y) + ii(x – W, y – L)) – (ii(x – W, y) + ii(x, y – L))
Trong luận văn này sử dụng đặc trưng Haar-like do đó nên dùng phương pháp tiếpcận dựa trên diện mạo kết hợp với bộ phân loại Adaboost và mô hình Cascade ofClassifiers để tăng tốc độ phát hiện khuôn mặt và mắt Hai phần này sẽ trình bày ởchương 3
Trang 17HOG Mô tả đặc trưng trên một
vùng rộngBất biến đối với các thayđổi về điều kiện ánh sáng
có góc quay và tỉ lệ khácnhau
Nhận dạng nhanh hơnSIFT
Thời gian tính toán khálâu và khó áp dụng trongthực tế nếu tập dữ liệu cầnnhận dạng lớn
phép biến đổi ảnh cơ bảnnhư xoay, thu phóng, thayđổi độ sáng
Nhận dạng sẽ có độ chínhxác rất cao và thậm chí cóthể khôi phục được đốitượng bị che khuất trongảnh
Tính toán phức tạp
Đòi hỏi thời gian nghiêncứu và am hiểu nhiềuthuật toán thành phần
Harris Corner Là gốc của các thuật toán
khác
Bất biến khi độ sáng, gócnhìn thay đổi
Haar-Like feature Tốc độ tính toán nhanh
Độ chính xác cao - hơn80%
Bị ảnh hưởng bởi gócnhìn, độ sáng
CHƯƠNG 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON
1.3 Giới thiệu Python
Trang 18Python là ngôn ng l p trình m c cao, đa m c đích đữ ậ ứ ụ ược s d ng r ng rãi.ử ụ ộTri t lý thi t k c a ngôn ng này là nh n m nh vào kh năng đ c mã và cúế ế ế ủ ữ ấ ạ ả ọpháp c a nó cho phép các l p trình viên di n t các ý tủ ậ ễ ả ưởng ch trong vài dòngỉcode Ngôn ng này cung c p các c u trúc nh m giúp cho các chữ ấ ấ ằ ương trình ởquy mô nh l n quy mô l n.ỏ ẫ ớ
Hình 2-1 : Biểu tượng của ngôn ngữ lập trình Python [1]
Trình thông d ch c a Python đã có m t trên nhi u h đi u hànhị ủ ặ ề ệ ề Windows,Linux, Mac, Amiga, và nh ng h khácữ ệ
1.4 Lịch sử phát triển của Python
Python là m t ngôn ng l p trình thông d ch do Guido van Rossum p tộ ữ ậ ị ấ ủ ừ
nh ng năm đ u th p niên 80 c a th k trữ ầ ậ ủ ế ỷ ước, được hi n th c vào tháng 12ệ ựnăm 1989, hoàn thành năm 1991 và đ a ra công chúng năm 1994 Pythonư
được phát tri n trong m t d án mã m , do t ch c phi l i nhu n Pythonể ộ ự ở ổ ứ ợ ậSoftware Foundation qu n lý.ả
Python 2.0 đã được phát hành vào ngày 16 tháng 10 năm 2000 và có nhi u tínhềnăng m i, bao g m b thu gom rác theo chu kỳ và h tr Unicode V i vi cớ ồ ộ ỗ ợ ớ ệphát hành này quá trình phát tri n đã để ược thay đ i và tr nên minh b ch h nổ ở ạ ơ
và c ng đ ng h u thu nộ ồ ậ ẫ
Python 3.0 được phát hành năm 2008, sau m t th i gian dài th nghi m.ộ ờ ử ệ
Cho t i năm 2017, Python đang có phiên b n 3.7ớ ả
1.5 Đặc điểm của ngôn ngữ Python
1.1.6 Dễ học, dễ đọc
Trang 19Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu và cấu trúc cúpháp so với các ngôn ngữ khác.
Python là m t ngôn ng phân bi t ki u ch HOA, ch thộ ữ ệ ể ữ ữ ường Nh C/C++, cácư
t khóa c a Python đ u d ng ch thừ ủ ề ở ạ ữ ường
1.1.7 Khối lệnh
Trong các ngôn ng khác, kh i l nh thữ ố ệ ường được đánh d u b ng c p kí hi uấ ằ ặ ệ
ho c t khóa Ví d , trong C/C++, c p ngo c nh n { } đặ ừ ụ ặ ặ ọ ược dùng đ bao b cể ọ
m t kh i l nh Python có m t cách r t đ c bi t đ t o kh i l nh, đó là th tộ ố ệ ộ ấ ặ ệ ể ạ ố ệ ụcác câu l nh trong kh i vào sâu h n (v bên ph i) so v i các câu l nh c a kh iệ ố ơ ề ả ớ ệ ủ ố
Python là m t ngôn ng đa bi n hóa Có nghĩa là, thay vì ép bu c m i ngộ ữ ế ộ ọ ười
ph i s d ng duy nh t m t phả ử ụ ấ ộ ương pháp l p trình, Python l i cho phép sậ ạ ử
d ng nhi u phụ ề ương pháp l p trình khác nhau: hậ ướng đ i tố ượng, có c u trúc,ấ
ch c năng, ho c ch hứ ặ ỉ ướng đ n m t khía c nh ế ộ ạ
1.1.10 Trình thông dịch
Python là m t ngôn ng l p trình d ng thông d ch, do đó có u đi m ti t ki mộ ữ ậ ạ ị ư ể ế ệ
th i gian phát tri n ng d ng vì không c n ph i th c hi n biên d ch và liênờ ể ứ ụ ầ ả ự ệ ị
k t Trình thông d ch có th đế ị ể ược s d ng đ ch y file script, ho c cũng cóử ụ ể ạ ặ
th để ược s d ng theo cách tử ụ ương tác ch đ tỞ ế ộ ương tác, trình thông d chị
Trang 20Python tương t shell c a các h đi u hành h Unix, t i đó, ta có th nh p vàoự ủ ệ ề ọ ạ ể ậ
t ng bi u th c r i gõ Enter, và k t qu th c thi sẽ đừ ể ứ ồ ế ả ự ược hi n th ngay l p t c.ể ị ậ ứ
Đ c đi m này r t h u ích cho ngặ ể ấ ữ ười m i h c, giúp h nghiên c u tính năngớ ọ ọ ứ
c a ngôn ng ; ho c đ các l p trình viên ch y th mã l nh trong su t quáủ ữ ặ ể ậ ạ ử ệ ốtrình phát tri n ph n m m Ngoài ra, cũng có th t n d ng đ c đi m này để ầ ề ể ậ ụ ặ ể ể
Theo th ng kê t top 39 trố ừ ường gi ng d y khoa h c máy tính thì đa ph n cácả ạ ọ ầ
trường s d ng ngôn ng Python đ gi ng d y:ử ụ ữ ể ả ạ