BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề Tài: Tìm Hiểu Lập Trình Python Và PyOpenGl GVHD: Th.S Hồ Trung Mỹ TP. HỒ CHÍ MINH, THÁNG 09 NĂM 2020 LỜI CẢM ƠN Chúng em xin cảm ơn chân thành tới các thầy cô Khoa Điện- Điện Tử Trường ĐH thầy cô. Chúng em xin chân thành cảm ơn! Tp. Hồ Chí Minh, ngày 08 tháng 09 năm 2020. Sinh viên MỤC LỤC LỜI MỞ ĐẦU 3 1. TỔNG QUAN VỀ NGÔN NGỮ PYTHON 4 1.1 Giới thiệu Python 4 1.1.1. Đặc điểm 4 1.1.2. Ưu điểm 4 1.1.3. Nhược điểm 5 1.2 Cú pháp ngôn ngữ 5 1.2.1. Biến số và toán tử 5 1.2.2. Kiểu dữ liệu 6 1.2.3. Cấu trúc lặp và rẽ nhánh 7 1.2.4. Hàm và Class 7 1.3 Phân chia module 9 1.3.1. Các loại module 9 1.3.2. Cách sử dụng module 9 1.4 Xử lý tập tin 10 1.4.1. Mở file 10 1.4.2. Đọc file 11 1.4.3. Ghi vào file 11 1.4.4. Đóng file 11 1.4.5. Đổi tên/ xóa file 11 2. GIỚI THIỆU VỀ PYOPENGL 12 2.1 Tìm hiểu về OpenGl 12 2.2 Cấu trúc tập lệnh 13 2.3 Ứng dụng của OpenGL 14 2.3.1. Vẽ các đối tượng hình học 14 2.3.2. Thao tác trên ModelView 16 2.3.3. Thao tác trên Projection 17 2.3.4. Thao tác trên Viewport 18 2.3.5. Thiết lập mô hình shading 19 2.3.6. Tương tác với người dùng 20 3. MỘT SỐ DEMO CƠ BẢN 23 3.1 Vẽ khối lập phương xoay 23 3.2 Tương tác với chuột và bàn phím 24 3.3 Thao tác với Model View và thư viện Random 25 3.4 Tạo một khối cầu mặt lưới từ hai mặt phẳng cắt 26 3.5 Xây dựng mô hình Trái Đất quay xung quanh Mặt Trời 26 3.6 Thiết lập mô hình Smooth-Shading cho một tam giác 26 4. ĐỀ XUẤT CÁC ĐỀ TÀI LIÊN QUAN 26 5. TÀI LIỆU THAM KHẢO 26 6. PHỤ LỤC 26 LỜI MỞ ĐẦU Thật rõ ràng để nhận thấy rằng nếu chỉ hiển thị thông tin chỉ với các ký hiệu, chữ cái, chữ số thì sẽ không thể hấp dẫn và dễ hiểu như khi có thêm biểu diễn bằng Kỹ thuật đồ hoạ. Đây cũng là công cụ không thể thiếu trong các ngành khoa học kỹ thuật, giáo dục, nghệ thuật, giải trí, quảng cáo…(để diễn đạt máy móc thiết bị, kiến trúc, cấu trúc cơ thể, thông tin thiên văn địa lý, hình ảnh minh hoạ..). Cùng với sự phát triển của tin học, kỹ thuật đồ họa trên máy vi tính, ngày càng trở nên tinh xảo. Giao diện các phần mềm ngày nay trở nên thân thiện, đẹp mắt nhờ các thể hiện đồ họa. Sự hỗ trợ của tin học cho các ngành khác trở nên đắc lực hơn nhờ khả năng đồ họa vi tính. Ngôn ngữ lập trình (Programming language) là dạng ngôn ngữ máy tính sử dụng để phát triển các chương trình phần mềm, tập lệnh hoặc các chuẩn hóa theo một hệ thống các quy tắc riêng để máy tính thực thi. Hiện nay có rất nhiều ngôn ngữ lập trình đang được sử dụng như JavaScript, Java, C/C++,Python,…Python có cú pháp khá đơn giản, tốc độ xử lý nhanh, mượt, không quá kén người sử dụng, nhất là phù hợp với những người học lập trình game và ứng dụng. Một điều đáng kinh ngạc đối với Python là tốc độ phát triển nhanh nhất hiện nay. Trong thành công của kỹ thuật đồ họa ngày nay không thể không nói đến sự phát triển vượt bậc của tốc độ phần cứng lẫn hệ điều hành. Nhưng bản thân kỹ thuật đồ họa thì có bước tiến nhảy vọt từ những phép tính toán học phức tạp đến những thư viện đồ họa được tạo sẳn. Các thư viện này cho phép giảm nhẹ thời gian và công sức của người lập trình; Bởi với chúng, để có được một “tác phẩm”đồ họa không đòi hỏi phải có một kiến thức hùng hậu về đường cong Bezier, B-spline, về hình học, tạo bóng…, mà chỉ ứng dụng các hàm tạo sẵn. Một trong những thư viện đó là OpenGL, được xem là tiêu chuẩn thiết kế công nghiệp cho đồ họa ba chiều. Mục tiêu của bài tiểu luận này làtìm hiểu thư viện đồ họa của OpenGL trong đồ họa ba chiều, đồng thời cũng cố gắng đưa ra một ứng dụng của OpenGL trong việc minh họa các giải thuật đồ họa ba chiều một cách đơn giản và dễ tiếp cận.
ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ -o0o - BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề Tài: Tìm Hiểu Lập Trình Python Và PyOpenGl GVHD: Th.S Hồ Trung Mỹ TP HỒ CHÍ MINH, THÁNG 09 NĂM 2020 LỜI CẢM ƠN GVHD: Th.S Hồ Trung Mỹ LỜI CẢM ƠN Chúng em xin cảm ơn chân thành tới thầy cô Khoa Điện- Điện Tử Trường ĐH Bách Khoa- Đại Học Quốc Gia TP.HCM, đặc biệt thầy Hồ Trung Mỹ tận tình hướng dẫn, hỗ trợ chúng em suốt thời gian thực tập trình làm báo cáo thực tập tốt nghiệp Trong thời gian thực tập chúng em truyền đạt kinh nghiệm quý báu để giúp chúng em công việc sau này, chúng em học thêm kiến thức kinh nghiệm thực tế có điều kiện phát huy kiến thức chuyên môn học trường thầy tận tình giảng dạy Với kiến thức cịn hạn chế nên báo cáo TTTN tránh khỏi thiếu xót mong thơng cảm quý thầy cô Chúng em xin chân thành cảm ơn! Tp Hồ Chí Minh, ngày 08 tháng 09 năm 2020 Sinh viên ii MỤC LỤC LỜI MỞ ĐẦU TỔNG QUAN VỀ NGÔN NGỮ PYTHON 1.1 1.1.1 Đặc điểm 1.1.2 Ưu điểm 1.1.3 Nhược điểm 1.2 Cú pháp ngôn ngữ 1.2.1 Biến số toán tử 1.2.2 Kiểu liệu 1.2.3 Cấu trúc lặp rẽ nhánh 1.2.4 Hàm Class 1.3 Phân chia module 1.3.1 Các loại module 1.3.2 Cách sử dụng module 1.4 Giới thiệu Python Xử lý tập tin 10 1.4.1 Mở file 10 1.4.2 Đọc file 11 1.4.3 Ghi vào file 11 1.4.4 Đóng file 11 1.4.5 Đổi tên/ xóa file 11 GIỚI THIỆU VỀ PYOPENGL 12 2.1 Tìm hiểu OpenGl 12 2.2 Cấu trúc tập lệnh 13 2.3 Ứng dụng OpenGL 14 2.3.1 Vẽ đối tượng hình học 14 2.3.2 Thao tác ModelView 16 2.3.3 Thao tác Projection 17 2.3.4 Thao tác Viewport 18 2.3.5 Thiết lập mơ hình shading 19 2.3.6 Tương tác với người dùng 20 MỘT SỐ DEMO CƠ BẢN 23 3.1 Vẽ khối lập phương xoay 23 3.2 Tương tác với chuột bàn phím 24 3.3 Thao tác với Model View thư viện Random 25 3.4 Tạo khối cầu mặt lưới từ hai mặt phẳng cắt 26 3.5 Xây dựng mơ hình Trái Đất quay xung quanh Mặt Trời .26 3.6 Thiết lập mơ hình Smooth-Shading cho tam giác 26 ĐỀ XUẤT CÁC ĐỀ TÀI LIÊN QUAN 26 TÀI LIỆU THAM KHẢO 26 PHỤ LỤC 26 LỜI MỞ ĐẦU Thật rõ ràng để nhận thấy hiển thị thông tin với ký hiệu, chữ cái, chữ số khơng thể hấp dẫn dễ hiểu có thêm biểu diễn Kỹ thuật đồ hoạ Đây công cụ thiếu ngành khoa học kỹ thuật, giáo dục, nghệ thuật, giải trí, quảng cáo…(để diễn đạt máy móc thiết bị, kiến trúc, cấu trúc thể, thơng tin thiên văn địa lý, hình ảnh minh hoạ ) Cùng với phát triển tin học, kỹ thuật đồ họa máy vi tính, ngày trở nên tinh xảo Giao diện phần mềm ngày trở nên thân thiện, đẹp mắt nhờ thể đồ họa Sự hỗ trợ tin học cho ngành khác trở nên đắc lực nhờ khả đồ họa vi tính Ngơn ngữ lập trình (Programming language) dạng ngơn ngữ máy tính sử dụng để phát triển chương trình phần mềm, tập lệnh chuẩn hóa theo hệ thống quy tắc riêng để máy tính thực thi Hiện có nhiều ngơn ngữ lập trình sử dụng JavaScript, Java, C/C++,Python,…Python có cú pháp đơn giản, tốc độ xử lý nhanh, mượt, không kén người sử dụng, phù hợp với người học lập trình game ứng dụng Một điều đáng kinh ngạc Python tốc độ phát triển nhanh Trong thành công kỹ thuật đồ họa ngày khơng thể khơng nói đến phát triển vượt bậc tốc độ phần cứng lẫn hệ điều hành Nhưng thân kỹ thuật đồ họa có bước tiến nhảy vọt từ phép tính tốn học phức tạp đến thư viện đồ họa tạo sẳn Các thư viện cho phép giảm nhẹ thời gian cơng sức người lập trình; Bởi với chúng, để có “tác phẩm”đồ họa khơng địi hỏi phải có kiến thức hùng hậu đường cong Bezier, B-spline, hình học, tạo bóng…, mà ứng dụng hàm tạo sẵn Một thư viện OpenGL, xem tiêu chuẩn thiết kế công nghiệp cho đồ họa ba chiều Mục tiêu tiểu luận làtìm hiểu thư viện đồ họa OpenGL đồ họa ba chiều, đồng thời cố gắng đưa ứng dụng OpenGL việc minh họa giải thuật đồ họa ba chiều cách đơn giản dễ tiếp cận TỔNG QUAN VỀ NGÔN NGỮ PYTHON 1.1 Giới thiệu Python 1.1.1 Đặc điểm Python ngơn ngữ lập trình bậc cao cho mục đích lập trình đa năng, Guido van Rossum tạo lần đầu mắt vào năm 1991 Viện toán-tin Hà Lan Python kế thừa từ nhiều ngôn ngữ ABC, Module-3, C, C++, Unix Shell,… Đến cộng đồng người sử dụng ngôn ngữ đông, so sánh từ bảng xếp hạng ngơn ngữ năm 2016 Python đứng thứ top 10 ngôn ngữ lập trình phổ biến Có thể thấy nhiều ví dụ từ trò chơi điện tử đơn giản, thuật tốn tìm kiếm phức tạp, Python trở thành lựa chọn hoàn hảo cho lập trình viên Đặc biệt với bùng nổ cơng nghệ AI – trí tuệ nhân tạo năm gần đây, tên Python liên tục nhắc đến cơng cụ hữu ích lĩnh vực công nghệ thông tin 1.1.2 Ưu điểm - Python ngôn ngữ bậc cao dễ dàng sử dụng Python có số lượng từ khóa hơn, cấu trúc Python đơn giản cú pháp Python định nghĩa rõ ràng Tất điều Python thực trở thành ngơn ngữ thân thiện với lập trình viên - Phần code Python định nghĩa rõ ràng rành mạch - Python có thư viện chuẩn rộng lớn Thư viện dễ dàng tương thích tích hợp với UNIX, Windows, Macintosh - Python ngơn ngữ thơng dịch Trình thơng dịch thực thi code theo dịng, điều giúp cho q trình debug trở nên dễ dàng yếu tố quan trọng giúp Python thu hút nhiều người học trở nên phổ biến - Python ngơn ngữ lập trình hướng đối tượng Ngồi ra, Python cịn hỗ trợ phương thức lập trình theo hàm theo cấu trúc - Ngồi đặc điểm trên, Python cịn nhiều đặc điểm khác hỗ trợ lập trình GUI, mã nguồn mở, tích hợp với ngơn ngữ lập trình khác, … 1.1.3 Nhược điểm - Tốc độ chậm so với ngôn ngữ C/C++ hay Java - Không phải ngôn ngữ tốt dành cho tảng mobile - Python lựa chọn tốt cho tốn cần tối ưu nhớ - Python có nhiều giới hạn làm việc với sở liệu phức tạp 1.2 Cú pháp ngôn ngữ 1.2.1 Biến số toán tử Ta khai báo biến cách gán giá trị cụ thể cho Biến tự động giải phóng khỏi phạm vi chương trình sử dụng Một biến gán nhiều loại giá trị số, chuỗi, ký tự >>>a = >>>a = 'Hello World' >>>a = [1, 2, 3] >>>a = [1.2, 'Hello', 'W', 2] Cũng khai báo nhiều giá trị cho nhiều biến dòng chuyển đổi hai giá trị dễ dàng: >>> a , b = 45, 54 >>> a, b = b , a >>> a 54 >>> b 45 1.2.2 Kiểu liệu Kiểu số 1234585396326 (số nguyên dài vô hạn) -86.12 7.84E-04 3+ 8j (số phức) Kiểu chuỗi (string): Đặt cặp dấu ‘ “ "Hello" "It's me" '"OK"-he replied' Kiểu (tuple): cấu trúc mảng tuple khai báo khơng thay đổi giá trị (immutable) mytuple = ('x' , 'y' , 'z') (1, 2.0, 3) (1,) ("Hello",1,()) Kiểu danh sách (list): cấu trúc mảng phần tử có index có thứ tự numbers = [1, 2, 3, 4, 5] names = ['Marry' , 'Peter'] Kiểu từ điển (dictionary):là cấu trúc mảng, phần tử bao gồm key value {"Vietnam":"Hanoi", "Netherlands":"Amsterdam","France":"Paris"} Chú thích: giúp cho lập trình viên dễ dàng cải tiến mã nguồn, ghi chức đoạn code thực # dịng thích 1.2.3 Cấu trúc lặp rẽ nhánh a) If…elif…else if : elif : elif max: max = x return max data = [1, 5, 1, 12,3, 4, 6] print “Data:”, data Kết quả: Data: [1, 5, 1, 12,3, 4, 6] Maximum: 12 Khai báo Class theo cú pháp sau: Một số tính chất điểm đoạn cần quan tâm thiết lập qua hàm: Kích thước điểm: void glPointSize(GLfloat size) Độ rộng đoạn thẳng: void glLineWidth(GLfloat width) Kiểu vẽ 2.3.2 Thao tác ModelView Trước thực thao tác ModelView, cần gọi hàm glMatrixMode(GL_MODELVIEW); OpenGL hỗ trợ sẵn hàm biến đổi affine sau Tịnh tiến: void glTranslate{fd}(TYPEx, TYPE y, TYPEz); Quay quanh trục nối gốc tọa độ với điểm (x,y,z) void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z); Tỉ lệ (tâm tỉ lệ gốc tọa độ) void glScale{fd}(TYPEx, TYPE y, TYPEz); Ví dụ: thực phép quay quanh trục z góc α tịnh tiến đoạn theo vector(trx, try, trz), bước thực là: Giống chụp hình, thiết lập view thiết lập vị trí góc, hướng camera GLUT cómột hàm giúp thiết lập view cách nhanh chóng void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, Gldoublecenterx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdoubleupy, GLdouble upz) (eyex, eyey, eyez) vị trí đặt view, (centerx, centery, centerz) điểm nằm đường thẳng xuất phát từ tâm view hướng rangoài, (upx, upy, upz) vector hướng lên view 2.3.3 Thao tác Projection Trước thực thao tác chiếu, gọi hàm glMatrixMode(GL_PROJECTION); glLoadIdentity(); Chiếu phối cảnh (Perspective Projection) Đặc điểm phép chiếu đối tượng lùi xa trông nhỏ Để thiết lập phép chiếu này, OpenGL có hàm void glFrustum(GLdouble left, GLdouble right, GLdouble bottom,GLdoubletop, GLdouble near, GLdouble far); Chiếu trực giao (Orthogonal Projection) Trong phép chiếu này, khoảng cách vật tới camera không ảnh hưởng tới độ lớn vật hiển thị Để thiết lập phép chiếu này, OpenGL có hàm void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdoubletop, GLdouble near, GLdouble far); 2.3.4 Thao tác Viewport OpenGL có hàm để thiết lập viewport void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); (x,y) vị trí điểm trái-trên cửa sổ vẽ, width, height chiều rộng cao củaviewport Mặc định (x,y,width,height) = (0,0,winWidth, winHeight) (chiếm toàn cửa sổ) 2.3.5 Thiết lập mơ hình shading OpenGL hỗ trợ chế độ màu: RGBA Color-Index Trong chế độ màu RGBA, RGB thể màu Red, Green, Blue Cịn thành phần A (tứcalpha) khơng thực ảnh hưởng trực tiếp lên màu pixel, người ta dùng thành phần A đểxác định độ suốt hay thơng số cần quan tâm Để thiết lập màu vẽ hành chế độ RGBA, sử dụng hàm sau void glColor3{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb); void glColor4{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb, TYPEa); void glColor3{b s i f d ub us ui}v (const TYPE*v); void glColor4{b s i f d ub us ui}v (const TYPE*v); đó, tham số số thực thành phần màu tương ứng nằm đoạn [0,1],ngược lại chuyển đổi bảng sau Một đoạn thẳng tơ màu đồng (chế độ flat) hay nhiều màu sắc khácnhau (chế độ smooth) Để thiết lập chế độ shading phù hợp, sử dụng hàm sau: void glShadeModel (GLenum mode); mode chế độ mong muốn, nhận giá trị GL_SMOOTH GL_FLAT 2.3.6 Tương tác với người dùng Việc cho phép người dùng chọn đối tượng cách click chuột cửa sổ yêu cầu thiếtyếu ứng dụng tương tác Để thực chức vậy, trongOpenGL có sẵn chế độ Selection.Có công đoạn lớn cần phải làm Công đoạn thao tác để biến đổi đối tượng khơng gian pixel sau đóhiển thị lên hình Cơng đoạn 2, gần ngược lại, chương trình xác định xem pixel màngười dùng tương tác (ví dụ nhấn chuột trái) thuộc đối tượng Để chuyển đổi qua lại công đoạn (hay chế độ), dùng hàm GLint glRenderMode(GLenum mode); mode GL_RENDER GL_SELECT Trước tiên cần kích hoạt chế độ selection glRenderMode(GL_SELECT) Việc xác định vùng chọn tương tự việc xác định khối nhìn, tức thao tác trênphép chiếu Thao tác tổng quát sau glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); gluPickMatrix ( ); gluPerspective, glOrtho, gluOrtho2D, or glFrustum /* */ glPopMatrix(); Trong đó, void gluPickMatrix(GLdouble x, GLdouble y, GLdouble width, GLdoubleheight, GLint viewport[4]); hàm xác định vùng quan tâm viewport (ví dụ xung quanh vùng click chuột) với: (x, y, width, height) tham số xác định quan tâm viewport viewport[4] mảng phần tử chứa tham số viewport, dùng hàmglGetIntegerv(GL_VIEWPORT, GLint *viewport) để lấy OpenGL có stack giúp thao tác tên đối tượng, với hàm void glInitNames(void) khởi tạo stack (stack lúc rỗng) void glPushName(GLuint name) đặt tên đối tượng cần xét vào stack void glPopName(void) lấy tên nằm đỉnh stack khỏi stack void glLoadName(GLuint name) thay nội dung đỉnh stack Việc sử dụng stack giúp cho mục đích thứ – xây dựng tên mang tính phân cấp Mỗi lầnthực thi glPushName(name) glLoadName(name) chương trình hiểu đối tượngđược vẽ dòng lệnh sau có tên name chúng thành phần phận đối tượng cótên đặt đỉnh stack Để truy vấn xem đối tượng chọn, OpenGL xử lý sau trước tiên đánh dấu đối tượng có vùng giao với vùng chọn, sau đó, với đối tượng có vùng giao, tên giá trị z nhỏ nhất, z lớn vùng giao lưu hit records truy vấn đối tượng chọn thực hit records Để khởi tạo hit records, cần phải gọi hàm void glSelectBuffer(GLsizei size, GLuint *buffer) buffer mảng chứa hit records Chú ý: thủ thục phải gọi trước chuyển sang chế độ GL_SELECT MỘT SỐ DEMO CƠ BẢN 3.1 Vẽ khối lập phương xoay Example1 3.2 Tương tác với chuột bàn phím Example2 3.3 Thao tác với Model View thư viện Random Example3 ĐỀ XUẤT CÁC ĐỀ TÀI LIÊN QUAN OpenGL nơi gần CPU (cái mà - developer - chạy ứng dụng ngơn ngữ lập trình) GPU (chip xử lý đồ họa) Vì OpenGL cần phải hỗ trợ nhà sản xuất card đồ họa (VD: NVidia) cài đặt đối tác phát triển hệ điều hành (giống Apple hay Microsoft) cuối OpenGL cho API thống để làm việc Ngày nay, ta thấy logo OpenGL (hoặc OpenGL ES) nhiều trò chơi, ứng dụng 3D, 2D nhiều phần mềm khác (đặc biệt phần mềm 3D) OpenGL ES dùng PlayStation, Android, Nintendo 3DS, Nokia, Samsung, Symbian tất nhiên Apple với MacOS iOS Bằng việc sử dụng thư viện OpenGL, mở rộng thành đề tài chẳng hạn vẽ hình khơng gian ba chiều hay sử dụng thư viện OpenGl để vẽ đường cong mặt cong Benzier, B-SPLINE… Bên cạnh OpenGL cơng cụ hỗ trợ lập trình game điện tử làm việc với tảng khác từ PC/Mac, hệ máy consoles PS3, PS4, XBox 360, Xbox One, thiết bị mobile Android,… TÀI LIỆU THAM KHẢO [1] Allen B Downey, “Think Python 2e”, greenteapress.com/thinkpython2/html/index.html [2] Dave Shreiner, Graham Sellers, John M Kessenich, “OpenGL Programming Guide: The Official Guide to Learning OpenGL” [3] Lê Phong, “Tìm hiểu thư viện đồ họa OpenGL”, Đề tài tốt nghiệp, 2016 [4] Võ Duy Tuấn, “Python bản”, Nhà xuất Đại Học Quốc Gia Hà Nội, 2018 [5] opengl.org/resources/libraries/glut [6] pythonprogramming.net/opengl-pyopengl-python-pygame-tutorial [7] github.com/id-Software/Quake PHỤ LỤC Source code cho example: drive.google.com/drive/folders/19phBc1JPGOP0tVR4wj9Z6cBbXGz0v1QS?usp=sharing ... PYTHON 1.1 Giới thiệu Python 1.1.1 Đặc điểm Python ngơn ngữ lập trình bậc cao cho mục đích lập trình đa năng, Guido van Rossum tạo lần đầu mắt vào năm 1991 Viện toán-tin Hà Lan Python kế thừa từ... Python ngôn ngữ lập trình hướng đối tượng Ngồi ra, Python cịn hỗ trợ phương thức lập trình theo hàm theo cấu trúc - Ngoài đặc điểm trên, Python nhiều đặc điểm khác hỗ trợ lập trình GUI, mã nguồn... năm 2016 Python đứng thứ top 10 ngơn ngữ lập trình phổ biến Có thể thấy nhiều ví dụ từ trị chơi điện tử đơn giản, thuật tốn tìm kiếm phức tạp, Python trở thành lựa chọn hồn hảo cho lập trình viên