Xem thêm

Hơn 100 bài tập Python với code mẫu và lời giải

Huy Erick
Bạn đang tìm kiếm các bài tập Python để luyện tập và nâng cao kỹ năng lập trình của mình? Bài viết này sẽ giới thiệu cho bạn hơn 100 bài tập Python với code...

Bạn đang tìm kiếm các bài tập Python để luyện tập và nâng cao kỹ năng lập trình của mình? Bài viết này sẽ giới thiệu cho bạn hơn 100 bài tập Python với code mẫu và lời giải chi tiết. Nhờ vào những bài tập này, bạn có thể cải thiện khả năng lập trình Python của mình một cách hiệu quả.

Mô tả cấp độ Python

Trước khi bắt đầu, hãy làm quen với mô tả về các cấp độ Python. Điều này giúp bạn chọn được bài tập phù hợp với trình độ của mình.

  • Trình độ 1: Đối tượng mới học Python, chỉ có thể giải quyết các vấn đề đơn giản với 1 hoặc 2 class hoặc hàm Python. Các bài tập tương đương với trình độ này có thể tìm thấy trong sách giáo trình và tài liệu hướng dẫn thông thường.

  • Trình độ 2: Đối tượng mới học Python nhưng đã có kiến thức lập trình khá tốt từ trước đó. Có khả năng giải quyết các vấn đề liên quan đến 3 lớp hoặc hàm Python. Những bài tập này thường không có trong sách giáo trình.

  • Trình độ 3: Đối tượng đã có kiến thức lập trình và muốn nâng cao kỹ năng Python. Có thể giải quyết các vấn đề phức tạp hơn bằng cách sử dụng nhiều hàm, cấu trúc dữ liệu và thuật toán đa dạng. Sử dụng các package Python tiêu chuẩn và áp dụng những kỹ thuật lập trình cao cấp.

Cấu trúc bài tập Python

Mỗi bài tập Python trong danh sách này sẽ gồm ba phần: câu hỏi, gợi ý và code mẫu. Bạn có thể đọc câu hỏi và gợi ý trước khi xem code mẫu để luyện tập và kiểm tra kiến thức của mình.

Bài tập Python cấp độ 1

Bài 1:

Câu hỏi: Chương trình sau tìm và in ra tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn từ 2000 đến 3200 (bao gồm cả 2000 và 3200). Các số thu được được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy.

Gợi ý: Để giải quyết bài toán này, bạn có thể sử dụng vòng lặp for để duyệt qua tất cả các số trong đoạn từ 2000 đến 3200. Sau đó, bạn sử dụng câu lệnh if để kiểm tra xem mỗi số có chia hết cho 7 không và không phải là bội số của 5 không. Nếu đúng, thì in số đó ra màn hình.

Code mẫu:

numbers = [] for i in range(2000, 3201):     if i % 7 == 0 and i % 5 != 0:         numbers.append(i) print(','.join(str(x) for x in numbers))

Bài 2:

Câu hỏi: Đây là mã chương trình tính giai thừa của số nhập từ bàn phím và in kết quả ra màn hình:

số = int(input("Nhập một số: ")) giai_thua = 1 for i in range(1, số + 1): giai_thua *= i print("Giai thừa của", số, "là:", giai_thua)

Gợi ý: Khi có dữ liệu đầu vào được cung cấp, bạn hãy chọn phương thức cho phép người dùng nhập số.

Code mẫu:

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:

Câu hỏi: Dưới đây là chương trình viết lại:

n = int(input("Nhập số nguyên n: ")) d = dict() for i in range(1, n+1): d[i] = i*i print(d)

Ví dụ: Cho số n là 8, kết quả sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.

Gợi ý:

  • Viết lệnh yêu cầu nhập số nguyên n.

Code mẫu:

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:

Câu hỏi: Viết chương trình chấp nhận một chuỗi số, được phân tách bằng dấu phẩy từ giao diện điều khiển, để tạo ra một danh sách và một tuple chứa tất cả các số.

numbers_str = input("Nhập chuỗi số, phân tách bằng dấu phẩy: ")

numbers_list = numbers_str.split(",")

numbers_tuple = tuple(numbers_list)

print("Danh sách số:", numbers_list) print("Tuple số:", numbers_tuple)

Đây là một ví dụ chạy chương trình:

Nhập chuỗi số, phân tách bằng dấu phẩy: 1,2,3,4,5 Danh sách số: ['1', '2', '3', '4', '5'] Tuple số: ('1', '2', '3', '4', '5')

Gợi ý:

  • Viết lệnh yêu cầu nhập vào các giá trị sau đó dùng quy tắc chuyển đổi kiểu dữ liệu để hoàn tất.

Code mẫu:

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

Bài 5:

Câu hỏi: Xây dựng một lớp có ít nhất hai phương thức sau:

  • getString: để nhận một chuỗi do người dùng nhập vào từ giao diện điều khiển.
  • printString: in chuỗi vừa nhập sang chữ hoa.

Bổ sung các hàm kiểm tra đơn giản để kiểm tra các phương thức của lớp.

Ví dụ: Nếu chuỗi đầu vào là "quantrimang.com" thì đầu ra phải là "QUANTRIMANG.COM".

Gợi ý:

  • Sử dụng init để xây dựng các tham số.

Code mẫu:

class InputOutString(object):     def __init__(self):         self.s = ""      def getString(self):         self.s = input("Nhập chuỗi:")      def printString(self):         print(self.s.upper())  strObj = InputOutString() strObj.getString() strObj.printString()

Bài 6:

Câu hỏi: Viết một phương thức tính giá trị bình phương của một số.

Bạn có thể viết một phương thức như sau:

public static int tinhGiaTriBinhPhuong(int so) {     int giaTriBinhPhuong = so * so;     return giaTriBinhPhuong; }

Phương thức này nhận vào một số nguyên (so) và tính giá trị bình phương của số đó bằng cách nhân số cho chính nó. Sau đó, phương thức trả về giá trị bình phương được tính được.

Gợi ý:

  • Sử dụng toán tử **.

Code mẫu:

x = int(input("Nhập một số:"))  # Nhập số cần tính bình phương từ giao diện  def square(num):  # Định nghĩa bình phương của một số     return num ** 2  print(square(2))  # In bình phương của 2 print(square(3))  # In bình phương của 3 print(square(x))  # In bình phương của x

Do đề bài không yêu cầu rõ ràng về việc tính bình phương của số đã được cho hay số nhập vào, vì vậy tôi đã sử dụng cả hai trường hợp.

Bài 7:

Câu hỏi: Python cung cấp một số hàm tích hợp sẵn. Nếu bạn chưa biết sử dụng chúng, bạn có thể tham khảo tài liệu trực tuyến hoặc tìm một số cuốn sách hướng dẫn. Tuy nhiên, Python cũng cung cấp tài liệu về từng hàm tích hợp sẵn. Bài tập này yêu cầu bạn viết một chương trình để in ra tài liệu về một số hàm tích hợp sẵn của Python như abs(), int(), input(). Bạn cũng được yêu cầu thêm tài liệu cho một hàm tự định nghĩa của bạn.

Gợi ý:

  • Sử dụng doc.

Code mẫu:

print(abs.__doc__) print(int.__doc__) print(input.__doc__)  # Code by Quantrimang.com  def square(num):     '''Trả lại giá trị bình phương của số được nhập vào.     Số nhập vào phải là số nguyên.     '''     return num ** 2  print(square.__doc__)

Bài 8:

Câu hỏi: Lớp có tham số lớp và cùng tham số instance được định nghĩa là một lớp trong đó hai loại tham số được khai báo và sử dụng. Tham số lớp được khai báo sau từ khóa "class" và được sử dụng trong toàn bộ phạm vi của lớp, trong khi tham số instance là các biến đơn lẻ được khai báo trong phương thức khởi tạo và chỉ có tác dụng đối với từng đối tượng cụ thể khi được tạo ra từ lớp.

Gợi ý:

  • Khi định nghĩa tham số instance, cần thêm nó vào init.
  • Bạn có thể khởi tạo một đối tượng với tham số bắt đầu hoặc thiết lập giá trị sau đó.

Code mẫu:

class Person:     # Định nghĩa lớp "name"     name = "Person"      def __init__(self, name=None):         # self.name là biến instance         self.name = name  jeffrey = Person("Jeffrey") print("%s name is %s" % (Person.name, jeffrey.name))  nico = Person() nico.name = "Nico" print("%s name is %s" % (Person.name, nico.name))

Bài 9:

Câu hỏi: Xác định tuổi dựa trên ngày tháng năm sinh được nhập vào.

Ví dụ: Nhập vào ngày tháng năm sinh theo định dạng y/m/d, hãy tính tuổi của người này.

Gợi ý: Sử dụng module datetime. Bằng cách sử dụng module datetime, chúng ta có thể tính tuổi bằng cách trừ năm sinh cho năm hiện tại.

Code mẫu: import datetime print("Mời bạn vui lòng nhập ngày tháng năm sinh để tính tuổi") birth_day = int(input("Ngày sinh: ")) birth_month = int(input("Tháng sinh: ")) birth_year = int(input("Năm sinh: "))

current_year = datetime.date.today().year current_month = datetime.date.today().month current_day = datetime.date.today().day

age_year = current_year - birth_year age_month = abs(current_month - birth_month) age_day = abs(current_day - birth_day)

print("Tuổi của bạn chính xác là:", age_year, "tuổi", age_month, "tháng và", age_day, "ngày")

Bài 10:

Câu hỏi: Nhập số giờ làm mỗi tuần của nhân viên:

số_giờ = float(input("Nhập số giờ làm mỗi tuần: "))

Nhập thù lao trên mỗi giờ làm tiêu chuẩn:

thu_lao_giờ_tiêu_chuẩn = float(input("Nhập thù lao trên mỗi giờ làm tiêu chuẩn: "))

Số giờ tiêu chuẩn mỗi tuần là 44 giờ:

giờ_tiêu_chuẩn = 44

Tính số tiền thực lĩnh của nhân viên:

if số_giờ <= giờ_tiêu_chuẩn: tiền_thực_lĩnh = số_giờ thu_lao_giờ_tiêu_chuẩn else: tiền_thực_lĩnh = giờ_tiêu_chuẩn thu_lao_giờ_tiêu_chuẩn + (số_giờ - giờ_tiêu_chuẩn) thu_lao_giờ_tiêu_chuẩn 1.5

In ra số tiền thực lĩnh của nhân viên:

print("Số tiền thực lĩnh của nhân viên là:", tiền_thực_lĩnh)

Code mẫu:

so_gio_lam = float(input("Nhập số giờ làm mỗi tuần: ")) luong_gio = float(input("Nhập thù lao trên mỗi giờ làm tiêu chuẩn: ")) gio_tieu_chuan = 44  # Số giờ làm chuẩn mỗi tuần gio_vuot_chuan = max(0, so_gio_lam - gio_tieu_chuan)  # Số giờ làm vượt chuẩn mỗi tuần thuc_linh = gio_tieu_chuan * luong_gio + gio_vuot_chuan * luong_gio * 1.5  # Tính tổng thu nhập print("Số tiền thực lĩnh của nhân viên là:", thuc_linh)

Đó là một số bài tập Python cơ bản từ cấp độ 1. Hy vọng rằng những bài tập này sẽ giúp bạn rèn luyện khả năng lập trình Python của mình một cách hiệu quả. Nếu bạn muốn xem thêm các bài tập Python ở các cấp độ khác, hãy tiếp tục theo dõi những bài viết tiếp theo!

1