Học Python từ cơ bản đến nâng cao với hơn 40 dự án thực tế

Python đã và đang là một trong những ngôn ngữ lập trình phổ biến nhất thế giới hiện nay. Nhưng làm gì để thành thạo Python khi bạn chưa có nhiều kinh nghiệm làm việc? Làm sao để có một profile, một CV đẹp để ứng tuyển vào công ty mà bạn ao ước? Có những dạng Python Projects gì và cách thực hiện ra sao?

Có rất nhiều cách để “lên trình” Python như đọc sách, xem tutorials, học thêm các khoá online từ các trung tâm nổi tiếng hay các trường đại học,… Ngoài ra, còn có một cách khác cũng hiệu quả không kém: làm các Python projects từ trình độ cơ bản đến nâng cao. Việc này giống như cày rank vậy, càng làm nhiều bạn càng biết nhiều, càng quen tay, và càng đỡ bỡ ngỡ khi làm dự án thật.

Các lợi ích của việc học Python qua Python projects

  • Nắm vững các khái niệm về lập trình – Đây là một trong những lợi ích lớn nhất của việc học Python dựa trên các projects thực tế, bởi bạn sẽ dần dần hiểu được khái niệm, cũng như các patterns trong lập trình.
  • Tăng sự tự tin – Khi làm việc với những công cụ, công nghệ thực tế, bạn sẽ dần tự tin hơn trong việc vận dụng chúng, cũng như tìm ra được những điểm yếu của bản thân. Biết mình biết ta chính là chìa khoá của sự tự tin.
  • Không ngừng trải nghiệm – Nếu đi làm, bạn thường phải tuân theo những quy tắc, sử dụng những công cụ được chỉ định thì với các Python projects, bạn sẽ được thoả sức trải nghiệm những công nghệ, công cụ mà mình thích. Điều này cũng giúp bạn có thêm nhiều kinh nghiệm mà không bị áp lực, gượng ép nhiều.
  • Hiểu rõ SDLC (Software Development Life Cycle – Vòng đời phát triển sản phẩm) – Khi phát triển một dự án từ những bước đầu tiên, bạn sẽ hiểu sâu hơn về vòng đời phát triển sản phẩm, học được cách lên kế hoạch trước khi bắt tay vào code, cách thực thi code, cũng như cách quản lý quá trình kiểm thử, sửa lỗi, deploy, hay cập nhật phần mềm…

Chọn platform cho Python Projects

Có 3 platform chính mà các kỹ sư lập trình thường sử dụng để xây dựng các Python projects, đó là Web, DesktopCommand-line.

Web

Web applications là các ứng dụng chạy trên nền tảng web, có thể truy cập trên bất cứ thiết bị nào có mạng Internet mà không yêu cầu download. Đây là lựa chọn lý tưởng nếu bạn muốn sản phẩm của mình có thể tiếp cận được tất cả các đối tượng trên mạng Internet.

Nếu chưa muốn hoặc chưa có đủ kiến thức về HTML, CSS hay JavaScript, bạn cũng có thể dùng Python cho cả frontend và backend. Với thư viện anvil, bạn đã có thể tập trung vào code Python mà không phải lo lắng vể HTML, CSS hay JavaScript nữa.

Bạn có thể xây dựng ứng dụng của mình bằng django hoặc flask – hai web frameworks phổ biến nhất hiện nay.

Desktop GUI

Nếu là một lập trình viên Python ở mức “Intermediate”, bạn có thể thử tạo ra một desktop-app. Với nền tảng này, bạn không cần phải học về frontend để tạo ra GUI – (Graphical User Interface – giao diện đồ hoạ người dùng) như khi làm web-app và có thể dùng Python để lập trình các phần của ứng dụng.

Bạn có thể sử dụng các framework như PySimpleGUI hay PyQt5 tuỳ theo trình độ và sự thành thạo của mình. Phần mềm mà bạn tạo ra cho Desktop GUI có thể làm việc trên bất kỳ hệ điều hành nào như Windows, Linux, hay Mac. Tất cả những gì bạn cần làm sau khi tạo ra project là biên dịch nó thành một tập tin thực thi (executable) cho hệ điều hành mà bạn chọn.

Command-Line

Command-line app là những ứng dụng chạy trên cửa sổ bảng điều khiển. Đó là command prompt trên Windows và Terminal trên Linux và Mac. Dù không “long lanh”, dễ sử dụng như các web-app hay GUI-app, lại đòi hỏi người dùng phải có hiểu biết nhất định về cách sử dụng các câu lệnh, nhưng các command-line apps cũng không kém phần mạnh mẽ.

Bạn vẫn có thể cải thiện giao diện của command-line app bằng cách thêm màu sắc cho phần text. Các thư viện bạn có thể sử dụng bao gồm  colorama và colored, hãy tận dụng chúng để có giao diện bắt mắt hơn cho ứng dụng của mình.

Ngoài ra, bạn cũng có thể sử dụng các frameworks như docoptargparse và click để xây dựng ứng dụng command-line.

Sau đây, Got It sẽ gợi ý cho bạn 15+ ý tưởng về các Python projects từ mức độ Beginner đến Advanced. Hãy bookmark hoặc share danh sách này để bắt đầu nhé!

1. Python Projects dành cho Beginners (Nhập môn)

Những Python Projects được gợi ý sau đây phù hợp cho các bạn học sinh, sinh viên muốn tìm hiểu về Python hoặc Data Science (Khoa học Dữ liệu) nói chung. Nếu bạn mới nhập môn Python thì hãy tham khảo ngay các dự án sau đây.

Contact Book (Danh bạ)

Đây là một trong những command-line project phù hợp nhất dành cho những Python-ers nhập môn. Contact book (Danh bạ) là nơi lưu danh sách liên lạc bao gồm tên, địa chỉ, số điện thoại, hay cả địa chỉ email.

Bạn cần thiết kế một ứng dụng danh bạ để người dùng có thể lưu trữ và tìm kiếm các thông tin liên lạc, cũng như thực hiện các tác vụ thường thấy như cập nhật, xoá và lưu liên lạc mới. Bạn có thể sử dụng SQLite database cho ứng dụng này.

Python Story Generator (Ứng dụng tự tạo câu chuyện)

Đây là một ứng dụng khá hay ho, đặc biệt với các bạn nhỏ – những đứa trẻ luôn háo hức được nghe những câu chuyện thú vị. Về cơ bản, chương trình sẽ yêu cầu người dùng nhập các thông tin như địa điểm, một vài hành động nhất định, tên nhân vật,… Từ đó, ứng dụng sẽ tự động tạo ra một câu chuyện dựa trên những thông tin được cung cấp. Bạn có thể tạo ra một hoặc vài cốt truyện cố định, và chỉ một vài chi tiết là được tuỳ biến dựa trên thông tin đầu vào (input) của người dùng. Và tadaa, chúng ta đã có một ứng dụng siêu “cool” để kể chuyện cho đứa cháu nhỏ, hoặc những bạn học sinh ở lớp gia sư rồi đó!

Number Guessing (Đoán số)

Đây là một trong những python projects đơn giản nhưng vô cùng thú vị mà bạn có thể thử với hình thức như một mini-game. Hãy tạo ra một chương trình cho phép máy tính chọn ngẫu nhiên một con số trong khoảng từ 1 đến 10, từ 1 đến 100, hoặc bất cứ khoảng nào bạn muốn. Sau đó, cung cấp cho người dùng một gợi ý để đoán ra con số đó. Mỗi lần đoán sai, người dùng sẽ có thêm một gợi ý, nhưng cũng sẽ bị trừ bớt điểm. Gợi ý đó có thể dựa trên phép cộng, trừ, nhân, chia, hoặc gợi ý về lớn hơn, nhỏ hơn,…

Bạn cũng cần một tính năng để so sánh giữa con số được chọn và con số người chơi đoán, để tính toán sự khác nhau giữa hai con số này, và kiểm tra xem dữ liệu được nhập vào có phải một con số hay không.

Adventure Game (Trò chơi phiêu lưu)

Với mức độ beginners, bạn có thể làm một phiên bản đơn giản cho trò chơi phiêu lưu. Ở phiên bản này, người chơi có thể di chuyển qua nhiều phòng khác nhau với cùng một cài đặt, và dựa vào input từ người chơi, trò chơi sẽ cung cấp mô tả cho từng phòng.

Điều thú vị ở Python project này là hướng dẫn di chuyển (movement direction). Bạn cần tạo ra những bức tường, những giới hạn di chuyển, và trình theo dõi (tracker) để biết được người chơi đã di chuyển như thế nào trong trò chơi. Đây cũng là một project thú vị mà bạn hoàn toàn có thể liệt kê để ghi điểm trong CV hay portfolio của mình.

Rock, Paper, Scissors (Búa, kéo, bao)

Một trò chơi đơn giản để bạn vừa luyện trình Python, vừa… giải trí trong lúc rảnh rỗi. Ở đây chúng ta sẽ cần sử dụng hàm random và một chức năng khác để kiểm tra sự hợp lệ của mỗi lần chơi.

Bạn cũng cần một tính năng để quyết định ai là người thắng cuộc. Bạn có thể đưa ra lựa chọn chơi lại, hoặc quy định số lần được chơi từ trước. Một chức năng tính điểm cũng sẽ giúp ứng tính tổng hợp để tìm ra ai là người chiến thắng cuối cùng.

12 ý tưởng khác về Python projects (beginners)

  1. Mad Libs Generator
  2. Dice Rolling Simulator
  3. Hangman
  4. Email Slicer
  5. Binary search algorithm
  6. Desktop Notifier App
  7. YouTube video downloader
  8. Python Website Blocker
  9. Spin a Yarn
  10. What’s the word?
  11. Leap it!
  12. Find out, Fibonacci!

2. Python Projects cho trình độ Intermediate (Trung cấp)

Alarm Clock (Đồng hồ Báo thức)

Đây là một CLI (Command Line Interface) khá đơn giản để bạn nâng cao kỹ năng lập trình Python, nhất là với những ai đã có kiến thức và kinh nghiệm ở mức nhất định.

Một ứng dụng báo thức nghe có vẻ quá bình thường phải không? Hãy biến nó trở nên đặc biệt bằng cách thêm nhiều đường link YouTube vào file text và thiết kế để ứng dụng của bạn có thể đọc được file đó. Tiếp theo, hãy lập trình để khi hẹn giờ, ứng dụng sẽ tự chọn ngẫu nhiên một đường link YouTube trong file text và chơi video đó.

Tic-Tac-Toe (Trò ca-rô)

Bạn nghĩ sao về việc tự mình viết một ứng dụng cho trò chơi quen thuộc này? Luật chơi vô cùng đơn giản, với một tấm bảng kẻ ô vuông 3×3, người chơi đầu sẽ đánh dấu X lên một ô bất kì, người chơi thứ hai cũng sẽ đánh dấu O ở vị trí tuỳ thích trong bảng. Hai người tiếp tục thay phiên nhau chơi, đến khi một người tạo ra một hàng ngang, hàng dọc hoặc hàng chéo với ký hiệu X/O của mình.

Bạn có thể sử dụng thư viện Pygame để lập trình trò chơi thú vị này. Pygame sẽ cung cấp tất cả các module bạn cần về đồ họa và âm thanh.

Steganography (Kỹ thuật giấu tin)

Steganography (hay Kỹ thuật giấu tin) là một hình thức che giấu thông điệp, hình ảnh, dữ liệu bí mật dưới dạng một hình thức biểu hiện khác, ví dụ như giấu một đoạn code, một đoạn mật mã trong một bức tranh hoặc video.

Hãy thử sức với việc làm ra một chương trình có thể giấu một thông điệp gì đó dưới những bức tranh, Got It tin rằng Python project này sẽ là một trải nghiệm đầy thú vị đấy!

Currency converter (Chuyển đổi tiền tệ)

Đây là một GUI app đơn giản mà bạn có thể lập trình bằng Python. Giống như cái tên, bạn sẽ tạo ra một công cụ chuyển đổi từ đơn vị tiền tệ này sang đơn vị tiền tệ khác, ví dụ từ USD sang VND, EUR sang VND…

Bạn có thể sử dụng Tkinter, một giao diện Python tiêu chuẩn cho bộ công cụ Tk GUI.

Post-it Notes (Ghi chú)

Post-it notes là những mẩu giấy ghi chú nhỏ dùng để ghi nhớ những công việc bạn cần làm. Ở Python project này, chúng ta sẽ tạo ra một phiên bản online của những tờ ghi chú vàng quen thuộc để người dùng có thể mang theo và sử dụng mọi lúc mọi nơi.

Ứng dụng này cần có tùy chọn để tạo tài khoản, các bố cục (layouts) khác nhau cho trang ghi chú và tính năng phân loại để người dùng dễ dàng quản lý các ghi chú của mình. Bạn có thể cân nhắc sử dụng Django cho dự án này vì nó có tích hợp sẵn tính năng xác thực người dùng (in-built user authentication).

7 ý tưởng khác về Python projects (intermediate)

  1. Countdown Clock and Timer
  2. Random Password Generator
  3. Random Wikipedia Article
  4. Reddit Bot
  5. Python Command-Line Application
  6. Site Connectivity Checker
  7. Directory Tree Generator

3. Python Projects cho trình độ Advanced (Nâng cao)

Speed Typing Test (Kiểm tra tốc độ đánh máy)

Bạn còn nhớ trò kiểm tra tốc độ gõ chữ trên Windows XP được học hồi bé không? Giờ đây, bạn hoàn toàn có thể tạo một chương trình tương tự bằng Python.

Đầu tiên, bạn có thể tạo giao diện người dùng (UI) bằng những thư viện như Tkinter. Sau đó, hãy tạo một bài kiểm tra đánh máy thật thú vị, cho phép hiển thị tốc độ gõ, độ chính xác và số từ/phút của người chơi. Bạn cũng có thể tham khảo source code của những phần mềm tương tự online.

Web Crawler (Trình thu thập thông tin web)

Web Crawler là một chương trình được viết ra để tự động quét trên internet và lưu trữ nội dung của một trang web cụ thể. Web Crawler là một trong những Python project hữu ích nhất để tìm kiếm thông tin nóng hổi. Khi xâu dựng phần mềm này, bạn sẽ cần sử dụng khái niệm đa luồng (multi-thread concept).

Bạn có thể sử dụng module request của Python để tạo crawler bot, hoặc sử dụng Scrapy. Đây là framework thu thập dữ liệu web mã nguồn mở của Python được thiết kế để bạn có thể tìm kiếm và trích xuất dữ liệu trên web bằng cách sử dụng các API.

Plagiarism Checker (Kiểm tra đạo văn)

Viết lách là một việc không thể thiếu đối với học sinh và nhiều ngành nghề khác nhau. Tuy nhiên, hiện vẫn chưa có nhiều phần mềm kiểm tra đạo văn miễn phí cho các tài liệu được viết ra. Bạn có thể sử dụng một thư viện NLP (natural language processing – xử lý ngôn ngữ tự nhiên) cùng với Google search API để tạo ra một Plagiarism Checker. Chương trình này sẽ tìm kiếm trên một vài trang đầu của Google Search result và kiểm tra lỗi đạo văn cho một đoạn văn bản có sẵn.

Music Player (Trình phát nhạc)

Với trình độ Advanced, bạn có thể thử sức với việc lập trình một ứng dụng nghe nhạc của riêng mình. Ngoài phát nhạc, ứng dụng của bạn có thể khám phá các thư mục và tìm kiếm nhạc. Để “tăng độ khó cho game”, bạn cũng có thể thử sức làm ra một giao diện tương tác để tất cả mọi người đều có thể sử dụng.

Ứng dụng sẽ có giao diện gọn gàng, cho phép người dùng tìm kiếm các bản nhạc, tăng / giảm âm lượng, hiển thị tên bài hát, nghệ sĩ, album. Dự án này chủ yếu sẽ liên quan đến các kiến thức cơ bản về lập trình Python, quản lý cơ sở dữ liệu, xây dựng thuật toán và xử lý dữ liệu.

Expense Tracker (Theo dõi chi tiêu)

Giống như cái tên của mình, đây sẽ là một phần mềm cho phép bạn theo dõi việc chi tiêu của mình, thậm chí là phân tích các chi phí mà bạn bỏ ra để có thể lập kế hoạch chi tiêu hiệu quả hơn. Expense Tracker cũng là một trong những dự án Python được nhiều người thử nghiệm trong thời gian gần đây.

Bạn có thể sử dụng PySimpleGUI để tạo giao diện cho ứng dụng này, và các thư viện Python như Pandas hay Matplotlib cũng có thể là những công cụ đắc lực cho dự án của bạn.

7 ý tưởng khác về Python projects (advanced)

  1. Content Aggregator
  2. Bulk File Rename/ Image Resize Application
  3. Python File Explorer
  4. Price Comparison Extension
  5. Regex Query Tool
  6. Instagram Photo Downloader
  7. Quiz Application

4. Tổng kết

Trên đây là 15+ Python projects từ trình độ cơ bản (beginner) đến nâng cao (advanced). Hãy bắt đầu với những ứng dụng đơn giản để làm quen với ngôn ngữ, cũng như cách xây dựng một sản phẩm từ đầu đến cuối. Sau đó, bạn có thể đi tiếp với các projects dành cho mức độ trung cấp và nâng cao. Đừng quên ghi lại những lỗi sai và cách sửa chữa, bởi đó chính là bài học tốt nhất mà bạn có được khi làm dự án.

Got It mong rằng bài viết này đã cho bạn những gợi ý để tiến xa hơn trên chặng đường lập trình Python của mình. Hãy truy cập mục Tech blogs để đọc thêm các bài viết về kỹ thuật của Got It nhé.

Đọc thêm: Ngôn ngữ Python và 15 sự thật bạn có thể chưa biết

Lược dịch từ Real PythonUpgrad

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
October 08, 2020
Share this post to:
Tags:
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback
10 tips tự học Python nhanh và hiệu quả nhất - Blog | Got It AI
2 years ago

[…] > 40 dự án Python từ cơ bản đến nâng cao […]

trackback
6 tips cực hữu ích cho Python newbie - Blog | Got It AI
2 years ago

[…] 40 dự án Python từ cơ bản đến nâng cao […]

trackback
6 điều cần biết trước khi học lập trình cơ bản - Blog | Got It AI
2 years ago

[…] Học Python từ cơ bản đến nâng cao với hơn 40 dự án thực tế […]

Các bài viết liên quan
Các bước tạo một thư viện Python

Các bước tạo một thư viện Python

Tác giả: Minh (Software Engineer | CAI) Trong Tech Blog số này, Got It sẽ cùng bạn tìm hiểu về 6 bước để tạo và phân phối một thư viện Python. Cụ thể, chúng ta sẽ viết một CLI command tương tự cowsay cùng với một function để các package khác có thể import và […]
Sử dụng pre-commit để thực thi PEP8 chỉ trong 3 bước

Sử dụng pre-commit để thực thi PEP8 chỉ trong 3 bước

Tác giả: Kiên (Software Engineer | CAI) Đảm bảo code tuân thủ đầy đủ các quy tắc được đề xuất trong PEP8 là một điều vô cùng quan trọng, đặc biệt là trong làm việc nhóm, khi mà yếu tố dễ đọc, dễ hiểu, và dễ bảo trì code được đặt lên hàng đầu. Dẫu […]
Hướng dẫn cách triển khai và debug code Python trên Docker

Hướng dẫn cách triển khai và debug code Python trên Docker

Tác giả: Kiên (Software Engineer | CAI) Bạn đã bao giờ mất hàng tiếng đồng hồ, thậm chí vài ngày để cài đặt một số thư viện cần thiết cho việc chạy một project trên máy tính của mình chưa? Nếu có thì đây là bài viết dành cho bạn. Thông thường, khi bạn tham […]
Readable Code

Readable Code

Tác giả: Minh (Software Engineer, CAI) & Hương (TPM, CAI) Mục lục1. Readable code là gì?2. Làm thế nào để viết code dễ đọc?2.1. Style guide2.2. Viết function nhỏ, tập trung vào một tính năng2.3. Đặt tên hợp lý2.3.1. Dùng các tiền tố thích hợp để phân loại function2.3.2. Hạn chế thêm thông tin về […]
Tìm hiểu Tuple trong Python, phân biệt Tuple và List

Tìm hiểu Tuple trong Python, phân biệt Tuple và List

Ở bài viết này, chúng ta sẽ cùng đi tìm hiểu về Tuple trong Python, cách sử dụng chúng như thế nào, và sự khác biệt giữa Tuple và List là gì? Tất cả những nội dung trong bài đọc sẽ đều có ví dụ minh hoạ cụ thể, hi vọng các bạn đọc có […]
Anaconda là gì? Tìm hiểu nền tảng Khoa học dữ liệu phổ biến nhất

Anaconda là gì? Tìm hiểu nền tảng Khoa học dữ liệu phổ biến nhất

Để có thể tạo nên một ứng dụng của riêng mình, điều quan trọng nhất đó là phải thiết lập môi trường làm việc đúng cách. Vì vậy, bạn cần các công cụ để xử lý dữ liệu, xây dựng các mô hình và biểu diễn trên đồ thị. Việc sử dụng nhiều công cụ […]