1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình python

41 616 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 1,89 MB

Nội dung

Hiện nay ngôn ngữ lập trình Python ngày càng vươn lên hàng top, nhu cầu tuyển dụng cũng khá lớn. Để đáp ứng nhu cầu của các bạn Tui đã lên kế hoạch viết các bài hướng dẫn từng bước phương pháp và kỹ thuật học lập trình Python hi vọng sẽ giúp ích một xíu gì đó cho độc giả.Phần giới thiệu về Python cũng như các đặc tính của nó là giống nhau trên các trang mạng khi bạn tìm kiếm thấy, vì vậy Tui có tổng hợp lại đây giúp các bạn có thể dễ dàng đọc qua để hiểu thêm về Python. Cám ơn các tác giả trên Internet mà Tui đã tìm đọc được.1.Giới thiệu khái quát về PythonPython là một ngôn ngữ lập trình năng động với nhiều tính năng được sử dụng trong một loạt các ứng dụng. Hình 1 Logo Ngôn ngữ python Python thường được so sánh với Tcl, Perl, Ruby, Scheme, hoặc Java. Một vài tính năng đặc trưng của nó gồm:Cú pháp rất trong sáng, dễ đọcCác khả năng tự xét mạnh mẽHướng đối tượng trực giácCách thể hiện tự nhiên mã thủ tụcHoàn toàn môđun hóa, hỗ trợ các gói theo cấp bậcXử lý lỗi dựa theo ngoại lệKiểu dữ liệu động ở mức rất caoCác thư viện chuẩn và các môđun ngoài bao quát hầu như mọi việcphần mở rộng và môđun dễ dàng viết trong C, C++ (hoặc Java cho Jython, hoặc các ngôn ngữ .NET cho IronPython)có thể nhúng trong ứng dụng như một giao diện kịch (scripting interface)Python mạnh mẽ và thực hiện nhanhBản thân ngôn ngữ Python là một nhà máy linh động có thể giải quyết hầu hết mọi vấn đề. Dễ dàng viết máy chủ web. Viết mã theo hướng dữ liệu với khả năng tự xét mạnh mẽ và khả chuyển và những tính năng như metaclasses, duck typing và decorators của Python.Python giúp ta viết mã lệnh nhanh chóng. Nhờ vào trình biên dịch đã được tối ưu hóa, và những thư viện hỗ trợ, mã Python chạy nhanh hơn đa số các ứng dụng khác.Python dễ dàng kết nối với các thành phần khácPython có thể kết nối với các đối tượng COM, .NET (Ironpython, Python for .net), và CORBA, java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác.Có thể viết các thư viện bên C, C++ để nhúng vào Python và ngược lại.Python là ngôn ngữ có khả năng chạy đa nền tảngPython có cho mọi hệ điều hành: Windows, LinuxUnix, OS2, Mac, Amiga, và những hệ khác. Thậm chí có cả những phiên bản chạy trên .NET, máy ảo Java, và điện thoại di động Nokia Series 60. Với cùng một mã nguồn sẽ chạy không khác nhau trên mọi cài đặt.Python rất đơn giản và dễ họcPython có cộng đồng lập trình rất lớn, được chia sẻ rất nhiều thông tin hữu ích.Python cũng có kho tài liệu đầy đủ, vừa tồn tại trong bản thân ngôn ngữ lẫn trên mạng. Những tài liệu trên mạng nhắm vào cả lập trình viên chuyên nghiệp lẫn người mới. Tất cả đều được thiết kế nhằm giúp bạn sản xuất nhanh hơn.Python là ngôn ngữ mã nguồn mởCài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do, ngay cả trong việc thương mại. Giấy phép Python được quản lý bởi Python Software Foundation.

Trang 1

Lập trình Python

Bài 01: Có nên học lập trình Python?

Hiện nay ngôn ngữ lập trình Python ngày càng vươn lên hàng top, nhu cầu tuyển dụng cũng khá lớn Để đáp ứng nhu cầu của các bạn Tui đã lên kế hoạch viết các bàihướng dẫn từng bước phương pháp và kỹ thuật học lập trình Python hi vọng sẽ giúp ích một xíu gì đó cho độc giả

Phần giới thiệu về Python cũng như các đặc tính của nó là giống nhau trên các trang mạng khi bạn tìm kiếm thấy, vì vậy Tui có tổng hợp lại đây giúp các bạn có thể dễ dàng đọc qua để hiểu thêm về Python Cám ơn các tác giả trên Internet mà Tui đã tìm đọc được

1 Giới thiệu khái quát về Python

Python là một ngôn ngữ lập trình năng động với nhiều tính năng được sử dụng trongmột loạt các ứng dụng

Hình 1- Logo Ngôn ngữ python

Python thường được so sánh với Tcl, Perl, Ruby, Scheme, hoặc Java Một vài tính năng đặc trưng của nó gồm:

 Cú pháp rất trong sáng, dễ đọc

 Các khả năng tự xét mạnh mẽ

 Hướng đối tượng trực giác

 Cách thể hiện tự nhiên mã thủ tục

Trang 2

 Hoàn toàn mô-đun hóa, hỗ trợ các gói theo cấp bậc

 Xử lý lỗi dựa theo ngoại lệ

 Kiểu dữ liệu động ở mức rất cao

 Các thư viện chuẩn và các mô-đun ngoài bao quát hầu như mọi việc

 phần mở rộng và mô-đun dễ dàng viết trong C, C++ (hoặc Java cho Jython, hoặc các ngôn ngữ NET cho IronPython)

 có thể nhúng trong ứng dụng như một giao diện kịch (scripting interface)

 Python mạnh mẽ và thực hiện nhanh

Bản thân ngôn ngữ Python là một nhà máy linh động có thể giải quyết hầu hết mọi vấn đề Dễ dàng viết máy chủ web Viết mã theo hướng dữ liệu với khả năng tự xét mạnh mẽ và khả chuyển và những tính năng như meta-classes, duck typing và decorators của Python

Python giúp ta viết mã lệnh nhanh chóng Nhờ vào trình biên dịch đã được tối ưu hóa, và những thư viện hỗ trợ, mã Python chạy nhanh hơn đa số các ứng dụng khác

Python dễ dàng kết nối với các thành phần khác

Python có thể kết nối với các đối tượng COM, NET (Ironpython, Python for net),

và CORBA, java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác

Có thể viết các thư viện bên C, C++ để nhúng vào Python và ngược lại

Python là ngôn ngữ có khả năng chạy đa nền tảng

Python có cho mọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, và những hệ khác Thậm chí có cả những phiên bản chạy trên NET, máy ảo Java, và điện thoại di động Nokia Series 60 Với cùng một mã nguồn sẽ chạy không khác nhau trên mọi cài đặt

Trang 3

Python có cộng đồng lập trình rất lớn, được chia sẻ rất nhiều thông tin hữu ích.

Python cũng có kho tài liệu đầy đủ, vừa tồn tại trong bản thân ngôn ngữ lẫn trên mạng Những tài liệu trên mạng nhắm vào cả lập trình viên chuyên nghiệp lẫn ngườimới Tất cả đều được thiết kế nhằm giúp bạn sản xuất nhanh hơn

Python là ngôn ngữ mã nguồn mở

Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do, ngay

cả trong việc thương mại Giấy phép Python được quản lý bởi Python Software Foundation

2 Các tài nguyên học liệu và công cụ lập trình Python

 Hiện có rất nhiều tài nguyên học tập Python

 Tài liệu Tiếng Anh:

 Learn Python The Hardway: https://learnpythonthehardway.org/

https://www.codementor.io/learn-python- Tài liệu Tiếng Việt:

 Việt Python: http://www.vithon.org/

 Fundamentals of Programming Python- Richard L Halterman

 Learn Python the Hard Way, 3rd Edition

3

Trang 4

 Python and Tkinter Programming, John E Grayson

 Professional IronPython – John Paul Mueller

 Python Tools for Visual Studio, Martino Sabia, Cathy Wang

3 Hiện trạng sử dụng Python làm ngôn ngữ đào tạo trên thế giới

Hiện nay ngôn ngữ Python được xếp hạng thứ 3 trong Top 10 các ngôn ngữ lập trìnhphổ biến nhất đang sử dụng:

Hình 2 – xếp hạng ngôn ngữ lập trình – 2016, nguồn http://spectrum.ieee.org/

Trang 5

Hình 3- Thống kế trường giảng dạy Python- nguồn viblo.asia

Python cũng là 1 ngôn ngữ hướng đối tượng, và cũng đồng thời là 1 ngôn ngữ động,

nó được trang bị những thư viện tiêu chuẩn khổng lồ : từ web, xử lý số học, đến cả lập trình đồ hoạ Python được sử dụng rộng rãi trong sản xuất, khoa học, hay giáo dục và ngày càng trở nên phổ biến và hoàn thiện

5 Các Website tham khảo cho phần giới thiệu này

 http://www.vithon.org/gioi-thieu-python

 https://viblo.asia

 https://spectrum.ieee.org

5

Trang 6

 https://vi.wikipedia.org/wiki/Python_(ng%C3%B4n_ng%E1%BB%AF_l

%E1%BA%ADp_tr%C3%ACnh)

Cám ơn các tác giả

Trang 7

Bài 02 Cách tải và cài đặt Python

Ở bài 01 Tui đã giới thiệu sơ lược về Python cũng như các đặc tính của nó, trong bài

02 này Tui sẽ hướng dẫn các bạn cách tải và cài đặt Python (Tui sử dụng Windows

10 Pro, 64bit Nếu các bạn sử dụng Hệ điều hành khác thì không sử dụng phiên bản hướng dẫn dưới này nha)

1 Cách tải Python:

Để tải Python các bạn vào: https://www.python.org/downloads/

Ở màn hình download trên, các bạn chọn “Download Python 3.5.2“, dĩ nhiên lúc cácbạn đọc hướng dẫn này thì nó có thể là ra Version khác rồi, lúc đó hãng đề nghị version nào thì các bạn cứ chọn tải

7

Trang 8

Lúc bạn nhấn vào nút tải ở trên thì ra cửa sổ sau:

Bạn chọn nơi lưu trữ python-3.5.2.exe rồi nhấn Save, chờ hệ thống tải về, bạn xem kết quả:

Trang 9

Ở hình trên bạn thấy Tui tả được python-3.5.2.exe có dung lượng hơn 28MB

2 Cách cài đặt Python:

Để cài đặt Python, bạn nhấn đúp vào tập tin python-3.5.2.exe vừa tải xong, nếu có hỏi gì về bảo mật thì nhấn Run:

9

Trang 10

Sau đó màn hình chọn cấu hình để cài đặt sẽ hiển thị ra như dưới đây:

Các bạn chọn cấu hình như chỗ Tui khoanh đỏ, rồi bấm Install Now hoặc Customizeinstallation (thông thường ta nên chọn Customize installation để chọn chỗ cài đặt khác cho đơn giản (ví dụ ta lưu vào C:\python, thay vì có nguyên 1 nùi đường dẫn lưu hình trên) Giờ Tui chọn Customize Installation:

Trang 11

Bạn chọn các cấu hình như trên rồi bấm Next:

Ở hình trên bạn chọn cấu hình giốn vậy, chỗ nơi cài đặt chọn là ổ C (Tui để là Python352 để Tui nhớ là Tui cài Python phiên bản 3.5.2 và cũng vì nó có nhiều version để dễ phân biệt), sau đó bấm Install:

11

Trang 12

Các bạn chờ chương trình Python cài đặt xong nha(chỗ này chờ hơi lâu), khi nào báocửa sổ bên dưới coi như là cài đặt OK:

Bạn kiểm tra ổ C ta có kết quả sau khi cài đặt:

Trang 13

Như vậy Tui đã hướng dẫn xong cách tải và cài đặt Python vào máy tính Windows

13

Trang 14

Bài 03 Giới thiệu một số công cụ lập trình Python

Ở bài số 02 Tui đã hướng dẫn bạn cách tải và cài đặt xong Python, trong bài này Tui

sẽ trình bày một số công cụ dùng để lập trình Python Có rất nhiều công cụ để ta lập trình Python, tuy nhiên trong loạt bài viết Tui sẽ sử dụng PyCharm Community Edition (sau khi giới thiệu xong các công cụ có thể lập trình được Python)

1) Công cụ lập trình chính thống giáo khi cài đặt Python:

Đó chính là công cụ IDLE khi bạn cài đặt xong Python (bạn vào Start, tìm tới

Python mà bạn đã cài đặt):

Ở màn hình trên các bạn có thể thấy máy của Tui có 2 IDLE (64+ 32), Tui test thử chạy bản nào cũng OK (Chưa test hết) Bạn nhấn chọn nó để khởi động phần mềm soạn thảo coding Python (nên đưa ra màn hình desktop nếu bạn sử dụng nó thường xuyên), khi khởi động mặc định Python Power Shell sẽ xuất hiện như hình dưới đây:

Trang 15

Ta có thể gõ các lệnh trực tiếp vào trong màn hình này (có thể nói nó giống như 1 máy tính):

15

Trang 16

Hình trên Tui thử nhập các giá trị : a, b, c và xuất ra màn hình, đồng thời thử tạo mộtchuỗi và xuất ra cũng được.

Ngoài ra ta cũng có thể tạo File để soạn thảo bằng cách vào File/ chọn New File:

Sau khi nhấn New, màn hình soạn thảo hiện ra như dưới đây:

Trang 17

Ở hình trên ta thấy mặc định là “Untitled”, ta thử soạn thảo một số lệnh như trong hình rồi lưu lại với test “first.py” py là phần mở rộng của Python:

Ở màn hình trên Tui lưu vào ổ E:/LearnPython rồi nhấn Save:

17

Trang 19

Tương tự để chạy các file mã nguồn khác ta có thể vào File/ Open để chọn file mã nguồn.

Trang 20

3) Công cụ lập trình PyCharm:

Đây là công cụ rất nổi tiếng, rất quen thuộc đặc biệt với những ai đã lập trình

Android Studio

Hiện hãng cho sử dụng bản miễn phí PyCharm Community

Edition: https://www.jetbrains.com/pycharm/ (kéo xuống gần dưới cùng sẽ có màn hình tải)

Ta thấy có nhiều giới hạn trong bản miễn phí (Community) như là không có lập trìnhWeb Còn bản Professional thì có đầy đủ và cho sử dụng thử 30 ngày nhé các bạn.Hoặc bạn có thể vào

link: https://www.jetbrains.com/pycharm/download/#section=windows

Trang 21

Chúng ta chọn Download bản Community (Tui trỏ màu đỏ) tải về máy rồi tiến hành cài đặt, và nên đưa ra màn hình Desktop để ta sử dụng (vì đây là công cụ Tui sẽ sử dụng cho toàn bộ các bài học):

Ta khởi động phần mềm PyCharm lên sẽ có giao diện đầu tiên như sau:

21

Trang 22

Các bạn thấy tính tới thời điểm Tui viết bài này thì version mới nhất là 2016.2.3.

Như vậy tới đây Tui đã giới thiệu cho các bạn 3 công cụ lập trình Python (ngoài ra còn rất rất nhiều các công cụ lập trình Python khác nữa, các bạn có thể tìm hiểu thêm trên mạng

Bài sau Tui sẽ hướng dẫn chi tiết cách sử dụng công cụ PyCharm (cách tạo Project, chọn Python version, cách tạo tập tin Python, cách soạn thảo cũng như thực thi source code), các bạn chú ý theo dõi

Trang 23

Bài 04: Tạo Project Python trong PyCharm

Ở bài 03 Tui đã giới thiệu một số công cụ lập trình Python Trong bài này Tui sẽ hướng dẫn cách tạo Project Python trong công cụ PyCharm, nếu bạn nào chưa biết cách tải và cài đặt công cụ PyCharm thì xem lại bài 03 nhé

Khi khởi động JetBrains PyCharm Community Edition, ta sẽ có giao diện sau:

Ở màn hình trên các bạn chọn Create New Project:

23

Trang 24

Vị trí 1 – Location: Chọn nơi lưu trữ Projecct

Vị trí 2 – Interpreter: Chọn trình thông dịch Python, ở đây Tui cài 2 phiên bản thì

nó ra 2 phiên bản

Vị trí 3- Create: Nhấn vào để tạo Project

Sau khi nhấn Create, PyCharm sẽ tạo cấu trúc Project mặc định ban đầu như sau:

Trang 25

Để tạo tập tin Python: Ta bấm chuột phải vào Project HelloWorld/ chọn New/ Python File:

Sau khi nhấn Python File, màn h ình New Python file hiển thị ra như dưới đây:

25

Trang 26

Ta tiến hành đặt tên File, loại file là Python file rồi nhấn nút OK, tập

tin FirstProject.py sẽ được hiển thị như dưới đây (py là mở rộng của các tập tin mã nguồn Python):

Ở trong tập tin FirstProject.py, Tui có gõ dòng lệnh:

print("Xin Chào các Thím! tui là Python nè!")

Lệnh trên dùng để xuất một chuỗi ra màn hình

Để chạy mã tập tin FirstProject.py, các bạn vào Run/chọn Run

Trang 27

Các bạn thấy sau khi chúng ta chọn Run, PyCharm sẽ xuất kết quả như bên dưới chỗTui khoanh tròn màu đỏ.

Như vậy tới đây Tui đã hướng dẫn xong cách tạo Project Python trong PyCharm cũng như cách tạo Tập tin Python, viết lệnh xuất ra màn hình và thực thi các mã lệnhnhư thế nào, các bạn nhớ xem lại bài và cố gắng thực hiện được bài học này nhé

Bài sau Tui sẽ trình bày về các kiểu dữ liệu cũng như cách thức đặt tên biến trong Python, các bạn chú ý theo dõi

27

Trang 28

Bài 05: Kiểu dữ liệu cơ bản và khai báo biến

trong Python

1 Các kiểu dữ liệu cơ bản trong Python:

 Kiểu int: Kiểu số nguyên (không có chứa dấu chấm thập phân), có thể lưu các

số nguyên âm và dương

 ví dụ 2: z=complex(2,3) thì 2 là phần thực, 3 là phần ảo

 khi xuất kết quả ta có thể xuất:

 print(“Phần thực= “,z.real) ==>Phần thực= 2

 Kiểu str: Kiểu chuỗi, để trong nháy đôi hoặc nháy đơn

Trang 29

dữ liệu tùy thuộc vào giá trị mà ta gán Ta có thể dùng hàm type() để kiểm tra kiểu

dữ liệu của biến

Kết quả lần lượt sẽ có kiểu dữ liệu của x là:

Với x = 5 ta có kiểu dữ liệu: <class ‘int’>

Với x = ‘teo’ ta có kiểu dữ liệu:<class ‘str’>

Với x = True ta có kiểu dữ liệu:<class ‘bool’>

Với x = 5.5 ta có kiểu dữ liệu:<class ‘float’>

Với x = complex(113,114) ta có kiểu dữ liệu:<class ‘complex’>

3 Cách xóa biến

Trong Python có một điểm thú vị là: Nếu biến đó đang tồn tại mà ta xóa nó đi thì không còn sử dụng được nữa (tương tự trong C++ khi chúng ta thu hồi bộ nhớ của con trỏ vậy), Python dùng từ khóa del để xóa:

Traceback (most recent call last):

File “F:/Study/Python/HelloWorld/FirstProject.py”, line 6, in

print(x)

NameError: name ‘x’ is not defined

29

Trang 30

4 Cách kiểm tra vùng lưu trữ giá trị của các biến int, float

Ta có thể kiểm tra vùng lưu trữ giá trị của các biên int, float bằng cách import thư viện sys để có thể xem được chi tiết:

max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021,

min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16,

radix=2, rounds=1)

Như vậy Tui đã hướng dẫn xong các kiểu dữ liệu cũng như cách khai báo biến trong Python cũng như việc xóa biến, kiểm tra vùng lưu trữ, việc nắm được kiểu dữ liệu khá quan trong vì nó giúp chúng ta chọn kiểu dữ liệu phù hợp để tối ưu hóa hệ thống

Trang 31

Bài 06: Cách ghi chú lệnh trong Python

Bất kỳ ngôn ngữ lập trình nào cũng hỗ trợ cách ghi chú lệnh bởi vì nó rất quan trọng

Việc ghi chú lệnh một cách cẩn thận khi lập trình thể hiện tính chuyên nghiệp của Lập trình viên Không phải nói ngoa nếu như các bạn được phỏng vấn xin việc, nếu Công ty kiểm tra coding từ các Project sample của bạn mà thấy bạn không có ghi chú một cách cẩn thận (cho dù bạn có lập trình giỏi tới mấy) thì khả năng bị loại cựccao, nếu giỏi mà cẩu thả thì càng nguy hiểm, vì độ “sát thương” cho các dự án rất cao

Tui hay nói đùa thế này “Ngu mà tỏ vẻ nguy hiểm” hay “Nguy hiểm mà tỏ vẻ ngu”

Cả 2 trường hợp này đều nguy hiểm Trường hợp lập trình viên giỏi mà không ghi chú cẩn thận thì có thể liệt vào “Nguy hiểm mà tỏ vẻ ngu” (vì đa phần trong đầu có thể nghĩ là coding đó đơn giản mà có gì đâu mà phải ghi chú, đọc lại hiểu liền Nhưng chúng ta chú ý là ta làm việc theo Team, không ghi chú cẩn thận thì các thành viên khác thế nào? giai đoạn làm tài liệu ra sao?)… Cái này Tui nói đùa thui nhé, không được tự ái Tự ái là một căn bệnh nguy hiểm, có thể chết trước bệnh Tim

Khi ghi chú, trình thông dịch sẽ không tính nội dung những dòng ghi chú này là mã lệnh

Vậy trong Python ghi chú như thế nào?

1.Ghi chú 1 dòng : Dùng từ khóa #

Ví dụ:

31

Trang 32

2 Ghi chú nhiều dòng: Dùng “”” “”” (3 cặp nháy đôi) hoặc ”’ ”'(3 cập nháy

Giải phương trình bậc 1: ax+b=0

Có 3 trường hợp để biện luận

Nếu hệ số a =0 và hệ số b=0 ==>vô số nghiệm

Nếu hệ số a =0 và hệ số b !=0 ==>vô nghiệm

Nếu hệ số a !=0 ==> có nghiệm -b/a

Đây là lệnh kiểm tra năm nhuần year

Năm nhuần là năm chia hết cho 4 nhưng không chia hết cho 100 hoặc chia hết cho 400 '''

year=2016

if (year % 4==0 and year %100 !=0) or year % 400 ==0:

print(year," Là năm nhuần")

else:

print(year, " KO là năm nhuần")

Như vậy Tui đã hướng dẫn xong các cách ghi chú trong Python, các bạn nên áp dụng

vào các Project của mình nhé Nó khá quan trọng, ghi chú chi tiết sẽ giúp các lệnh

được rõ nghĩa hơn khi chúng ta kiểm tra lại code, training cho nhân viên mới,

chuyển giao coding khi ta chuyển công tác … Nói chung nó thể hiện tính Chuyên

nghiệp của Lập Trình Viên

Trang 33

Bài 07: Các toán tử thường dùng trong Python

Trong bài này Tui sẽ trình bày các toán tử thường dùng trong Python

Mỗi một ngôn ngữ lập trình đều có tập các toán tử thường dùng và đa phần chúng khá giống nhau Những bạn nào đã học C++, java, C# thì qua Python cũng tương tự Trong Python còn bổ sung thêm nhiều toán tử khá hữu ích khác nữa, dưới này Tui liệt kê 4 loại toán tử cơ bản thường dùng nhất trong Python (các loại khác bạn có thểxem thêm tại: https://docs.python.org/3/library/stdtypes.html):

1 Toán tử số học cơ bản

3 Toán tử So sánh

5 Độ ưu tiên toán tử

Bây giờ ta đi chi tiết vào từng loại toán tử:

Ngày đăng: 09/08/2017, 08:09

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w