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ữ lập trình Python? Qua bài viết dưới đây, Hoàng Hà Mobile sẽ giới thiệu bạn một số đề bài 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 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à ngôn ngữ lập trình phổ biến cho phát triển web back-end. Nó được 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à ngôn ngữ lập trình linh hoạt có thể được áp dụng để phát triển đa dạng ứng dụng phần mềm, bao gồm phần mềm doanh nghiệp, di động và trò chơi điện tử.
- Khoa học dữ liệu và máy học: Python là ngôn ngữ lập trình phổ biến trong lĩnh vực 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òn được sử dụng cho các ứng dụng khác như hệ thống nhúng, tự động hóa và scripting.
Cấu trúc bài tập Python cơ bản
Cấu trúc bài tập Python thường bao gồm những phần sau:
- Yêu cầu: Phần này mô tả chi tiết 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 các 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 chi tiết 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 để đánh giá 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 để học viên giải quyết bài tập.
Cấu trúc bài tập Python có thể được phân 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 độ trong bài tập Python
Các mức độ trong bài tập Python thường được phân 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.
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 chia các bài tập Python thành các mức độ giúp người học lựa chọn bài tập phù hợp với trình độ của mình. Luyện tập các bài tập ở các mức độ khác nhau sẽ giúp nâng cao kỹ năng lập trình Python 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 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 Python. Dưới đây là 10+ bài tập Python cấp độ 1 cho người mới bắt đầu có thể tham khảo:
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à hiển thị số đó.
number = input(“Nhập số: “)
print(number)
Bài 3: Viết chương trình để kiểm tra xem một số có phải là chẵn hay lẻ.
number = int(input(“Nhập 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)
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: 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}”)
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ố lớn nhất 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 không có phần tử nào
so_lon_nhat = danh_sach[0] # Giả sử phần tử đầu tiên là số 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 ý 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 la_so_nguyen_to(so):
if so <= 1:
return False
for i in range(2, int(so**0.5) + 1):
if so % i == 0:
return False
return True
# Nhập số từ người dùng
so_nguoi_dung = 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(so_nguoi_dung):
print(f”{so_nguoi_dung} là số nguyên tố.”)
else:
print(f”{so_nguoi_dung} 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()
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ụ minh họa
ma_tran = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
ma_tran_xoay = xoay_matran_90_do(ma_tran)
# In ra ma trận ban đầu
print(“Ma trận ban đầu:”)
for hang in ma_tran:
print(hang)
# In ra ma trận sau khi xoay 90 độ
print(“\nMa trận sau khi xoay 90 độ:”)
for hang in ma_tran_xoay:
print(hang)
Bài 5: Viết chương trình kiểm tra xem 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 = “Chào mừng bạn đến với OpenAI”
chuoi_con = “bạn”
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 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
# Ví dụ sử dụng:
mang_cac_so = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target_sum = 10
result_pairs = find_pairs_with_sum(mang_cac_so, 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 phát hiện 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
so_nhap_vao = input(“Nhập vào một số: “)
# Chuyển đổi chuỗi nhập thành số nguyên
so_nguyen = int(so_nhap_vao)
# In ra số vừa nhập
print(“Số bạn vừa nhập là:”, so_nguyen)
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.”)
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 hợp
Như vậy, qua bài viết này bạn đã có thể nắm được hơn 100 bài tập Python từ cấp độ 1 đến cấp độ 3 một cách nhanh chóng và chính xác. Hi vọng bài viết này cung cấp cho bạn những bài tập hữu ích để rèn luyện và nâng cao kỹ năng lập trình của mình.