5 bài tập lập trình Python giúp bạn rèn luyện kỹ năng

Sau khi nhận được nhiều yêu cầu từ bạn đọc về chủ đề “bài tập lập trình Python”, Got It đã sưu tầm những bài tập Python thực sự giúp các bạn đang học ngôn ngữ này, hoặc những người đang làm việc liên quan đến nó, hiểu được cách mà Python hoạt động.

Bài viết sau sẽ đưa ra 5 câu hỏi để kiểm tra kiến ​​thức Python của bạn. Thay vì chỉ đưa ra những câu hỏi ghi nhớ, Got It muốn có thể giúp bạn củng cố kiến thức, hiểu biết về các khái niệm trong Python.

Làm bài tập lập trình Python sẽ giúp bạn kiểm tra kiến thức

Nào, hãy cũng xem các câu hỏi và đăng câu trả lời của bạn trong phần bình luận nhé.

Lưu ý trước khi làm 5 bài tập lập trình Python

  • Dưới mỗi bài tập sẽ là các chủ đề lớn mà câu hỏi đề cập đến. Từ đó, vào cuối bài tập, bạn sẽ cảm thấy đã hiểu được Python từ đầu đến cuối và sâu sắc hơn.
  • Hãy nhớ rằng có nhiều cách để bóc một quả cam, vì vậy hãy giải quyết các câu hỏi theo cách bạn hiểu chúng. Câu trả lời sẽ được đăng trong một blog sắp tới.

1. Logging sử dụng Decorator trong Python

1. Implement một calculator class với các hàm sau:

Sum(a,b), Multiply(a,b), Divide(a,b) và Subtract(a,b)

2. Import thư viện logging 

3. Decorate mỗi phương thức của calculator class với một phương thức tuỳ chỉnh ghi lại các giá trị của a và b. Implement cả phương thức tuỳ chỉnh của logger.

4. Thực thi calculator.Sum(a,b) và nó sẽ in ra các giá trị của a và b. Ví dụ:

Giá trị đầu vào của A và B là ‘123’ và ‘234’ # if a =123 and b=234

Bài tập này sẽ kiểm tra:

  • Liệu bạn có hiểu các lệnh Pip (bắt buộc khi import các thư viện) không
  • Cách tạo lớp và hàm với các đối số trong Python
  • Cách sử dụng decorators

2. Duyệt cây (Tree Traversal) bằng hàm đệ quy (Recursion)

Implement một class: Node (sẽ được dùng để đại diện cho một cây). Ví dụ:

class Node(object):
    def __init__(self, name):
        self.name= name
        self.children = []
 def add_child(self, obj):
        self.children.append(obj)

Mỗi node có một tên và các lớp con, ví dụ:

a = Node('A')
a_goal = Node('Goal')
a.add_child(a_goal)

2. In ra tất cả các đường dẫn của cây có thể dẫn bạn đến nút có tên “Goal”.

3. Cây có thể có N số cấp (1>N>100). Node Goal cũng có thể có các lớp con. 

Ví dụ trong cây dưới đây, code của bạn sẽ in ra các đường dẫn sau:

A->Goal
A->B->Goal
A->D->Goal
A->F->H->L->Goal

Tất cả các đường dẫn khác không dẫn bạn đến nút Goal. Hãy viết code của bạn sao cho có thể được unit test.

Bài tập này sẽ kiểm tra:

  • Hiểu biết của bạn về đệ quy
  • Cách bạn ngăn chặn việc đi vào vòng lặp vô hạn – nó sẽ kiểm tra các vòng lặp, biểu thức và logic điều kiện của bạn
  • Sự hiểu biết về cấu trúc dữ liệu và phạm vi biến của bạn

3. Làm phẳng một danh sách các từ điển lồng nhau thành một danh sách nhiều từ điển được làm phẳng

  1. Tạo một đối tượng chứa danh sách các từ điển.
  2. Mỗi mục trong danh sách là một từ điển chứa một số khóa.
  3. Mỗi khóa của từ điển sẽ chứa một giá trị. Giá trị có thể thuộc kiểu chuỗi hoặc một kiểu từ điển. Khi giá trị thuộc loại từ điển thì nó ngụ ý rằng nó là một từ điển lồng trong một từ điển.
  4. Mỗi từ điển có thể chứa một số lượng khóa khác nhau.
  5. Lặp lại các mục và tạo một từ điển duy nhất để lưu trữ các khóa ở cùng cấp độ. Ví dụ: nếu bạn lặp lại các mục và mỗi mục chứa một từ điển với hai khóa, ví dụ: “Tên” và “Họ” và cả hai khóa đều chứa các giá trị kiểu chuỗi thì chỉ cần trả về bộ sưu tập từ điển (vì nó đã phẳng).
  6. Tuy nhiên, nếu nó chứa các khóa “Tên”, “Họ” và “Địa điểm đã ghé thăm”, trong đó Địa điểm đã ghé thăm chính là danh sách các từ điển mà mỗi mục của từ điển đều chứa hai khóa “Tên địa điểm” và “Ngày ghé thăm”, thì kết quả sẽ là hai danh sách. Danh sách đầu tiên nên chứa một bộ sưu tập các từ điển với khóa “Tên” và “Họ”. Danh sách thứ hai phải chứa các khóa “Tên địa điểm”, “Ngày ghé thăm” và ParentId, trong đó ParentId sẽ chứa khóa “Tên” của từ điển đầu tiên.
  7. Lấy giá trị của ParentId làm giá trị của khóa đầu tiên của từ điển mẹ, ví dụ trong ví dụ trên, “Tên” được chọn làm ParentId.

Đối với mỗi từ điển lồng nhau, hãy tạo một từ điển mới.
Kết quả cuối cùng sẽ là một số từ điển phẳng đại diện cho một từ điển lồng nhau
Ví dụ: nếu đây là input của bạn:

sample_object = [
{'Name':'Farhad', 'Surname:'Malik', 'Blogs':{'BlogName:'Python1','Date1':'20180901'}},
{'Name':'Farhad2', 'Surname:'Malik2', 'Blogs':{'BlogName:'Python3','Date1':'20180101'}}
]

Thì kết quả nên là:

dictionary_1 = [
{'Name':'Farhad', 'Surname:'Malik'}, 
{'Name':'Farhad2', 'Surname:'Malik2'}
]

dictionary_2 = [
{'ParentId':'Farhad', 'BlogName:'Python1','Date1':'20180901'},
{'ParentId':'Farhad2','BlogName:'Python3','Date1':'20180101'}
]

Điều quan trọng là phải đảm bảo rằng các item ở cùng cấp độ thuộc cùng một từ điển.

Bài tập này sẽ kiểm tra:

  • Sự hiểu biết của bạn về từ điển, mảng và set.
  • Cách kiểm tra các khóa và giá trị.
  • Cách chuyển các tham số tùy chọn.
  • Cách làm phẳng một đối tượng JSON.

4. Code xử lý lỗi (Error Handling) và đa tiến trình (Multi-Process)

  • Thực hiện ba bài tập trên, làm cho code chạy trên nhiều tiến trình
  • Sử dụng try/catch và catch exceptions nếu thích hợp
  • Ghi chép hiệu suất của code
  • Viết các unit test cho mỗi bài tập với cả positive và negative test

Bài tập này sẽ kiểm tra:

  • Cách chạy code trên nhiều tiến trình hơn 
  • Cách bắt ngoại lệ và log code sao cho có ích

5. Package và Modules

  • Tạo các lớp và code mà bạn đã implement ở trên thành một package có nhiều modules
  • Hiểu cách đặt và import tệp
  • Tạo một main class để điều khiển mọi thứ
  • Viết ra một ứng dụng bảng điều khiển chạy các unit tests của bạn thông qua dòng lệnh (command line) và thông báo cho bạn các bài test đó đã pass hay fail.

Bài tập này sẽ kiểm tra:

  • Cách hiểu và xem cách các package và module hoạt động
  • Hiểu biết về ngôn ngữ lập trình Python

Kết 

Bài viết này đã đưa ra 5 bài tập lập trình Python mà Got It cho rằng rất phù hợp với những ai muốn kiểm tra kiến thức, kỹ năng lập trình Python của mình.

Hãy comment câu trả lời của bạn ở phần comment và làm thêm những bài tập Python có lời giải hoặc làm các dự án đã được Got It tuyển chọn nhé.

Happy coding!

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
March 22, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan

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

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ụ […]