Hơn 30+ bài tập Python có lời giải (code mẫu)

Bạn đang theo đuổi ngành học lập trình thông tin nhưng đang gặp khó khăn khi học ngôn ngữ code Python? Thông qua bài viết dưới đây, Hoàng Hà Mobile sẽ giới thiệu bạn hơn một số bài tập Python có lời giải chi tiết mà bạn có thể tham khảo và luyện tập để nâng cao trình độ của mình nhé! 

Ngôn ngữ Python là gì?

Trước khi tìm hiểu về bài tập Python hãy cùng Hoàng Hà Mobile khái quát lại khái niệm ngôn ngữ Python là gì. Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở, đa nền tảng, được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python được Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Ngôn ngữ Python được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm:

  • Phát triển web: Python là một ngôn ngữ lập trình phổ biến cho phát triển web back-end. Nó được sử dụng để xây dựng các ứng dụng web động, hiệu quả và bảo mật.
  • Phát triển phần mềm: Python là một ngôn ngữ lập trình linh hoạt có thể được sử dụng để phát triển nhiều loại ứng dụng phần mềm, bao gồm phần mềm doanh nghiệp, phần mềm di động và trò chơi điện tử.
  • Khoa học dữ liệu và máy học: Python là một ngôn ngữ lập trình phổ biến cho khoa học dữ liệu và máy học. Nó được sử dụng để thu thập, phân tích và xử lý dữ liệu, cũng như xây dựng các mô hình máy học.
  • Các ứng dụng khác: Python cũng được sử dụng cho các ứng dụng khác, bao gồm hệ thống nhúng, tự động hóa và scripting.

bai-tap-python-1

Cấu trúc của bài tập Python cơ bản 

Cấu trúc bài tập Python thường bao gồm các phần sau:

  • Yêu cầu: Phần này nêu rõ yêu cầu của bài tập, bao gồm mục đích, đầu vào, đầu ra và các ràng buộc.
  • Gợi ý: Phần này cung cấp một số gợi ý hoặc hướng dẫn để giải quyết bài tập.
  • Lời giải: Phần này cung cấp lời giải đầy đủ cho bài tập, bao gồm mã Python và các giải thích.

Ngoài ra, một số bài tập có thể có thêm các phần sau:

  • Bài kiểm tra: Phần này cung cấp các trường hợp kiểm tra để kiểm tra tính chính xác của lời giải.
  • Tài liệu tham khảo: Phần này cung cấp các tài liệu tham khảo bổ sung để giúp học sinh giải quyết bài tập.

bai-tap-python-2

Cấu trúc bài tập Python có thể được chia thành các cấp độ khác nhau, từ cơ bản đến nâng cao. Các bài tập cấp độ cơ bản thường tập trung vào các khái niệm lập trình cơ bản, như biến, toán tử, cấu trúc dữ liệu và vòng lặp. Các bài tập cấp độ nâng cao thường tập trung vào các khái niệm lập trình nâng cao, như lớp, kế thừa, đa hình, thuật toán và cấu trúc dữ liệu phức tạp.

Các mức độ có trong bài tập Python 

Các mức độ trong bài tập Python thường được chia thành 3 cấp độ chính:

  • Cấp độ 1: Dành cho người mới bắt đầu, những người đã học qua những kiến thức cơ bản về Python như biến, toán tử, vòng lặp, hàm,… Các bài tập cấp độ này thường yêu cầu người học giải quyết các vấn đề đơn giản, không yêu cầu sử dụng nhiều kiến thức nâng cao.
  • Cấp độ 2: Dành cho người đã có nền tảng lập trình cơ bản, có thể sử dụng các cấu trúc dữ liệu và thuật toán cơ bản. Các bài tập cấp độ này thường yêu cầu người học giải quyết các vấn đề phức tạp hơn, đòi hỏi sử dụng nhiều kiến thức nâng cao hơn.
  • Cấp độ 3: Dành cho người đã có kinh nghiệm lập trình, có thể sử dụng các cấu trúc dữ liệu và thuật toán nâng cao. Các bài tập cấp độ này thường yêu cầu người học giải quyết các vấn đề thực tế, đòi hỏi khả năng sáng tạo và tư duy logic cao.

bai-tap-python-3

Ngoài ra, các bài tập Python cũng có thể được chia thành các mức độ khác dựa trên các tiêu chí khác như:

  • Mức độ khó: Các bài tập có thể được chia thành các mức độ dễ, trung bình, khó, rất khó.
  • Mức độ chuyên sâu: Các bài tập có thể được chia thành các mức độ cơ bản, nâng cao, chuyên sâu.
  • Mức độ thực tế: Các bài tập có thể được chia thành các mức độ lý thuyết, thực tế.

Việc phân chia các bài luyện tập Python thành các mức độ giúp người học có thể lựa chọn các bài tập phù hợp với trình độ của mình. Việc luyện tập các bài tập ở các mức độ khác nhau sẽ giúp người học nâng cao kỹ năng lập trình Python một cách hiệu quả.

10+ bài tập Python cấp độ 1 dành cho người mới bắt đầu

Những bài tập này nhằm giúp người mới bắt đầu hiểu về cú pháp cơ bản và các khái niệm căn bản trong ngôn ngữ lập trình Python. Dưới đây là 10+ bài tập Python cấp độ 1 dành cho người mới bắt đầu mà bạn có thể tham khảo ngay:

Bài 1: Viết chương trình in ra “Hello, world!”.

print(“Hello, world!”)

Bài 2: Nhập một số từ bàn phím và in ra số đó.

number = input(“Nhập một số: “)

print(number)

Bài 3: Viết chương trình kiểm tra xem một số là chẵn hay lẻ.

number = int(input(“Nhập một số: “))

if number % 2 == 0:

    print(“Số chẵn”)

else:

    print(“Số lẻ”)

Bài 4: Viết chương trình tính tổng của hai số.

number1 = int(input(“Nhập số thứ nhất: “))

number2 = int(input(“Nhập số thứ hai: “))

sum = number1 + number2

print(“Tổng hai số là:”, sum)

Bài 5: Viết chương trình tính hiệu của hai số.

number1 = int(input(“Nhập số thứ nhất: “))

number2 = int(input(“Nhập số thứ hai: “))

difference = number1 – number2

print(“Hiệu hai số là:”, difference)

bai-tap-python-4

Bài 6: Viết chương trình tính tích của hai số.

number1 = int(input(“Nhập số thứ nhất: “))

number2 = int(input(“Nhập số thứ hai: “))

product = number1 * number2

print(“Tích hai số là:”, product)

Bài 7: Viết chương trình tính thương của hai số.

number1 = int(input(“Nhập số thứ nhất: “))

number2 = int(input(“Nhập số thứ hai: “))

quotient = number1 // number2

print(“Thương hai số là:”, quotient)

Bài tập Python 8: Viết chương trình tính phần dư của hai số.

number1 = int(input(“Nhập số thứ nhất: “))

number2 = int(input(“Nhập số thứ hai: “))

remainder = number1 % number2

print(“Phần dư của hai số là:”, remainder)

Bài 9: Viết chương trình kiểm tra xem một số có phải là số nguyên tố hay không.

number = int(input(“Nhập một số: “))

is_prime = True

for i in range(2, number):

    if number % i == 0:

        is_prime = False

        break

if is_prime:

    print(“Số là số nguyên tố”)

else:

    print(“Số không phải là số nguyên tố”)

Bài 10: Viết chương trình in ra tất cả các số nguyên tố nhỏ hơn 100.

for i in range(2, 100):

    is_prime = True

    for j in range(2, i):

        if i % j == 0:

            is_prime = False

            break

    if is_prime:

        print(i)

Bài 11: Viết chương trình in ra bảng cửu chương.

for i in range(1, 10):

    for j in range(1, 10):

        print(i, “x”, j, “=”, i * j)

Bài 12: Viết chương trình tính giai thừa của một số.

def factorial(n):

    if n == 0:

        return 1

    else:

        return n * factorial(n – 1)

number = int(input(“Nhập một số: “))

factorial_value = factorial(number)

print(“Giai thừa của”, number, “là:”, factorial_

Bài 13: Nhập tên và in ra màn hình.

# Nhập tên từ người dùng

ten_nguoi_dung = input(“Nhập tên của bạn: “)

# In tên ra màn hình

print(“Xin chào,”, ten_nguoi_dung)

Bài 14: Tính tổng hai số

# Nhập hai số từ người dùng

so1 = float(input(“Nhập số thứ nhất: “))

so2 = float(input(“Nhập số thứ hai: “))

# Tính tổng hai số

tong = so1 + so2

# Hiển thị kết quả

print(f”Tổng của {so1} và {so2} là: {tong}”)

Bài tập Python 15: So sánh hai số.

def so_sanh_hai_so(a, b):

    if a > b:

        return f”{a} lớn hơn {b}”

    elif a < b:

        return f”{a} nhỏ hơn {b}”

    else:

        return f”{a} bằng {b}”

# Sử dụng hàm so_sanh_hai_so

so1 = float(input(“Nhập số thứ nhất: “))

so2 = float(input(“Nhập số thứ hai: “))

ket_qua = so_sanh_hai_so(so1, so2)

print(ket_qua)

Bài 16: Tìm số chẵn đầu tiên trong một danh sách.

def tim_so_chan_dau_tien(danh_sach):

    for so in danh_sach:

        if so % 2 == 0:

            return so

    return None  # Trả về None nếu không tìm thấy số chẵn nào trong danh sách

# Ví dụ sử dụng

danh_sach_so = [1, 3, 5, 8, 9, 10, 15]

so_chan_dau_tien = tim_so_chan_dau_tien(danh_sach_so)

if so_chan_dau_tien is not None:

    print(f”Số chẵn đầu tiên trong danh sách là: {so_chan_dau_tien}”)

else:

    print(“Không có số chẵn nào trong danh sách.”)

Bài 17: Tìm số lớn nhất trong một danh sách.

def tim_so_lon_nhat(danh_sach):

    if not danh_sach:

        return None  # Trả về None nếu danh sách rỗng

    so_lon_nhat = danh_sach[0]  # Giả sử số đầu tiên là lớn nhất

    for so in danh_sach:

        if so > so_lon_nhat:

            so_lon_nhat = so

    return so_lon_nhat

Bài 17: In ra các số nguyên tố từ 2 đến 100.

def is_prime(num):

    “””Kiểm tra xem một số có phải là số nguyên tố hay không.”””

    if num < 2:

        return False

    for i in range(2, int(num**0.5) + 1):

        if num % i == 0:

            return False

    return True

def print_primes():

    “””In ra các số nguyên tố từ 2 đến 100.”””

    for num in range(2, 101):

        if is_prime(num):

            print(num)

# Gọi hàm để in ra các số nguyên tố

print_primes()

10+ bài tập Python cấp độ 2 để củng cố kiến thức  

Dưới đây là một số bài tập Python cấp độ 2 (intermediate level) mà bạn có thể thử nghiệm để củng cố kiến thức và kỹ năng lập trình của mình. Mỗi bài tập đi kèm với mô tả và một số gợi ý giải pháp. Hãy thử giải quyết chúng trước khi xem gợi ý.

Bài 1: Viết một chương trình tính tổng của tất cả các số chẵn từ 1 đến n 

def tinh_tong_so_chan(n):

    tong = 0

    for i in range(2, n+1, 2):

        tong += i

    return tong

# Thay đổi giá trị của n theo mong muốn

n = int(input(“Nhập giá trị của n: “))

ket_qua = tinh_tong_so_chan(n)

print(f”Tổng của các số chẵn từ 1 đến {n} là: {ket_qua}”)

Bài 2: Viết một hàm kiểm tra xem một số nhập từ người dùng có phải là số nguyên tố hay không.

def is_prime(number):

    if number <= 1:

        return False

    for i in range(2, int(number**0.5) + 1):

        if number % i == 0:

            return False

    return True

# Nhập số từ người dùng

user_input = int(input(“Nhập một số: “))

# Kiểm tra xem số nhập từ người dùng có phải là số nguyên tố hay không

if is_prime(user_input):

    print(f”{user_input} là số nguyên tố.”)

else:

    print(f”{user_input} không là số nguyên tố.”)

Bài 3: Viết một chương trình chuyển đổi nhiệt độ từ độ C sang độ F hoặc ngược lại, dựa vào lựa chọn của người dùng.

def chuyen_doi_nhiet_do():

    print(“Chương trình chuyển đổi nhiệt độ”)

    print(“1. Chuyển đổi từ độ C sang độ F”)

    print(“2. Chuyển đổi từ độ F sang độ C”)

    lua_chon = input(“Nhập lựa chọn của bạn (1 hoặc 2): “)

    if lua_chon == ‘1’:

        do_c = float(input(“Nhập nhiệt độ trong độ C: “))

        do_f = (do_c * 9/5) + 32

        print(f”{do_c} độ C = {do_f} độ F”)

    elif lua_chon == ‘2’:

        do_f = float(input(“Nhập nhiệt độ trong độ F: “))

        do_c = (do_f – 32) * 5/9

        print(f”{do_f} độ F = {do_c} độ C”)

    else:

        print(“Lựa chọn không hợp lệ. Vui lòng chọn 1 hoặc 2.”)

# Gọi hàm để chạy chương trình

chuyen_doi_nhiet_do()

bai-tap-python-5

Bài tập Python 4: Viết một hàm để xoay một ma trận 90 độ theo chiều kim đồng hồ.

def xoay_matran_90_do(matrix):

    # Lấy số hàng và số cột của ma trận

    hang = len(matrix)

    cot = len(matrix[0])

    # Tạo ma trận mới để lưu kết quả xoay

    ket_qua = [[0] * hang for _ in range(cot)]

    # Xoay ma trận

    for i in range(hang):

        for j in range(cot):

            ket_qua[j][hang – 1 – i] = matrix[i][j]

    return ket_qua

# Ví dụ sử dụng

ma_trix = [

    [1, 2, 3],

    [4, 5, 6],

    [7, 8, 9]

]

ma_trix_xoay = xoay_matran_90_do(ma_trix)

# In ma trận ban đầu

print(“Ma trận ban đầu:”)

for hang in ma_trix:

    print(hang)

# In ma trận sau khi xoay 90 độ

print(“\nMa trận sau khi xoay 90 độ:”)

for hang in ma_trix_xoay:

    print(hang)

Bài 5: Viết một chương trình để kiểm tra xem một chuỗi con có tồn tại trong chuỗi khác hay không.

def kiem_tra_chuoi_con(chuoi_lon, chuoi_con):

    if chuoi_con in chuoi_lon:

        print(f’Chuỗi con “{chuoi_con}” tồn tại trong chuỗi “{chuoi_lon}”.’)

    else:

        print(f’Chuỗi con “{chuoi_con}” không tồn tại trong chuỗi “{chuoi_lon}”.’)

# Thay đổi các giá trị dưới đây để kiểm tra với các chuỗi cụ thể

chuoi_lon = “Chao mung ban den voi OpenAI”

chuoi_con = “ban”

kiem_tra_chuoi_con(chuoi_lon, chuoi_con)

Bài 6: Viết một hàm để tìm số lớn thứ hai trong một danh sách số nguyên.

def tim_so_lon_thu_hai(danh_sach):

    if len(danh_sach) < 2:

        return “Danh sách quá ngắn”

    lon_nhat = max(danh_sach[0], danh_sach[1])

    lon_thu_hai = min(danh_sach[0], danh_sach[1])

    for so in danh_sach[2:]:

        if so > lon_nhat:

            lon_thu_hai = lon_nhat

            lon_nhat = so

        elif so > lon_thu_hai and so < lon_nhat:

            lon_thu_hai = so

    return lon_thu_hai

# Ví dụ sử dụng

danh_sach_so = [5, 3, 9, 1, 7, 6]

ket_qua = tim_so_lon_thu_hai(danh_sach_so)

print(“Số lớn thứ hai là:”, ket_qua)

Bài tập Python 7: Viết một hàm để đảo ngược một chuỗi.

def dao_nguoc_chuoi(chuoi):

    return chuoi[::-1]

# Thử nghiệm hàm với một chuỗi

chuoi_can_dao_nguoc = “Hello, World!”

ket_qua = dao_nguoc_chuoi(chuoi_can_dao_nguoc)

print(“Chuỗi ban đầu:”, chuoi_can_dao_nguoc)

print(“Chuỗi sau khi đảo ngược:”, ket_qua)

Bài 8: Viết một chương trình để đếm số lần xuất hiện của mỗi ký tự trong một chuỗi.

def dem_so_lan_xuat_hien(chuoi):

    # Khởi tạo một từ điển để lưu trữ số lần xuất hiện của mỗi ký tự

    dem_ky_tu = {}

    # Duyệt qua từng ký tự trong chuỗi

    for ky_tu in chuoi:

        # Kiểm tra xem ký tự đã có trong từ điển chưa

        if ky_tu in dem_ky_tu:

            # Nếu đã có, tăng giá trị tương ứng lên 1

            dem_ky_tu[ky_tu] += 1

        else:

            # Nếu chưa có, thêm ký tự vào từ điển với giá trị là 1

            dem_ky_tu[ky_tu] = 1

    # In kết quả

    for ky_tu, so_lan in dem_ky_tu.items():

        print(f’Ký tự “{ky_tu}” xuất hiện {so_lan} lần.’)

# Thử nghiệm với một chuỗi

chuoi_test = “Hello, World!”

dem_so_lan_xuat_hien(chuoi_test)

Bài 9: Viết một hàm để tính giai thừa của một số nguyên dương.

def tinh_giai_thua(n):

    if n == 0 or n == 1:

        return 1

    else:

        return n * tinh_giai_thua(n-1)

# Nhập số nguyên dương từ người dùng

so_nguyen = int(input(“Nhập một số nguyên dương: “))

# Kiểm tra nếu số nhập vào là âm, yêu cầu nhập lại

while so_nguyen < 0:

    so_nguyen = int(input(“Vui lòng nhập một số nguyên dương: “))

# Gọi hàm và in kết quả

ket_qua = tinh_giai_thua(so_nguyen)

print(f”Giai thừa của {so_nguyen} là {ket_qua}”)

Bài tập Python 10: Viết một hàm để phân tích một mảng số nguyên và tìm các cặp số có tổng bằng một số được chỉ định.

def find_pairs_with_sum(arr, target_sum):

    pairs = []

    seen_numbers = set()

    for num in arr:

        complement = target_sum – num

        if complement in seen_numbers:

            pairs.append((num, complement))

        seen_numbers.add(num)

    return pairs

# Example usage:

array_of_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

target_sum = 10

result_pairs = find_pairs_with_sum(array_of_numbers, target_sum)

if result_pairs:

    print(f”Các cặp số có tổng bằng {target_sum}: {result_pairs}”)

else:

    print(f”Không có cặp số nào có tổng bằng {target_sum}”)

Bài 11: Viết một chương trình sử dụng xử lý ngoại lệ để xử lý trường hợp nhập vào không phải là số.

try:

    # Nhập một số từ người dùng

    input_number = input(“Nhập vào một số: “)

    # Chuyển đổi chuỗi nhập thành số nguyên

    number = int(input_number)

    # In ra số vừa nhập

    print(“Số bạn vừa nhập là:”, number)

except ValueError:

    # Xử lý ngoại lệ nếu người dùng nhập không phải là số

    print(“Lỗi: Bạn phải nhập vào một số nguyên.”)

10+ bài tập Python cấp độ 3 để rèn luyện 

Dưới đây là 10+ bài tập Python với cấp độ 3 để có thể rèn luyện trong ngôn ngữ này: 

Bài 1: Viết một chương trình để đếm số từ trong một câu nhập từ người dùng.

def dem_so_tu():

    # Nhập câu từ người dùng

    cau_nhap = input(“Nhập một câu: “)

    # Sử dụng split() để tách các từ trong câu

    tu_ket_qua = cau_nhap.split()

    # Đếm số từ trong câu

    so_tu = len(tu_ket_qua)

    # In kết quả

    print(“Số từ trong câu là:”, so_tu)

# Gọi hàm để thực thi chương trình

dem_so_tu()

Bài 2: Viết một chương trình tính tổng n số đầu tiên trong dãy Fibonacci.

def fibonacci_sum(n):

    if n <= 0:

        return “Vui lòng nhập một số nguyên dương.”

    fib_sequence = [0, 1]

    while len(fib_sequence) < n:

        fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])

    sum_fibonacci = sum(fib_sequence[:n])

    return f”Tổng của {n} số đầu tiên trong dãy Fibonacci là: {sum_fibonacci}”

# Nhập số nguyên dương n từ người dùng

n = int(input(“Nhập số nguyên dương n: “))

result = fibonacci_sum(n)

print(result)

Bài tập Python 3: Viết một chương trình để kiểm tra xem một chuỗi có phải là chuỗi đối xứng hay không.

def is_palindrome(s):

    # Chuyển đổi chuỗi thành chữ thường và loại bỏ các khoảng trắng

    s = s.lower().replace(” “, “”)

    # So sánh chuỗi với chuỗi nghịch đảo của nó

    return s == s[::-1]

# Nhập chuỗi từ người dùng

input_string = input(“Nhập chuỗi cần kiểm tra: “)

# Gọi hàm kiểm tra và in kết quả

if is_palindrome(input_string):

    print(“Chuỗi là chuỗi đối xứng.”)

else:

    print(“Chuỗi không phải là chuỗi đối xứng.”)

bai-tap-python-6

Bài 4: Viết một chương trình để tìm số lớn nhất trong một danh sách số nguyên, nhưng không vượt quá một giới hạn được chỉ định.

def tim_so_lon_nhat(danh_sach, gioi_han):

    so_lon_nhat = float(‘-inf’)  # Khởi tạo số lớn nhất với giá trị âm vô cùng

    for so in danh_sach:

        if so > so_lon_nhat and so <= gioi_han:

            so_lon_nhat = so

    if so_lon_nhat == float(‘-inf’):

        return None  # Trường hợp không có số nào thỏa mãn điều kiện 

    return so_lon_nhat

# Thử nghiệm với một danh sách số nguyên và giới hạn cụ thể

danh_sach_so = [10, 25, 15, 30, 5, 20]

gioi_han = 25

ket_qua = tim_so_lon_nhat(danh_sach_so, gioi_han)

if ket_qua is not None:

    print(f”Số lớn nhất không vượt quá giới hạn {gioi_han} là: {ket_qua}”)

else:

    print(f”Không có số nào thỏa mãn điều kiện.”)

Tổng kết

Như vậy, thông qua bài viết trên bạn đã có thể biết hơn 100+ bài tập Python từ level 1 đến level 3 một cách nhanh chóng và chính xác. Hy vọng bài viết này đã cung cấp một số bài tập bổ ích để bạn rèn luyện và nâng cao kỹ năng coding của mình.

Xem thêm: