Luyện tập code Python

Python hiện đang là ngôn ngữ lập trình phổ biến nhất. Bên cạnh đó, đây là ngôn ngữ hỗ trợ rất tốt cho việc lập trình các mô hình giải quyết bài toán trong Học máy, Xử lý ngôn ngữ tự nhiên. Vì vậy, chúng tôi xin giới thiệu với các bạn loạt bài tập Python có kèm code mẫu. Đây là các bài tập được sắp xếp từ dễ đến khó để các bạn có thể tiện luyện tập. Hãy cùng bắt đầu với Bài tập Python Cấp độ 1.

Bài 1

In toàn bộ các số chẵn từ 1000 đến 2000.

Xem đáp án

even_numbers=[]
for i in range(1000, 2001):
    if (i%2=0):
       even_numbers.append(str(i))
print (','.join(even_numbers))

Bài 2

Nhập một số, in ra giai thừa của số đó. Lưu ý: Không sử dụng vòng lặp trong bài tập này.

Xem đáp án

x=int(input("Nhập số cần tính giai thừa:"))
def fact(x):
    if x == 0:
      return 1
    return x * fact(x - 1)
print (fact(x))

Bài 3

Nhập một số n, hãy tạo ra dictionary chứa các phần tử dạng i:i*2 với (i chạy từ 1 đến n) và in ra dictionary đó. Ví dụ với n là 3 thì đầu ra sẽ là: {1: 2, 2: 4, 3: 6}

Xem đáp án

n=int(input("Nhập vào một số:"))
d=dict()
for i in range(1,n+1):
 d[i]=i*i

print (d)

Bài 4

Nhập vào một dãy số ngăn cách bởi dấu phẩy, hãy tạo và in ra một list và một tuple từ các số đó. Sự khác nhau giữa list và tuple là gì?

Xem đáp án

values=input("Nhập vào các giá trị:")
l=values.split(",")
t=tuple(l)
print (l)
print (t)

Bài 5

Viết hàm tính giá trị bình phương một số. Lưu ý: phải sử dụng toán tử **

Xem đáp án

def square(x): 
  return x ** 2
print (square(2))
print (square(3))

Bài 6

Định nghĩa một class đơn giản để biểu diễn một đàn gà. Trong đó có 2 phương thức:

  • getChickenNumber: để nhận số lượng con gà người dùng nhập vào
  • countChikenLegs: để in ra số chân gà của đàn gà đó
Xem đáp án

class HerdOfChicken(object):
   def __init__(self):
       self.n = 0

   def getChickenNumber(self):
       self.n = int(input("Nhập số lượng gà:"))
   def countChikenLegs(self):
       print (self.n*2)

herd = HerdOfChicken()
herd.getChickenNumber()
herd.countChikenLegs()

Sau bài tập Python cấp độ 1, xin mời các bạn đến với bài tập Python cấp độ 2. Để có thêm kiến thức, các bạn có thể đăng ký nhận ebook về python miễn phí tại đây.

Bạn muốn trích dẫn bài này:
-----

"Bài tập Python Cấp độ 1 – Làm quen với Python," Trí tuệ nhân tạo, Ngày xuất bản: 16/04/2019, URL: https://trituenhantao.io/lap-trinh/bai-tap-python-cap-do-1/, Ngày truy cập: 01/01/2023.

Nhằm giúp ace nâng cao kỹ năng và kiến thức lập trình Python cho người mới bắt đầu từ con số 0 và những ace nào đã có kiến thức, hôm nay cafedev chia sẻ cho ace một số bài tập cực cơ bản(dễ) cho tới nâng cao(khó) và có cả game của python.

Trong bài này chúng ta sẽ đi từ các bài cơ bản nhất cho tới nâng cao, ace tham khảo dưới chi tiết dưới đây:

0Tổng hợp và chọn lọc các bài tập + full bài giải python cực đơn giản và cơ bản dành cho người mới[Phần 1]1Tổng hợp và chọn lọc các bài tập + full bài giải python cực đơn giản và cơ bản dành cho người mới[Phần 2]2Tổng hợp các bài tập tính toán, nhập xuất, vòng lặp, class, string, hàm..ở mức độ dễ3Tổng hợp các bài tập tính toán, nhập xuất, vòng lặp, class, string, hàm..ở mức độ trung bình4Tổng hợp các bài tập tính toán, nhập xuất, vòng lặp, class, string, hàm..ở mức độ khó5Bài tập hướng đối tượng trong python6Bài tập với json trong python7Bài tập với Cơ sở dữ liệu trong python8Bài tập với Thread-Multithread trong python9Bài tập GUI trong python10Bài tập GAME trong python

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Tự học ML bằng Python từ cơ bản tới nâng cao.
  • Ebook về python tại đây.
  • Các series tự học lập trình MIỄN PHÍ khác
  • Nơi liên hệ hợp tác hoặc quảng cáo cùng Cafedevn tại đây.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

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.

Luyện tập code Python

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é.

Mục lục

  • Lưu ý trước khi làm 5 bài tập lập trình Python
  • 1. Logging sử dụng Decorator trong Python
  • 2. Duyệt cây (Tree Traversal) bằng hàm đệ quy (Recursion)
  • 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
  • 4. Code xử lý lỗi (Error Handling) và đa tiến trình (Multi-Process)
  • 5. Package và Modules
  • Kết 

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é.