Kết nối

10 bài tập Python nâng cao có kèm theo mã nguồn

783 lượt xem 
 
Thể loại: Python 

Bài viết này chứa 10 bài tập lập trình nâng cao bằng ngôn ngữ Python, kèm theo mã nguồn để giúp bạn có thể xây dựng ứng dụng demo.

Quản lý danh bạ điện thoại

Bài tập cho phép tạo một ứng dụng quản lý danh bạ điện thoại cho phép người dùng thêm và hiển thị danh bạ. Trong đó, sử dụng một biến kiểu từ điển để lưu trữ thông tin liên hệ.

# Tạo biến danh bạ
danh_ba = {}

def them_lien_he():
    ten = input("Nhập tên liên hệ: ")
    so_dien_thoai = input("Nhập số điện thoại: ")
    danh_ba[ten] = so_dien_thoai

def xem_danh_ba():
    for ten, so_dien_thoai in danh_ba.items():
        print(f"{ten}: {so_dien_thoai}")

while True:
    print("\n1. Thêm liên hệ")
    print("2. Xem danh bạ")
    print("3. Thoát")
    lua_chon = input("Chọn chức năng: ")
    if lua_chon == "1":
        them_lien_he()
    elif lua_chon == "2":
        xem_danh_ba()
    elif lua_chon == "3":
        break

Bạn có thể bổ sung thêm 1 số tính năng khác như xóa/sửa danh bạ (tên người dùng + số điện thoại), cũng như trang trí thêm cho chương trình.

Tính toán chuỗi Fibonacci sử dụng đệ quy

Tạo một chương trình Python để tính giá trị của số Fibonacci thứ n sử dụng phương pháp đệ quy.

Dãy Fibonacci là một chuỗi số tự nhiên bắt đầu bằng hai số 0 và 1, sau đó các số tiếp theo trong chuỗi được tạo ra bằng cách cộng hai số trước đó lại với nhau. Dãy này được đặt tên theo tên của nhà toán học người Ý Leonardo Fibonacci, người đã giới thiệu chuỗi này vào cuối thế kỷ 12 qua cuốn sách “Liber Abaci” (Sách về Số học) năm 1202.

Dãy Fibonacci bắt đầu như sau:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

Công thức tổng quát để tính số Fibonacci thứ n (n là một số tự nhiên) là:
F(n) = F(n-1) + F(n-2)

Với F(0) = 0 và F(1) = 1 là hai điểm bắt đầu của dãy.

def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

n = int(input("Nhập số n: "))
print("Giá trị Fibonacci thứ", n, "là", fibonacci(n))

Xây dựng máy tính đơn giản

Tạo một ứng dụng máy tính đơn giản cho phép người dùng nhập các phép tính cộng, trừ, nhân, chia. Ngoài ra bạn còn có thể thêm 1 số phép toán khác nếu muốn.

def cong(a, b):
    return a + b

def tru(a, b):
    return a - b

def nhan(a, b):
    return a * b

def chia(a, b):
    if b != 0:
        return a / b
    else:
        return "Không thể chia cho 0"

while True:
    print("\n1. Cộng")
    print("2. Trừ")
    print("3. Nhân")
    print("4. Chia")
    print("5. Thoát")
    lua_chon = input("Chọn phép tính (1/2/3/4/5): ")
    if lua_chon == "5":
        break
    so1 = float(input("Nhập số thứ nhất: "))
    so2 = float(input("Nhập số thứ hai: "))
    if lua_chon == "1":
        print("Kết quả:", cong(so1, so2))
    elif lua_chon == "2":
        print("Kết quả:", tru(so1, so2))
    elif lua_chon == "3":
        print("Kết quả:", nhan(so1, so2))
    elif lua_chon == "4":
        print("Kết quả:", chia(so1, so2))

Quản lý thời gian

Tạo một ứng dụng quản lý thời gian cho phép người dùng thêm và xem sự kiện. Ngoài ra, bạn có thể tự thêm chức năng xóa và sửa sự kiện nếu muốn.

su_kien = {}

def them_su_kien():
    ngay = input("Nhập ngày (dd/mm/yyyy): ")
    noi_dung = input("Nhập nội dung sự kiện: ")
    su_kien[ngay] = noi_dung

def xem_su_kien():
    for ngay, noi_dung in su_kien.items():
        print(f"{ngay}: {noi_dung}")

while True:
    print("\n1. Thêm sự kiện")
    print("2. Xem sự kiện")
    print("3. Thoát")
    lua_chon = input("Chọn chức năng: ")
    if lua_chon == "1":
        them_su_kien()
    elif lua_chon == "2":
        xem_su_kien()
    elif lua_chon == "3":
        break

Sắp xếp danh sách

Tạo một chương trình Python để sắp xếp một danh sách các số nguyên theo thứ tự tăng dần.

# Lấy danh sách từ người dùng
danh_sach = []
n = int(input("Nhập số phần tử trong danh sách: "))

for i in range(n):
    phan_tu = int(input("Nhập phần tử thứ {}: ".format(i+1)))
    danh_sach.append(phan_tu)

# Sắp xếp danh sách
danh_sach.sort()

# In danh sách sau khi sắp xếp
print("Danh sách sau khi sắp xếp:", danh_sach)

Tạo đối tượng lớp hình học

Tạo một lớp hình học với các thuộc tính như chiều dài, chiều rộng, và các phương thức để tính diện tích và chu vi.

class HinhHoc:
    def __init__(self, chieu_dai, chieu_rong):
        self.chieu_dai = chieu_dai
        self.chieu_rong = chieu_rong

    def tinh_dien_tich(self):
        return self.chieu_dai * self.chieu_rong

    def tinh_chu_vi(self):
        return 2 * (self.chieu_dai + self.chieu_rong)

# Sử dụng lớp HinhHoc
hinh = HinhHoc(5, 3)
print("Diện tích:", hinh.tinh_dien_tich())
print("Chu vi:", hinh.tinh_chu_vi())

Tìm số nguyên tố sử dụng Sàng Eratosthenes

Tạo một chương trình Python để tìm tất cả các số nguyên tố nhỏ hơn hoặc bằng một số n bằng cách sử dụng thuật toán Sàng Eratosthenes.

Thuật toán Sàng Eratosthenes là một phương pháp để tìm tất cả các số nguyên tố trong một phạm vi số nguyên dương cho trước. Thuật toán này được đặt tên theo nhà toán học cổ đại Eratosthenes của Cyrene, người đã phát triển nó vào thế kỷ 3 trước Công nguyên.

Cách hoạt động của thuật toán Sàng Eratosthenes như sau:

  • Bắt đầu với một danh sách các số nguyên từ 2 đến n, trong đó n là giới hạn trên của phạm vi cần kiểm tra.
  • Bắt đầu với số đầu tiên trong danh sách (2) và đánh dấu tất cả các bội số của nó (tức là tất cả các số lớn hơn 2 mà chia hết cho 2) là không phải số nguyên tố.
  • Tiếp tục với số tiếp theo trong danh sách chưa được đánh dấu và lặp lại bước 2 cho đến khi bạn đã kiểm tra tất cả các số trong danh sách hoặc đến khi bạn đạt đến căn bậc hai của n (vì nếu một số nguyên không phải số nguyên tố, thì nó phải có một thừa số nguyên tố nhỏ hơn hoặc bằng căn bậc hai của n).
  • Tất cả các số còn lại trong danh sách sau khi hoàn thành các bước trên sẽ là các số nguyên tố.
    def sang_eratosthenes(n):
        is_prime = [True] * (n + 1)
        p = 2
        while p**2 <= n:
            if is_prime[p]:
                for i in range(p**2, n + 1, p):
                    is_prime[i] = False
            p += 1
    
        primes = [i for i in range(2, n + 1) if is_prime[i]]
        return primes
    
    n = int(input("Nhập số n: "))
    print("Các số nguyên tố nhỏ hơn hoặc bằng", n, "là:", sang_eratosthenes(n))
    

    Chương trình quản lý công việc

    Tạo một ứng dụng quản lý công việc cho phép người dùng thêm, sửa đổi, xóa và hiển thị danh sách công việc.

    # Mã nguồn ứng dụng quản lý công việc
    cong_viec = []
    
    def them_cong_viec():
        cv = input("Nhập công việc: ")
        cong_viec.append(cv)
    
    def xem_cong_viec():
        for i, cv in enumerate(cong_viec, 1):
            print(f"{i}. {cv}")
    
    while True:
        print("\n1. Thêm công việc")
        print("2. Xem danh sách công việc")
        print("3. Thoát")
        lua_chon = input("Chọn chức năng: ")
        if lua_chon == "1":
            them_cong_viec()
        elif lua_chon == "2":
            xem_cong_viec()
        elif lua_chon == "3":
            break
    

    Máy tính đa chức năng

    Khác với tạo máy tính đơn giản, máy tính đa chức năng có thêm một số hàm như lấy lũy thừa và tính căn bậc hai.

    import math
    
    def tinh_luy_thua(a, b):
        return a**b
    
    def tinh_can_bac_hai(a):
        return math.sqrt(a)
    
    while True:
        print("\n1. Cộng")
        print("2. Trừ")
        print("3. Nhân")
        print("4. Chia")
        print("5. Lũy thừa")
        print("6. Căn bậc hai")
        print("7. Thoát")
        lua_chon = input("Chọn phép tính (1/2/3/4/5/6/7): ")
        if lua_chon == "7":
            break
        so1 = float(input("Nhập số thứ nhất: "))
        if lua_chon != "6":
            so2 = float(input("Nhập số thứ hai: "))
        if lua_chon == "1":
            print("Kết quả:", so1 + so2)
        elif lua_chon == "2":
            print("Kết quả:", so1 - so2)
        elif lua_chon == "3":
            print("Kết quả:", so1 * so2)
        elif lua_chon == "4":
            if so2 != 0:
                print("Kết quả:", so1 / so2)
            else:
                print("Không thể chia cho 0")
        elif lua_chon == "5":
            print("Kết quả:", tinh_luy_thua(so1, so2))
        elif lua_chon == "6":
            print("Kết quả:", tinh_can_bac_hai(so1))
    

    Tạo trò chơi đoán số

    Tạo một trò chơi đoán số cho phép người dùng đoán một số ngẫu nhiên trong khoảng từ 1 đến 100 và cố gắng đoán chính xác số đó.

    import random
    
    so_may_tinh = random.randint(1, 100)
    so_luot = 0
    
    while True:
        so_luot += 1
        so_nguoi_choi = int(input("Đoán số (1-100): "))
        if so_nguoi_choi < so_may_tinh:
            print("Số bạn đoán nhỏ hơn số máy tính.")
        elif so_nguoi_choi > so_may_tinh:
            print("Số bạn đoán lớn hơn số máy tính.")
        else:
            print("Chính xác! Bạn đã đoán đúng số", so_may_tinh, "sau", so_luot, "lượt.")
            break
    

    Nhớ kiểm tra và xử lý lỗi khi sử dụng các đoạn mã này để đảm bảo tính ổn định của chương trình. Chúc bạn thành công trong việc thực hiện các bài tập này!

    Liên quan:  [Python] Phần 6: Kiểu dữ liệu chuỗi (string) trong Python
    Trích dẫn bài viết
    • APA:
      Dammio. (2023). 10 bài tập Python nâng cao có kèm theo mã nguồn. https://www.dammio.com/2023/09/13/10-bai-tap-python-nang-cao-co-kem-theo-ma-nguon.
    • BibTeX:
      @misc{dammio,
      author = {Dammio},
      title = {10 bài tập Python nâng cao có kèm theo mã nguồn},
      year = {2023},
      url = {https://www.dammio.com/2023/09/13/10-bai-tap-python-nang-cao-co-kem-theo-ma-nguon},
      urldate = {2024-07-23}
      }
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Phản hồi nội tuyến
    Xem tất cả bình luận
    0
    Rất thích suy nghĩ của bạn, hãy bình luận.x