Professional Documents
Culture Documents
300 Bai Code Thieu Nhi Bang Python FxStudio v1.0.0
300 Bai Code Thieu Nhi Bang Python FxStudio v1.0.0
Python
Le Phuong Tien
fxstudio.dev
“tínhLập trình hướng đối tượng có bốn tính chất cơ bản, đó là:
đóng gói, tính thừa kế, tính đa hình và tính trừu tượng.
Trong số chúng, tính thừa kế là quan trọng nhất. Vì có thừa kế,
thì hai đối tượng tồn tại mới có được mối quan hệ gọi là: “CHA
và CON”.
Mục lục
Giới thiệu
Chào thế giới
Chương 1: Cấu trúc điều khiển
Chương 2: Hàm
Chương 3 : Danh sách (List)
Chương 4: Tuple
Chương 5: Dictionary
Chương 6: Set
Chương 7: Chuỗi (String)
Chương 8: File I/O
Chương 9: Lập trình hướng đối tượng (OOP)
Chương 10: Ngoại lệ (Exception)
Chương 11: Xử lý văn bản
Chương 12: Xử lý ngày và thời gian
Chương 13: Lập trình hàm
Chương 14: Bài toán thuật toán
Chương 15: Bài toán số học
Chương 16: Giao diện (GUI) cơ bản
Chương 17: Bài tập tổng hợp
Chương 18: Decorator
Chương 19: Iterator
Chương 20: Generator
Chương 21: Vẽ đồ thị
Chương 22: Bài tập với SQL
Chương 23: Xử lý dữ liệu cơ bản
Chương 24: Thực hành lập trình mạng cơ bản
Chương 25: Bài tập với API cơ bản
Chương 26: Bài tập với web scraping cơ bản
Chương 27: Bài toán ma trận cơ bản
Chương 28: Bài tập về lập trình đồ họa cơ bản
Chương 29: Khoa học dữ liệu cơ bản
Chương 30: Xử lý ảnh
Lời chào tạm biệt
Giới thiệu
“phimTiêu“Tây
đề cuốn sách dựa theo một bí kíp võ công có trong bộ
du ký” của Châu Tinh Trì.
Đây là một cuốn sách nhỏ về lập trình Python, được thiết kế dành
riêng cho các bạn học sinh tự học. Cuốn sách không chỉ đơn thuần
là lý thuyết hay hướng dẫn, mà là một bộ sưu tập 300 bài tập thực
hành. Mỗi bài tập là kết quả từ kinh nghiệm và kiến thức lập trình
của mình, nhằm giúp các bạn rèn luyện và nắm vững kỹ năng
Python một cách hiệu quả nhất.
Với 300 bài tập đa dạng và thú vị, cuốn sách này giúp các em học
sinh rèn luyện kỹ năng lập trình Python một cách hiệu quả. Từ
những bài tập cơ bản cho đến những bài tập phức tạp hơn, cuốn
sách mang đến cho các em những thử thách thú vị để phát triển tư
duy logic và khả năng giải quyết vấn đề.
Ý tưởng cho cuốn sách này không mới. Có nhiều bạn đã làm rồi.
Mình chỉ góp vui thêm một chút mà thôi.
Thời đại bây giờ là sự bùng nổ của Trí tuệ nhân tạo. Thay vì suy
nghĩ AI có hủy diệt thế giới hay không. Thì hãy tận dụng chúng &
sống chung với chúng nhóe. Và còn gì tốt hơn khi công việc của
chúng ta lại góp phần chuẩn bị cho tương lai của thế hệ tương lai.
Liên hệ
Website: fxstudio.dev
Email: contacts@fxstudio.dev
Buy me a coffee!
Chào thế giới!
Giải thích đề bài
Bài tập yêu cầu bạn viết một chương trình đơn giản để in ra màn
hình dòng chữ “Chào thế giới”.
Đầu ra:
Code Python
# Chương trình chào thế giới
Tóm tắt
1. Hàm print(): Là một hàm tích hợp sẵn trong Python dùng để in
ra một chuỗi, số, hoặc bất kỳ đối tượng nào khác ra màn hình.
Chương trình trên rất đơn giản và minh họa cách sử dụng cơ bản
của hàm print() trong Python để thực hiện nhiệm vụ in ra màn hình
một thông điệp cụ thể.
Chương 1: Cấu trúc điều khiển
1. Viết chương trình để kiểm tra số nguyên dương hay âm.
2. Viết chương trình để kiểm tra số chẵn hay lẻ.
3. Viết chương trình để tìm số lớn nhất trong ba số.
4. Viết chương trình để tính tiền taxi dựa trên số km đã đi.
5. Viết chương trình để tính điểm trung bình và xếp loại học sinh.
6. Viết chương trình để in bảng cửu chương.
7. Viết chương trình để kiểm tra một năm có phải năm nhuận
không.
8. Viết chương trình để đếm số lượng số chẵn và lẻ trong một danh
sách.
9. Viết chương trình để in tất cả các số nguyên tố từ 1 đến 100.
10. Viết chương trình để tìm ước số chung lớn nhất của hai số.
001 - Viết chương trình để kiểm tra số
nguyên dương hay âm.
Đầu ra:
Code Python
# Chương trình kiểm tra số nguyên dương hay âm
def check_number(n):
if n > 0:
return "Số bạn nhập là số dương."
elif n < 0:
return "Số bạn nhập là số âm."
else:
return "Số bạn nhập là số không (không phải dương
cũng không phải âm)."
Hàm này nhận một tham số n là số nguyên và kiểm tra giá trị
của n.
Sử dụng cấu trúc điều kiện if-elif-else để xác định xem n
là số dương, số âm hay bằng 0 và trả về thông báo tương
ứng.
Tóm tắt
1. Hàm input(): Dùng để nhận dữ liệu nhập từ người dùng dưới
dạng chuỗi.
2. Hàm int(): Dùng để chuyển đổi chuỗi sang số nguyên.
3. Cấu trúc điều kiện if-elif-else: Dùng để kiểm tra các điều
kiện và thực thi các đoạn mã khác nhau dựa trên kết quả của
các điều kiện đó.
4. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
5. try-except: Dùng để xử lý ngoại lệ, giúp chương trình có thể xử
lý các lỗi có thể xảy ra khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên đơn giản nhưng minh họa được cách sử dụng
các cấu trúc điều kiện, hàm và xử lý ngoại lệ trong Python để giải
quyết một bài toán cụ thể.
002 - Viết chương trình để kiểm tra số
chẵn hay lẻ.
Đầu ra:
Code Python
# Chương trình kiểm tra số chẵn hay lẻ
def check_even_odd(n):
if n % 2 == 0:
return "Số bạn nhập là số chẵn."
else:
return "Số bạn nhập là số lẻ."
Hàm này nhận một tham số n là số nguyên và kiểm tra giá trị
của n.
Sử dụng toán tử % để lấy phần dư của n khi chia cho 2.
Sử dụng cấu trúc điều kiện if-else để xác định xem n là số
chẵn hay số lẻ và trả về thông báo tương ứng.
Chương trình trên đơn giản nhưng minh họa được cách sử dụng
các cấu trúc điều kiện, hàm và xử lý ngoại lệ trong Python để giải
quyết một bài toán cụ thể về kiểm tra số chẵn hay lẻ.
003 - Viết chương trình để tìm số lớn
nhất trong ba số.
Đầu ra:
Thông báo cho người dùng biết số lớn nhất trong ba số đó.
Code Python
# Chương trình tìm số lớn nhất trong ba số
Chương trình trên minh họa cách sử dụng các cấu trúc điều kiện,
hàm và xử lý ngoại lệ trong Python để giải quyết một bài toán cụ thể
về tìm số lớn nhất trong ba số.
004 - Chương trình tính tiền taxi dựa
trên số km đã đi
Giả định về giá cước (có thể thay đổi theo yêu
cầu cụ thể):
1. Km đầu tiên: 10.000 VNĐ.
2. Từ km thứ 2 đến km thứ 10: 8.500 VNĐ/km.
3. Từ km thứ 11 trở đi: 7.500 VNĐ/km.
Đầu ra:
def calculate_taxi_fare(km):
if km <= 1:
fare = 10000
elif km <= 10:
fare = 10000 + (km - 1) * 8500
else:
fare = 10000 + 9 * 8500 + (km - 10) * 7500
return fare
Tóm tắt
1. Hàm input(): Dùng để nhận dữ liệu nhập từ người dùng dưới
dạng chuỗi.
2. Hàm float(): Dùng để chuyển đổi chuỗi sang số thực.
3. Cấu trúc điều kiện if-elif-else: Dùng để kiểm tra các điều
kiện và thực thi các đoạn mã khác nhau dựa trên kết quả của
các điều kiện đó.
4. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
5. try-except: Dùng để xử lý ngoại lệ, giúp chương trình có thể xử
lý các lỗi có thể xảy ra khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc điều kiện,
hàm và xử lý ngoại lệ trong Python để giải quyết một bài toán cụ thể
về tính tiền taxi dựa trên số km đã đi.
005 - Viết chương trình để tính điểm
trung bình và xếp loại học sinh.
Điểm số của các môn học (một danh sách các số thực).
Đầu ra:
Code Python
# Chương trình tính điểm trung bình và xếp loại học sinh
if len(scores) == num_subjects:
average_score = calculate_average(scores)
classification = classify_student(average_score)
print(f"Điểm trung bình: {average_score:.2f}")
print(f"Xếp loại: {classification}")
except ValueError:
print("Vui lòng nhập một số hợp lệ.")
Hàm này nhận một danh sách scores chứa các điểm số của
các môn học và tính điểm trung bình.
Sử dụng hàm sum() để tính tổng điểm và chia cho độ dài
len() của danh sách scores để lấy điểm trung bình.
Hàm này nhận một tham số average là điểm trung bình và trả
về xếp loại học sinh dựa trên các tiêu chí đã cho.
Sử dụng vòng lặp for để nhập điểm số của từng môn học từ
người dùng.
Kiểm tra nếu điểm số nhập vào không hợp lệ (không trong
khoảng từ 0 đến 10) thì thông báo lỗi và yêu cầu nhập lại.
Kiểm tra nếu số lượng môn học nhập vào không hợp lệ (<=
0) thì thông báo lỗi.
Tóm tắt
1. Hàm input(): Dùng để nhận dữ liệu nhập từ người dùng dưới
dạng chuỗi.
2. Hàm float() và int(): Dùng để chuyển đổi chuỗi sang số thực
và số nguyên.
3. Hàm sum(): Dùng để tính tổng các phần tử trong một danh sách.
4. Hàm len(): Dùng để lấy số lượng các phần tử trong một danh
sách.
5. Cấu trúc điều kiện if-elif-else: Dùng để kiểm tra các điều
kiện và thực thi các đoạn mã khác nhau dựa trên kết quả của
các điều kiện đó.
6. Vòng lặp for: Dùng để lặp qua một dãy các phần tử hoặc một
khoảng giá trị.
7. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
8. try-except: Dùng để xử lý ngoại lệ, giúp chương trình có thể xử
lý các lỗi có thể xảy ra khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc điều kiện,
vòng lặp, hàm và xử lý ngoại lệ trong Python để giải quyết một bài
toán cụ thể về tính điểm trung bình và xếp loại học sinh.
006 - Viết chương trình để in bảng
cửu chương
Đầu ra:
Code Python
# Chương trình in bảng cửu chương từ 1 đến 10
def print_multiplication_table():
for i in range(1, 11):
print(f"Bảng cửu chương {i}:")
for j in range(1, 11):
print(f"{i} x {j} = {i * j}")
print() # In dòng trống để ngăn cách giữa các bảng
cửu chương
Hàm này không nhận tham số và thực hiện việc in bảng cửu
chương từ 1 đến 10.
Sử dụng vòng lặp for để duyệt qua các số từ 1 đến 10 cho
cả số bị nhân và số nhân.
In kết quả của từng phép nhân theo định dạng “i x j = i * j”.
3. In dòng trống:
Chương trình trên minh họa cách sử dụng vòng lặp, hàm và định
dạng chuỗi trong Python để in bảng cửu chương từ 1 đến 10 một
cách rõ ràng và dễ đọc.
007 - Viết chương trình để kiểm tra
một năm có phải năm nhuận không
1. Năm đó chia hết cho 4 và không chia hết cho 100, hoặc
2. Năm đó chia hết cho 400.
Đầu ra:
Thông báo cho người dùng biết năm đó có phải là năm nhuận
hay không.
def is_leap_year(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 ==
0):
return True
else:
return False
Hàm này nhận một tham số year là một năm và kiểm tra xem
năm đó có phải là năm nhuận hay không.
Sử dụng cấu trúc điều kiện if để kiểm tra các tiêu chí:
Nếu năm chia hết cho 4 và không chia hết cho 100, hoặc
năm chia hết cho 400, thì năm đó là năm nhuận.
Ngược lại, năm đó không phải là năm nhuận.
Tóm tắt
1. Hàm input(): Dùng để nhận dữ liệu nhập từ người dùng dưới
dạng chuỗi.
2. Hàm int(): Dùng để chuyển đổi chuỗi sang số nguyên.
3. Cấu trúc điều kiện if-else: Dùng để kiểm tra các điều kiện và
thực thi các đoạn mã khác nhau dựa trên kết quả của các điều
kiện đó.
4. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
5. try-except: Dùng để xử lý ngoại lệ, giúp chương trình có thể xử
lý các lỗi có thể xảy ra khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc điều kiện,
hàm và xử lý ngoại lệ trong Python để giải quyết một bài toán cụ thể
về kiểm tra một năm có phải là năm nhuận hay không.
008 - Viết chương trình để đếm số
lượng số chẵn và lẻ trong một danh
sách
Đầu ra:
Số lượng số chẵn.
Số lượng số lẻ.
Code Python
# Chương trình đếm số lượng số chẵn và số lẻ trong một danh
sách
def count_even_odd(numbers):
count_even = 0
count_odd = 0
for number in numbers:
if number % 2 == 0:
count_even += 1
else:
count_odd += 1
return count_even, count_odd
Hàm này nhận một danh sách numbers chứa các số nguyên.
Khởi tạo hai biến count_even và count_odd để đếm số lượng
số chẵn và số lẻ.
Sử dụng vòng lặp for để duyệt qua từng số trong danh
sách:
Nếu số đó chia hết cho 2 (number % 2 == 0), tăng biến
count_even lên 1.
Ngược lại, tăng biến count_odd lên 1.
Trả về số lượng số chẵn và số lẻ.
Tóm tắt
1. Hàm input(): Dùng để nhận dữ liệu nhập từ người dùng dưới
dạng chuỗi.
2. Hàm split(): Dùng để tách chuỗi thành các phần tử dựa trên
một ký tự phân tách (mặc định là dấu cách).
3. List comprehension: Dùng để tạo danh sách mới bằng cách
duyệt qua một iterable và áp dụng một biểu thức cho từng phần
tử.
4. Vòng lặp for: Dùng để lặp qua một dãy các phần tử.
5. Cấu trúc điều kiện if-else: Dùng để kiểm tra các điều kiện và
thực thi các đoạn mã khác nhau dựa trên kết quả của các điều
kiện đó.
6. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
7. try-except: Dùng để xử lý ngoại lệ, giúp chương trình có thể xử
lý các lỗi có thể xảy ra khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
điều kiện, hàm và xử lý ngoại lệ trong Python để giải quyết một bài
toán cụ thể về đếm số lượng số chẵn và số lẻ trong một danh sách
các số nguyên.
009 - Viết chương trình để in tất cả
các số nguyên tố từ 1 đến 100
Đầu ra:
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def print_primes_up_to_100():
for number in range(1, 101):
if is_prime(number):
print(number, end=' ')
print() # Dòng mới sau khi in xong tất cả các số nguyên
tố
Tóm tắt
1. Vòng lặp for: Dùng để lặp qua một dãy các phần tử.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử số học: Dùng để tính toán căn bậc hai và kiểm tra chia
hết.
4. Cấu trúc điều kiện if-else: Dùng để kiểm tra các điều kiện và
thực thi các đoạn mã khác nhau dựa trên kết quả của các điều
kiện đó.
5. In ra kết quả: Sử dụng hàm print() để in ra kết quả. Tham số
end=' ' trong hàm print() được sử dụng để in các số nguyên
tố trên cùng một dòng, cách nhau bởi một dấu cách.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
điều kiện và hàm trong Python để giải quyết một bài toán cụ thể về
in tất cả các số nguyên tố từ 1 đến 100.
010 - Viết chương trình để tìm ước số
chung lớn nhất (USCLN) của hai số
Code Python
# Chương trình tìm ước số chung lớn nhất (USCLN) của hai số
nguyên
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
Tóm tắt
1. Vòng lặp while: Dùng để lặp cho đến khi một điều kiện nào đó
không còn đúng.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử số học: Dùng để thực hiện phép chia lấy dư.
4. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
5. Chuyển đổi dữ liệu: Sử dụng hàm int() để chuyển đổi chuỗi
sang số nguyên.
6. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
hàm và xử lý ngoại lệ trong Python để giải quyết một bài toán cụ thể
về tìm ước số chung lớn nhất của hai số nguyên.
Chương 2: Hàm
11. Viết hàm để tính giai thừa của một số.
12. Viết hàm để tính tổng các số từ 1 đến n.
13. Viết hàm để kiểm tra một số có phải là số nguyên tố không.
14. Viết hàm để tìm số lớn nhất trong một danh sách.
15. Viết hàm để tính tổng các chữ số của một số.
16. Viết hàm để kiểm tra một chuỗi có phải là palindrome không.
17. Viết hàm để tính lũy thừa của một số.
18. Viết hàm để chuyển đổi độ C sang độ F.
19. Viết hàm để tính chu vi và diện tích hình tròn.
20. Viết hàm để tính chu vi và diện tích hình chữ nhật.
011 - Viết hàm để tính giai thừa của
một số
Đầu ra:
def factorial_iterative(n):
if n < 0:
return "Giai thừa không xác định cho số âm"
result = 1
for i in range(1, n + 1):
result *= i
return result
Đầu ra:
def factorial_recursive(n):
if n < 0:
return "Giai thừa không xác định cho số âm"
elif n == 0 or n == 1:
return 1
else:
return n * factorial_recursive(n - 1)
Tóm tắt
1. Vòng lặp for: Dùng để lặp qua một dãy các phần tử.
2. Hàm đệ quy: Một hàm gọi chính nó để giải quyết một bài toán.
3. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
4. Toán tử số học: Dùng để thực hiện các phép tính.
5. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
6. Chuyển đổi dữ liệu: Sử dụng hàm int() để chuyển đổi chuỗi
sang số nguyên.
7. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp, đệ
quy, hàm và xử lý ngoại lệ trong Python để giải quyết bài toán tính
giai thừa của một số nguyên dương.
012 - Viết hàm để tính tổng các số từ 1
đến n
Code Python
# Chương trình tính tổng các số từ 1 đến n
def sum_of_numbers(n):
if n < 1:
return "Vui lòng nhập một số nguyên dương lớn hơn
hoặc bằng 1."
return n * (n + 1) // 2
Chương trình trên minh họa cách sử dụng công thức toán học, hàm
và xử lý ngoại lệ trong Python để giải quyết bài toán tính tổng các số
từ 1 đến n.
013 - Viết hàm để kiểm tra một số có
phải là số nguyên tố không
1. Nếu n nhỏ hơn hoặc bằng 1, thì n không phải là số nguyên tố.
2. Nếu n là 2 hoặc 3, thì n là số nguyên tố.
3. Nếu n chia hết cho 2 hoặc 3, thì n không phải là số nguyên tố.
4. Kiểm tra các số lẻ từ 5 đến căn bậc hai của n. Nếu n chia hết
cho bất kỳ số nào trong khoảng này, thì n không phải là số
nguyên tố.
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
Tóm tắt
1. Vòng lặp while: Dùng để lặp cho đến khi một điều kiện nào đó
không còn đúng.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử số học: Dùng để thực hiện phép chia và kiểm tra chia
hết.
4. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
5. Chuyển đổi dữ liệu: Sử dụng hàm int() để chuyển đổi chuỗi
sang số nguyên.
6. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
hàm và xử lý ngoại lệ trong Python để giải quyết bài toán kiểm tra
xem một số có phải là số nguyên tố hay không.
014 - Viết hàm để tìm số lớn nhất
trong một danh sách
Code Python
# Chương trình tìm số lớn nhất trong một danh sách
def find_max(numbers):
if not numbers:
return "Danh sách rỗng, không có số lớn nhất."
max_number = numbers[0]
for num in numbers:
if num > max_number:
max_number = num
return max_number
if not numbers:
print("Danh sách rỗng, không có số lớn nhất.")
else:
max_number = find_max(numbers)
print(f"Số lớn nhất trong danh sách là:
{max_number}")
except ValueError:
print("Vui lòng nhập các số hợp lệ.")
Hàm này nhận một tham số numbers là một danh sách các số
và tìm số lớn nhất trong danh sách đó.
Nếu danh sách rỗng, trả về thông báo lỗi.
Khởi tạo biến max_number bằng phần tử đầu tiên của danh
sách.
Sử dụng vòng lặp for để duyệt qua từng phần tử trong danh
sách. Nếu phần tử hiện tại lớn hơn max_number, cập nhật
max_number.
Trả về giá trị của max_number.
Tóm tắt
1. Vòng lặp for: Dùng để lặp qua các phần tử của một danh sách.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử so sánh: Dùng để so sánh các phần tử trong danh
sách.
4. List comprehension: Dùng để tạo danh sách mới bằng cách
chuyển đổi và lọc các phần tử từ một danh sách khác.
5. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
6. Chuyển đổi dữ liệu: Sử dụng phương thức split() và float()
để chuyển đổi chuỗi thành danh sách các số thực.
7. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
hàm, list comprehension và xử lý ngoại lệ trong Python để giải quyết
bài toán tìm số lớn nhất trong một danh sách.
015 - Viết hàm để tính tổng các chữ số
của một số
Code Python
# Chương trình tính tổng các chữ số của một số
def sum_of_digits(n):
# Đảm bảo n là số dương
n = abs(n)
total = 0
while n > 0:
total += n % 10
n //= 10
return total
Chương trình trên minh họa cách sử dụng các cấu trúc vòng lặp,
hàm và xử lý ngoại lệ trong Python để giải quyết bài toán tính tổng
các chữ số của một số.
016 - Viết hàm để kiểm tra một chuỗi
có phải là palindrome không
1. Chuyển chuỗi về cùng một dạng chuẩn (ví dụ: chuyển tất cả ký
tự về chữ thường và loại bỏ các ký tự không phải chữ cái và số).
2. So sánh chuỗi với chuỗi đảo ngược của nó.
3. Nếu hai chuỗi giống nhau, chuỗi ban đầu là palindrome.
Code Python
# Chương trình kiểm tra một chuỗi có phải là palindrome không
def is_palindrome(s):
# Chuyển tất cả ký tự về chữ thường và loại bỏ các ký tự
không phải chữ cái và số
s = ''.join(char.lower() for char in s if char.isalnum())
# So sánh chuỗi với chuỗi đảo ngược của nó
return s == s[::-1]
if is_palindrome(input_string):
print(f'"{input_string}" là palindrome.')
else:
print(f'"{input_string}" không phải là palindrome.')
Hàm này nhận một tham số s là một chuỗi và kiểm tra xem
chuỗi đó có phải là palindrome hay không.
Sử dụng list comprehension để chuyển tất cả các ký tự của
chuỗi về chữ thường và loại bỏ các ký tự không phải chữ cái
và số.
So sánh chuỗi đã chuẩn hóa với chuỗi đảo ngược của nó
(sử dụng slicing [::-1] để đảo ngược chuỗi).
Chương trình trên minh họa cách sử dụng list comprehension, các
phương thức chuỗi và slicing trong Python để kiểm tra xem một
chuỗi có phải là palindrome hay không.
017 - Viết hàm để tính lũy thừa của
một số
Code Python
# Chương trình tính lũy thừa của một số
Hàm này nhận hai tham số base (cơ số) và exponent (số mũ)
và tính lũy thừa của base với exponent.
Khởi tạo biến result bằng 1.
Sử dụng vòng lặp for để nhân base với result
abs(exponent) lần.
Nếu exponent là số âm, lấy nghịch đảo của result để tính
lũy thừa âm.
Trả về kết quả result.
Tóm tắt
1. Vòng lặp for: Dùng để lặp qua một dãy số hoặc các phần tử
của một đối tượng.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử số học: Dùng để thực hiện phép nhân và phép chia.
4. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
5. Chuyển đổi dữ liệu: Sử dụng hàm float() để chuyển đổi chuỗi
sang số thực và hàm int() để chuyển đổi chuỗi sang số
nguyên.
6. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Chương trình trên minh họa cách sử dụng vòng lặp, hàm và xử lý
ngoại lệ trong Python để tính lũy thừa của một số.
018 - Viết hàm để chuyển đổi độ C
sang độ F
Code Python
# Chương trình chuyển đổi độ Celsius sang độ Fahrenheit
def celsius_to_fahrenheit(celsius):
return celsius * 9 / 5 + 32
Tóm tắt
1. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
2. Toán tử số học: Dùng để thực hiện các phép nhân, chia và
cộng.
3. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
4. Chuyển đổi dữ liệu: Sử dụng hàm float() để chuyển đổi chuỗi
sang số thực.
5. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
Code Python
import math
Thư viện math cung cấp hằng số math.pi với giá trị xấp xỉ
của pi.
Hàm này nhận một tham số radius là bán kính của hình tròn
và trả về chu vi của hình tròn.
Sử dụng công thức: C = 2 * pi * r.
Hàm này nhận một tham số radius là bán kính của hình tròn
và trả về diện tích của hình tròn.
Sử dụng công thức: A = pi * r^2.
Tóm tắt
1. Thư viện math: Cung cấp các hằng số và hàm toán học, như
math.pi.
2. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
3. Toán tử số học: Dùng để thực hiện các phép nhân và bình
phương.
4. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
5. Chuyển đổi dữ liệu: Sử dụng hàm float() để chuyển đổi chuỗi
sang số thực.
6. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
7. Câu điều kiện if-else: Dùng để kiểm tra điều kiện và thực hiện
các hành động dựa trên điều kiện đó.
Chương trình trên minh họa cách sử dụng thư viện math, hàm, xử lý
ngoại lệ và câu điều kiện trong Python để tính chu vi và diện tích của
hình tròn.
020 - Viết hàm để tính chu vi và diện
tích hình chữ nhật
Code Python
# Hàm tính chu vi hình chữ nhật
def rectangle_perimeter(length, width):
return 2 * (length + width)
Tóm tắt
1. Hàm và định nghĩa hàm: Dùng để đóng gói các đoạn mã có thể
tái sử dụng và giúp chương trình dễ đọc hơn.
2. Toán tử số học: Dùng để thực hiện các phép cộng và nhân.
3. Nhập dữ liệu: Sử dụng hàm input() để nhận dữ liệu từ người
dùng.
4. Chuyển đổi dữ liệu: Sử dụng hàm float() để chuyển đổi chuỗi
sang số thực.
5. Xử lý ngoại lệ try-except: Dùng để xử lý các lỗi có thể xảy ra
khi chuyển đổi dữ liệu hoặc các lỗi khác.
6. Câu điều kiện if-else: Dùng để kiểm tra điều kiện và thực hiện
các hành động dựa trên điều kiện đó.
Code Python
# Tạo danh sách các số từ 1 đến 100
numbers = list(range(1, 101))
Hàm range(1, 101) tạo một đối tượng dãy số bắt đầu từ 1
và kết thúc trước 101, nghĩa là từ 1 đến 100.
Tóm tắt
1. Hàm range(): Dùng để tạo một dãy số theo các bước nhất định.
2. Hàm list(): Dùng để chuyển đổi một đối tượng có thể lặp lại
(iterable) thành một danh sách.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách sử dụng hàm range và list trong
Python để tạo danh sách các số từ 1 đến 100.
022 - Viết chương trình để thêm một
phần tử vào cuối danh sách
Code Python
# Khởi tạo danh sách ban đầu
my_list = [1, 2, 3, 4, 5]
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [1, 2, 3, 4, 5]).
Tóm tắt
1. Phương thức append(): Dùng để thêm một phần tử vào cuối
danh sách.
2. Hàm input(): Dùng để nhận dữ liệu từ người dùng.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
4. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng phương thức append() để
thêm một phần tử vào cuối danh sách trong Python.
023 - Viết chương trình để thêm một
phần tử vào đầu danh sách
Code Python
# Khởi tạo danh sách ban đầu
my_list = [1, 2, 3, 4, 5]
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [1, 2, 3, 4, 5]).
Tóm tắt
1. Phương thức insert(): Dùng để chèn một phần tử vào danh
sách tại một vị trí cụ thể. Cú pháp: list.insert(index,
element) với index là vị trí và element là phần tử muốn chèn.
2. Hàm input(): Dùng để nhận dữ liệu từ người dùng.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
4. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng phương thức insert() để
chèn một phần tử vào đầu danh sách trong Python.
024 - Viết chương trình để xóa một
phần tử khỏi danh sách
Code Python
# Khởi tạo danh sách ban đầu
my_list = [1, 2, 3, 4, 5]
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [1, 2, 3, 4, 5]).
Sử dụng câu điều kiện if để kiểm tra xem phần tử có tồn tại
trong danh sách không.
Nếu tồn tại, sử dụng phương thức remove() của đối tượng
danh sách để xóa phần tử đó.
Nếu không tồn tại, in ra thông báo lỗi.
Sử dụng hàm print() để in danh sách sau khi xóa phần tử.
Tóm tắt
1. Phương thức remove(): Dùng để xóa phần tử đầu tiên có giá trị
được chỉ định ra khỏi danh sách.
2. Hàm input(): Dùng để nhận dữ liệu từ người dùng.
3. Hàm int() và float(): Dùng để chuyển đổi chuỗi thành số
nguyên và số thực.
4. Xử lý ngoại lệ try-except: Dùng để bắt lỗi có thể xảy ra khi
chuyển đổi dữ liệu.
5. Câu điều kiện if-else: Dùng để kiểm tra điều kiện và thực hiện
các hành động dựa trên điều kiện đó.
6. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách sử dụng phương thức remove() để
xóa một phần tử khỏi danh sách trong Python, cùng với xử lý ngoại
lệ và kiểm tra điều kiện.
025 - Viết chương trình để sắp xếp
danh sách theo thứ tự tăng dần
Code Python
# Khởi tạo danh sách ban đầu
my_list = [34, 1, 23, 4, 3, 12, 45, 33, 6, 22]
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [34, 1, 23, 4, 3, 12, 45, 33, 6, 22]).
Tóm tắt
1. Phương thức sort(): Dùng để sắp xếp các phần tử của danh
sách theo thứ tự tăng dần. Phương thức này thay đổi danh sách
gốc và không trả về giá trị nào.
2. Hàm print(): Dùng để in dữ liệu ra màn hình.
3. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng phương thức sort() để
sắp xếp danh sách theo thứ tự tăng dần trong Python.
026 - Viết chương trình để sắp xếp
danh sách theo thứ tự giảm dần
Code Python
import random
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [34, 1, 23, 4, 3, 12, 45, 33, 6, 22]).
Chương trình trên minh họa cách sử dụng hàm shuffle() để xáo
trộn danh sách và phương thức sort(reverse=True) để sắp xếp
danh sách theo thứ tự giảm dần trong Python.
027 - Viết chương trình để tìm phần tử
lớn nhất trong danh sách
Code Python
# Khởi tạo danh sách ban đầu
my_list = [34, 1, 23, 4, 3, 12, 45, 33, 6, 22]
Tóm tắt
1. Hàm max(): Dùng để tìm và trả về phần tử có giá trị lớn nhất
trong một danh sách hoặc iterable.
2. Hàm print(): Dùng để in dữ liệu ra màn hình.
3. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng hàm max() để tìm phần tử
lớn nhất trong danh sách trong Python.
028 - Viết chương trình để tìm phần tử
nhỏ nhất trong danh sách
Code Python
# Khởi tạo danh sách ban đầu
my_list = [34, 1, 23, 4, 3, 12, 45, 33, 6, 22]
Tóm tắt
1. Hàm min(): Dùng để tìm và trả về phần tử có giá trị nhỏ nhất
trong một danh sách hoặc iterable.
2. Hàm print(): Dùng để in dữ liệu ra màn hình.
3. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng hàm min() để tìm phần tử
nhỏ nhất trong danh sách trong Python.
029 - Viết chương trình để tính tổng
các phần tử trong danh sách
Code Python
import random
Tóm tắt
1. Module random: Cung cấp các hàm để tạo ra các số ngẫu nhiên.
2. Hàm random.randint(a, b): Dùng để trả về một số nguyên
ngẫu nhiên trong khoảng từ a đến b (bao gồm cả a và b).
3. List Comprehension: Dùng để tạo danh sách mới từ một
iterable. Trong ví dụ này, [random.randint(1, 100) for _ in
range(10)] tạo một danh sách gồm 10 phần tử ngẫu nhiên.
4. Hàm sum(): Dùng để tính tổng các phần tử trong một danh sách
hoặc iterable.
5. Hàm print(): Dùng để in dữ liệu ra màn hình.
Code Python
# Khởi tạo danh sách ban đầu
my_list = [1, 3, 7, 8, 7, 5, 6, 7, 2, 7, 10]
Khởi tạo một danh sách ban đầu với một số phần tử (trong ví
dụ này là [1, 3, 7, 8, 7, 5, 6, 7, 2, 7, 10]).
Tóm tắt
1. Phương thức count(): Dùng để đếm số lần xuất hiện của một
phần tử cụ thể trong danh sách.
2. Hàm input(): Dùng để nhận dữ liệu từ người dùng.
3. Hàm int() và float(): Dùng để chuyển đổi chuỗi thành số
nguyên và số thực.
4. Xử lý ngoại lệ try-except: Dùng để bắt lỗi có thể xảy ra khi
chuyển đổi dữ liệu.
5. Hàm print(): Dùng để in dữ liệu ra màn hình.
6. Khởi tạo danh sách: Dùng để tạo một danh sách ban đầu với
các phần tử nhất định.
Chương trình trên minh họa cách sử dụng phương thức count() để
đếm số lần xuất hiện của một phần tử trong danh sách trong Python.
Chương 4: Tuple
31. Viết chương trình để tạo một tuple.
32. Viết chương trình để truy cập một phần tử trong tuple.
33. Viết chương trình để nối hai tuple.
34. Viết chương trình để lấy độ dài của một tuple.
35. Viết chương trình để chuyển đổi một tuple thành danh sách.
36. Viết chương trình để chuyển đổi một danh sách thành tuple.
37. Viết chương trình để kiểm tra một phần tử có tồn tại trong tuple
không.
38. Viết chương trình để đếm số lần xuất hiện của một phần tử trong
tuple.
39. Viết chương trình để tìm phần tử lớn nhất trong tuple.
40. Viết chương trình để tìm phần tử nhỏ nhất trong tuple.
031 - Viết chương trình để tạo một
tuple
Code Python
# Khởi tạo một tuple
my_tuple = (1, 2, 3, 4, 5)
# In tuple đã tạo
print("Tuple đã tạo:", my_tuple)
Khởi tạo một tuple với các phần tử mong muốn bằng cách
đặt các phần tử bên trong dấu ngoặc tròn (). Trong ví dụ
này, tuple được khởi tạo với các phần tử [1, 2, 3, 4, 5].
2. In tuple đã tạo:
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo và in một tuple trong
Python. Tuple có thể chứa các loại dữ liệu khác nhau và một khi đã
được khởi tạo, các phần tử của nó không thể thay đổi.
032 - Viết chương trình để truy cập
một phần tử trong tuple
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 50)
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Chỉ số (index): Dùng để truy cập các phần tử cụ thể trong tuple.
Chỉ số bắt đầu từ 0.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, truy cập một
phần tử cụ thể trong tuple bằng chỉ số và in ra phần tử đã truy cập
trong Python.
033 - Viết chương trình để nối hai
tuple
Code Python
# Khởi tạo hai tuple
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Toán tử +: Dùng để nối hai tuple lại với nhau. Kết quả là một
tuple mới chứa tất cả các phần tử của hai tuple ban đầu.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo hai tuple, nối hai tuple lại
với nhau bằng toán tử + và in ra tuple kết quả trong Python.
034 - Viết chương trình để lấy độ dài
của một tuple
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 50)
Sử dụng hàm len() để lấy độ dài của tuple. Hàm này trả về
số lượng phần tử trong tuple.
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Hàm len(): Dùng để lấy độ dài của một đối tượng có thể đếm
được, chẳng hạn như danh sách, chuỗi hoặc tuple. Hàm này trả
về số lượng phần tử trong đối tượng đó.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, lấy độ dài của
tuple bằng hàm len() và in ra độ dài của tuple trong Python.
035 - Viết chương trình để chuyển đổi
một tuple thành danh sách
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 50)
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Danh sách (list): Một kiểu dữ liệu có thể thay đổi trong Python,
được sử dụng để lưu trữ một tập hợp các phần tử có thứ tự. Một
danh sách được tạo ra bằng cách đặt các phần tử bên trong dấu
ngoặc vuông [].
3. Hàm list(): Dùng để tạo một danh sách từ một iterable, chẳng
hạn như một tuple. Hàm này tạo ra một danh sách mới với các
phần tử từ iterable.
4. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, chuyển đổi
tuple thành danh sách bằng hàm list() và in ra danh sách đã
chuyển đổi trong Python.
036 - Viết chương trình để chuyển đổi
một danh sách thành tuple
1. Khởi tạo một danh sách với các phần tử mong muốn.
2. Sử dụng hàm tuple() để chuyển đổi danh sách thành tuple.
3. In ra tuple đã chuyển đổi.
Code Python
# Khởi tạo một danh sách
my_list = [10, 20, 30, 40, 50]
Tóm tắt
1. Danh sách (list): Một kiểu dữ liệu có thể thay đổi trong Python,
được sử dụng để lưu trữ một tập hợp các phần tử có thứ tự. Một
danh sách được tạo ra bằng cách đặt các phần tử bên trong dấu
ngoặc vuông [].
2. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
3. Hàm tuple(): Dùng để tạo một tuple từ một iterable, chẳng hạn
như một danh sách. Hàm này tạo ra một tuple mới với các phần
tử từ iterable.
4. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một danh sách, chuyển
đổi danh sách thành tuple bằng hàm tuple() và in ra tuple đã
chuyển đổi trong Python.
037 - Viết chương trình để kiểm tra
một phần tử có tồn tại trong tuple
không
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 50)
# In tuple đã tạo
print("Tuple đã tạo:", my_tuple)
Khởi tạo một tuple với các phần tử mong muốn bằng cách
đặt các phần tử bên trong dấu ngoặc tròn (). Trong ví dụ
này, tuple được khởi tạo với các phần tử (10, 20, 30, 40,
50).
2. In tuple đã tạo:
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Toán tử in: Dùng để kiểm tra xem một phần tử có tồn tại trong
một iterable (như tuple hoặc list) hay không. Nếu phần tử tồn tại,
kết quả trả về là True; ngược lại, kết quả là False.
3. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
4. Hàm int() và float(): Dùng để chuyển đổi chuỗi thành số
nguyên và số thực.
5. Xử lý ngoại lệ try-except: Dùng để bắt lỗi có thể xảy ra khi
chuyển đổi dữ liệu.
6. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, nhập phần tử
từ người dùng, kiểm tra xem phần tử có tồn tại trong tuple bằng toán
tử in, và in ra kết quả kiểm tra trong Python.
038 - Viết chương trình để đếm số lần
xuất hiện của một phần tử trong tuple
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 20, 40, 50, 20, 60)
# In tuple đã tạo
print("Tuple đã tạo:", my_tuple)
Khởi tạo một tuple với các phần tử mong muốn bằng cách
đặt các phần tử bên trong dấu ngoặc tròn (). Trong ví dụ
này, tuple được khởi tạo với các phần tử (10, 20, 30, 20,
40, 50, 20, 60).
2. In tuple đã tạo:
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Phương thức count(): Dùng để đếm số lần xuất hiện của một
phần tử trong một iterable (như tuple hoặc list). Kết quả trả về là
số lần xuất hiện của phần tử trong iterable.
3. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
4. Hàm int() và float(): Dùng để chuyển đổi chuỗi thành số
nguyên và số thực.
5. Xử lý ngoại lệ try-except: Dùng để bắt lỗi có thể xảy ra khi
chuyển đổi dữ liệu.
6. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, nhập phần tử
từ người dùng, đếm số lần xuất hiện của phần tử trong tuple bằng
phương thức count(), và in ra kết quả đếm được trong Python.
039 - Viết chương trình để tìm phần tử
lớn nhất trong tuple
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 50)
Tóm tắt
1. Tuple: Một kiểu dữ liệu bất biến trong Python, được sử dụng để
lưu trữ một tập hợp các phần tử có thứ tự. Một tuple được tạo ra
bằng cách đặt các phần tử bên trong dấu ngoặc tròn ().
2. Hàm max(): Dùng để tìm phần tử lớn nhất trong một iterable
(như tuple hoặc list). Hàm này trả về phần tử có giá trị lớn nhất
trong iterable.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một tuple, tìm phần tử lớn
nhất trong tuple bằng hàm max(), và in ra phần tử lớn nhất trong
Python.
040 - Viết chương trình để tìm phần tử
nhỏ nhất trong tuple
Code Python
# Khởi tạo một tuple
my_tuple = (10, 20, 30, 40, 5, 50, 3, 25)
# Duyệt qua từng phần tử trong tuple để tìm phần tử nhỏ nhất
for element in my_tuple:
if element < min_element:
min_element = element
# In ra phần tử nhỏ nhất
print("Phần tử nhỏ nhất trong tuple là:", min_element)
Khởi tạo một tuple với các phần tử mong muốn bằng cách
đặt các phần tử bên trong dấu ngoặc tròn (). Trong ví dụ
này, tuple được khởi tạo với các phần tử (10, 20, 30, 40,
5, 50, 3, 25).
Gán giá trị của phần tử đầu tiên của tuple (my_tuple[0]) cho
biến min_element.
Sử dụng vòng lặp for để duyệt qua từng phần tử trong tuple.
Trong mỗi lần lặp, biến element sẽ lần lượt nhận giá trị của
từng phần tử trong tuple.
Trong mỗi lần lặp, so sánh phần tử hiện tại (element) với
phần tử nhỏ nhất hiện tại (min_element). Nếu element nhỏ
hơn min_element, cập nhật min_element với giá trị của
element.
Chương trình trên minh họa cách khởi tạo một tuple, duyệt qua các
phần tử trong tuple bằng vòng lặp for, so sánh để tìm phần tử nhỏ
nhất, và in ra phần tử nhỏ nhất trong Python.
Chương 5 : Dictionary
41. Viết chương trình để tạo một dictionary.
42. Viết chương trình để truy cập giá trị của một key trong dictionary.
43. Viết chương trình để thêm một cặp key-value vào dictionary.
44. Viết chương trình để xóa một cặp key-value khỏi dictionary.
45. Viết chương trình để kiểm tra một key có tồn tại trong dictionary
không.
46. Viết chương trình để lấy tất cả các key trong dictionary.
47. Viết chương trình để lấy tất cả các giá trị trong dictionary.
48. Viết chương trình để lấy tất cả các cặp key-value trong
dictionary.
49. Viết chương trình để đếm số lượng cặp key-value trong
dictionary.
50. Viết chương trình để nối hai dictionary.
041 - Viết chương trình để tạo một
dictionary
1. Khởi tạo một dictionary rỗng hoặc với các cặp khóa-giá trị ban
đầu.
2. (Tùy chọn) Thêm hoặc cập nhật các cặp khóa-giá trị trong
dictionary.
3. In ra dictionary đã tạo.
Code Python
# Khởi tạo một dictionary rỗng
my_dict = {}
# In ra dictionary đã tạo
print("Dictionary đã tạo:", my_dict)
# Khởi tạo một dictionary với các cặp khóa-giá trị ban đầu
my_dict_2 = {
'name': 'Bob',
'age': 30,
'city': 'Los Angeles'
}
# In ra dictionary đã tạo
print("Dictionary đã tạo:", my_dict_2)
3. In dictionary đã tạo:
4. Khởi tạo dictionary với các cặp khóa-giá trị ban đầu:
Chương trình trên minh họa cách khởi tạo một dictionary rỗng, thêm
các cặp khóa-giá trị vào dictionary, và khởi tạo một dictionary với các
cặp khóa-giá trị ban đầu, rồi in ra dictionary đã tạo trong Python.
042 - Viết chương trình để truy cập giá
trị của một key trong dictionary
Code Python
# Khởi tạo một dictionary với các cặp khóa-giá trị
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
# In dictionary đã tạo
print("Dictionary đã tạo:", my_dict)
# Kiểm tra xem khóa có tồn tại trong dictionary hay không
if key in my_dict:
# Truy cập và in giá trị tương ứng với khóa
value = my_dict[key]
print(f"Giá trị của khóa '{key}' là: {value}")
else:
# Thông báo khóa không tồn tại trong dictionary
print(f"Khóa '{key}' không tồn tại trong dictionary.")
Khởi tạo một dictionary với các cặp khóa-giá trị bằng cách
sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp khóa-
giá trị {'name': 'Alice', 'age': 25, 'city': 'New York'}.
2. In dictionary đã tạo:
4. Kiểm tra xem khóa có tồn tại trong dictionary hay không:
Nếu khóa không tồn tại, in ra thông báo rằng khóa không tồn
tại trong dictionary.
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp khóa-giá trị. Mỗi khóa trong dictionary là duy nhất và
ánh xạ đến một giá trị cụ thể.
2. Truy cập giá trị của khóa: Sử dụng cú pháp dictionary[key]
để truy cập giá trị tương ứng với khóa trong dictionary.
3. Toán tử in: Dùng để kiểm tra xem một khóa có tồn tại trong một
dictionary hay không. Nếu khóa tồn tại, kết quả trả về là True;
ngược lại, kết quả là False.
4. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
5. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, nhập khóa
cần truy cập từ người dùng, kiểm tra xem khóa có tồn tại trong
dictionary hay không, truy cập giá trị tương ứng với khóa, và in ra
giá trị hoặc thông báo khóa không tồn tại trong Python.
043 - Viết chương trình để thêm một
cặp key-value vào dictionary
1. Khởi tạo một dictionary với các cặp key-value ban đầu (có thể là
rỗng).
2. Nhập khóa và giá trị từ người dùng.
3. Thêm cặp key-value vào dictionary.
4. In ra dictionary sau khi thêm cặp key-value.
Code Python
# Khởi tạo một dictionary với các cặp khóa-giá trị ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
# In dictionary đã tạo
print("Dictionary ban đầu:", my_dict)
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Thêm hoặc cập nhật cặp key-value: Sử dụng cú pháp
dictionary[key] = value để thêm hoặc cập nhật cặp key-value
trong dictionary.
3. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
4. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, nhập khóa
và giá trị từ người dùng, thêm cặp key-value vào dictionary, và in ra
dictionary sau khi thêm cặp key-value trong Python.
044 - Viết chương trình để xóa một
cặp key-value khỏi dictionary
1. Khởi tạo một dictionary với các cặp key-value ban đầu.
2. Nhập khóa cần xóa từ người dùng.
3. Kiểm tra xem khóa có tồn tại trong dictionary hay không.
4. Nếu khóa tồn tại, xóa cặp key-value tương ứng.
5. In ra dictionary sau khi xóa cặp key-value.
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
4. Kiểm tra xem khóa có tồn tại trong dictionary hay không:
Nếu khóa không tồn tại, in ra thông báo rằng khóa không tồn
tại trong dictionary.
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Phương thức pop(): Dùng để xóa cặp key-value khỏi dictionary
dựa trên khóa và trả về giá trị của khóa đó. Nếu khóa không tồn
tại, nó sẽ gây ra lỗi KeyError.
3. Toán tử in: Dùng để kiểm tra xem một khóa có tồn tại trong một
dictionary hay không. Nếu khóa tồn tại, kết quả trả về là True;
ngược lại, kết quả là False.
4. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
5. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, nhập khóa
cần xóa từ người dùng, kiểm tra xem khóa có tồn tại trong dictionary
hay không, xóa cặp key-value khỏi dictionary nếu khóa tồn tại, và in
ra dictionary sau khi xóa cặp key-value trong Python.
045 - Viết chương trình để kiểm tra
một key có tồn tại trong dictionary
không
1. Khởi tạo một dictionary với các cặp key-value ban đầu.
2. Nhập khóa cần kiểm tra từ người dùng.
3. Sử dụng toán tử in để kiểm tra xem khóa có tồn tại trong
dictionary hay không.
4. In ra thông báo kết quả kiểm tra.
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
# Kiểm tra xem khóa có tồn tại trong dictionary hay không
if key_to_check in my_dict:
print(f"Khóa '{key_to_check}' tồn tại trong dictionary.")
else:
print(f"Khóa '{key_to_check}' không tồn tại trong
dictionary.")
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
4. Kiểm tra xem khóa có tồn tại trong dictionary hay không:
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Toán tử in: Dùng để kiểm tra xem một khóa có tồn tại trong một
dictionary hay không. Nếu khóa tồn tại, kết quả trả về là True;
ngược lại, kết quả là False.
3. Hàm input(): Dùng để nhận dữ liệu từ người dùng dưới dạng
chuỗi.
4. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, nhập khóa
cần kiểm tra từ người dùng, sử dụng toán tử in để kiểm tra xem
khóa có tồn tại trong dictionary hay không, và in ra thông báo kết
quả kiểm tra trong Python.
046 - Viết chương trình để lấy tất cả
các key trong dictionary
1. Khởi tạo một dictionary với các cặp key-value ban đầu.
2. Sử dụng phương thức keys() để lấy danh sách các key từ
dictionary.
3. In ra danh sách các key.
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Phương thức keys(): Dùng để lấy danh sách các key trong
dictionary. Phương thức này trả về một view object (dict_keys)
chứa các key trong dictionary.
3. Hàm list(): Dùng để chuyển đổi một đối tượng iterable (như
dict_keys) thành một danh sách.
4. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, sử dụng
phương thức keys() để lấy danh sách các key từ dictionary, và in ra
danh sách các key trong Python.
047 - Viết chương trình để lấy tất cả
các giá trị trong dictionary
1. Khởi tạo một dictionary với các cặp key-value ban đầu.
2. Sử dụng phương thức values() để lấy danh sách các giá trị từ
dictionary.
3. Chuyển đổi danh sách các giá trị thành một mảng (array).
4. In ra mảng các giá trị.
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
# Chuyển đổi các giá trị thành một array (danh sách trong
Python)
values_array = list(values)
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
Sử dụng phương thức values() để lấy danh sách các giá trị
từ dictionary. Phương thức values() trả về một view object
(dict_values), là một view object hiển thị danh sách các giá
trị trong dictionary.
4. Chuyển đổi các giá trị thành một array (danh sách):
Chương trình trên minh họa cách khởi tạo một dictionary, sử dụng
phương thức values() để lấy danh sách các giá trị từ dictionary,
chuyển danh sách các giá trị thành một mảng (array), và in ra mảng
các giá trị trong Python.
048 - Viết chương trình để lấy tất cả
các cặp key-value trong dictionary
1. Khởi tạo một dictionary với các cặp key-value ban đầu.
2. Sử dụng phương thức items() để lấy danh sách các cặp key-
value từ dictionary.
3. In ra danh sách các cặp key-value.
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
Chương trình trên minh họa cách khởi tạo một dictionary, sử dụng
phương thức items() để lấy danh sách các cặp key-value từ
dictionary, chuyển danh sách các cặp key-value thành một danh
sách, và in ra danh sách các cặp key-value trong Python.
049 - Viết chương trình để đếm số
lượng cặp key-value trong dictionary
Code Python
# Khởi tạo một dictionary với các cặp key-value ban đầu
my_dict = {
'name': 'Alice',
'age': 25,
'city': 'New York'
}
Khởi tạo một dictionary với các cặp key-value ban đầu bằng
cách sử dụng cú pháp {key1: value1, key2: value2, ...}.
Trong ví dụ này, dictionary được khởi tạo với các cặp key-
value {'name': 'Alice', 'age': 25, 'city': 'New York'}.
Sử dụng vòng lặp for để duyệt qua các key trong dictionary
và đếm số lượng cặp key-value bằng cách tăng biến đếm
count3 lên 1 trong mỗi lần lặp.
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Hàm len(): Dùng để trả về số lượng các phần tử trong một đối
tượng iterable (như danh sách, tuple, dictionary).
3. Phương thức items(): Dùng để lấy danh sách các cặp key-
value trong dictionary dưới dạng các tuple.
4. Vòng lặp for: Dùng để lặp qua các phần tử của một đối tượng
iterable. Trong trường hợp này, nó được sử dụng để đếm số
lượng cặp key-value trong dictionary một cách thủ công.
5. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một dictionary, sử dụng
nhiều phương pháp khác nhau để đếm số lượng cặp key-value
trong dictionary, và in ra kết quả trong Python.
050 - Viết chương trình để nối hai
dictionary
1. Khởi tạo hai dictionary với các cặp key-value ban đầu.
2. Sử dụng phương thức update() để nối hai dictionary.
3. Sử dụng toán tử ** để nối hai dictionary.
Code Python
# Khởi tạo hai dictionary với các cặp key-value ban đầu
dict1 = {
'name': 'Alice',
'age': 25
}
dict2 = {
'city': 'New York',
'country': 'USA'
}
Khởi tạo hai dictionary dict1 và dict2 với các cặp key-value
ban đầu.
Tạo một bản sao của dict1 bằng cách sử dụng phương thức
copy().
Sử dụng phương thức update() để thêm các cặp key-value
từ dict2 vào bản sao của dict1. Phương thức update() sẽ
cập nhật dictionary gốc với các cặp key-value từ dictionary
khác.
In kết quả của dictionary sau khi nối bằng phương thức
update().
4. **Phương pháp 2: Sử dụng toán tử ****:
Tóm tắt
1. Dictionary: Một cấu trúc dữ liệu trong Python cho phép lưu trữ
các cặp key-value. Mỗi key trong dictionary là duy nhất và ánh
xạ đến một giá trị cụ thể.
2. Phương thức update(): Dùng để cập nhật dictionary bằng cách
thêm các cặp key-value từ một dictionary khác. Nếu key đã tồn
tại, giá trị sẽ được cập nhật.
3. **Toán tử ****: Dùng để unpack các cặp key-value từ nhiều
dictionary và nối chúng lại với nhau. Đây là cách dễ đọc và gọn
gàng để nối nhiều dictionary thành một.
4. Phương thức copy(): Dùng để tạo một bản sao của dictionary,
giúp tránh thay đổi dictionary gốc.
Chương trình trên minh họa cách khởi tạo hai dictionary, sử dụng
phương thức update() và toán tử ** để nối hai dictionary, và in ra
kết quả trong Python.
Chương 6 : Set
51. Viết chương trình để tạo một set.
52. Viết chương trình để thêm một phần tử vào set.
53. Viết chương trình để xóa một phần tử khỏi set.
54. Viết chương trình để kiểm tra một phần tử có tồn tại trong set
không.
55. Viết chương trình để lấy độ dài của set.
56. Viết chương trình để tìm hợp của hai set.
57. Viết chương trình để tìm giao của hai set.
58. Viết chương trình để tìm phần bù của hai set.
59. Viết chương trình để xóa tất cả các phần tử trong set.
60. Viết chương trình để chuyển đổi một danh sách thành set.
051 - Viết chương trình để tạo một set
Code Python
# Phương pháp 1: Sử dụng dấu ngoặc nhọn {} để tạo một set
set1 = {'apple', 'banana', 'cherry'}
print("Set tạo bằng dấu ngoặc nhọn {}:", set1)
Sử dụng dấu ngoặc nhọn {} để khởi tạo một set với các
phần tử 'apple', 'banana', và 'cherry'.
Sử dụng hàm print() để in set được tạo ra.
2. Tạo set bằng hàm set():
Sử dụng hàm dựng sẵn set() để khởi tạo một set với danh
sách các phần tử ['apple', 'banana', 'cherry'].
Hàm set() nhận vào một iterable (trong trường hợp này là
danh sách) và chuyển đổi nó thành một set.
Sử dụng hàm print() để in set được tạo ra.
Tóm tắt
1. Set: Một cấu trúc dữ liệu trong Python cho phép lưu trữ các
phần tử không trùng lặp. Set không duy trì thứ tự các phần tử và
hỗ trợ các phép toán tập hợp như hợp, giao, và hiệu.
2. Dấu ngoặc nhọn {}: Dùng để khởi tạo một set trực tiếp với các
phần tử được liệt kê trong ngoặc nhọn.
3. Hàm dựng sẵn set(): Dùng để khởi tạo một set từ một iterable
như danh sách, tuple, hoặc chuỗi.
Chương trình trên minh họa cách tạo một set bằng hai cách: sử
dụng dấu ngoặc nhọn {} và sử dụng hàm dựng sẵn set(), và in kết
quả của các set được tạo ra trong Python.
052 - Viết chương trình để thêm một
phần tử vào set
Code Python
# Khởi tạo một set ban đầu
my_set = {'apple', 'banana', 'cherry'}
print("Set ban đầu:", my_set)
Khởi tạo một set ban đầu với các phần tử 'apple',
'banana', và 'cherry'.
Chương trình trên minh họa cách khởi tạo một set, sử dụng phương
thức add() và update() để thêm phần tử vào set, và in ra kết quả
của set trong Python.
053 - Viết chương trình để xóa một
phần tử khỏi set
Code Python
# Khởi tạo một set ban đầu
my_set = {'apple', 'banana', 'cherry'}
print("Set ban đầu:", my_set)
Tóm tắt
1. set là một cấu trúc dữ liệu không có thứ tự và không chứa các
phần tử trùng lặp.
2. Bạn có thể xóa một phần tử khỏi set bằng cách sử dụng
phương thức remove() hoặc discard().
3. Phương thức remove() sẽ gây ra lỗi nếu phần tử không tồn tại
trong set, trong khi discard() không gây ra lỗi trong trường hợp
tương tự.
054 - Viết chương trình để kiểm tra
một phần tử có tồn tại trong set
không
Code Python
# Khởi tạo một set ban đầu
my_set = {'apple', 'banana', 'cherry'}
print("Set ban đầu:", my_set)
element = 'orange'
if element in my_set:
print(f"Phần tử '{element}' tồn tại trong set.")
else:
print(f"Phần tử '{element}' không tồn tại trong set.")
Khởi tạo một set ban đầu với các phần tử 'apple',
'banana', và 'cherry'.
Kiểm tra sự tồn tại của phần tử 'banana' trong set bằng toán
tử in. Nếu phần tử tồn tại, in ra thông báo phần tử tồn tại.
Ngược lại, in ra thông báo phần tử không tồn tại.
Lặp lại quá trình kiểm tra với phần tử 'orange'.
Tóm tắt
1. Set: Một cấu trúc dữ liệu trong Python cho phép lưu trữ các
phần tử không trùng lặp. Set không duy trì thứ tự các phần tử và
hỗ trợ các phép toán tập hợp như hợp, giao, và hiệu.
2. Toán tử in: Dùng để kiểm tra xem một phần tử có tồn tại trong
set hay không. Trả về True nếu phần tử tồn tại, ngược lại trả về
False.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách khởi tạo một set, sử dụng toán tử
in để kiểm tra sự tồn tại của phần tử trong set, và in ra kết quả kiểm
tra trong Python.
055 - Viết chương trình để lấy độ dài
của set
Code Python
# Khởi tạo một set ban đầu
my_set = {'apple', 'banana', 'cherry'}
print("Set ban đầu:", my_set)
Tóm tắt
Trong Python, set là một cấu trúc dữ liệu không có thứ tự và
không chứa các phần tử trùng lặp.
Bạn có thể lấy độ dài của set bằng cách sử dụng hàm len().
Hàm len() trả về số lượng phần tử trong set.
Chương trình Python này khởi tạo một set và lấy độ dài của set
bằng cách sử dụng hàm len().
056 - Viết chương trình để tìm hợp
của hai set
Code Python
# Khởi tạo hai set ban đầu
set1 = {'apple', 'banana', 'cherry'}
set2 = {'banana', 'cherry', 'durian'}
print("Set 1:", set1)
print("Set 2:", set2)
Bổ sung
Cách giải khác:
Tóm tắt
Trong Python, set là một cấu trúc dữ liệu không có thứ tự và
không chứa các phần tử trùng lặp.
Bạn có thể tìm hợp của hai set bằng cách sử dụng phép toán |
hoặc hàm union().
Hợp của hai set là một set mới chứa tất cả các phần tử từ cả
hai set ban đầu, không có phần tử trùng lặp.
Chương trình Python này khởi tạo hai set và tìm hợp của hai set
bằng cách sử dụng phép toán |.
057 - Viết chương trình để tìm giao
của hai set
Code Python
# Khởi tạo hai set ban đầu
set1 = {'apple', 'banana', 'cherry'}
set2 = {'banana', 'cherry', 'durian'}
print("Set 1:", set1)
print("Set 2:", set2)
Bổ sung
Cách giải khác:
Tóm tắt
Trong Python, set là một cấu trúc dữ liệu không có thứ tự và
không chứa các phần tử trùng lặp.
Bạn có thể tìm giao của hai set bằng cách sử dụng phép toán &
hoặc hàm intersection().
Giao của hai set là một set mới chứa các phần tử xuất hiện
trong cả hai set ban đầu.
Chương trình Python này tìm giao của hai set đã khởi tạo bằng
cách sử dụng phép toán &.
058 - Viết chương trình để tìm phần
bù của hai set
Code Python
# Khởi tạo hai set ban đầu
set1 = {'apple', 'banana', 'cherry'}
set2 = {'banana', 'cherry', 'durian'}
print("Set 1:", set1)
print("Set 2:", set2)
Bổ sung
Cách giải khác:
Tóm tắt
Trong Python, set là một cấu trúc dữ liệu không có thứ tự và
không chứa các phần tử trùng lặp.
Bạn có thể tìm phần bù của hai set bằng cách sử dụng phép
toán - hoặc hàm difference().
Phần bù của hai set A và B là một set mới chứa các phần tử chỉ
xuất hiện trong set A nhưng không xuất hiện trong set B.
Chương trình Python này tìm phần bù của hai set đã khởi tạo bằng
cách sử dụng phép toán -.
059 - Viết chương trình để xóa tất cả
các phần tử trong set
Đầu ra: set sau khi đã xóa tất cả các phần tử.
Code Python
# Khởi tạo set
set1 = {1, 2, 3, 4, 5}
print("Set ban đầu:", set1)
Bổ sung
Cách giải khác:
Lưu ý: Trong trường hợp này, chúng ta cần chuyển set thành list
trước khi thực hiện vòng lặp for để tránh lỗi RuntimeError: Set
changed size during iteration - lỗi này xảy ra khi kích thước của
set thay đổi trong quá trình lặp.
Tóm tắt
Trong Python, set là một cấu trúc dữ liệu không có thứ tự và
không chứa các phần tử trùng lặp.
Bạn có thể xóa tất cả các phần tử trong một set bằng cách sử
dụng hàm clear() hoặc vòng lặp for kết hợp với phương thức
remove().
Chương trình Python này xóa tất cả các phần tử trong một set đã
khởi tạo bằng cách sử dụng hàm clear() hoặc vòng lặp for kết hợp
với phương thức remove().
060 - Viết chương trình để chuyển đổi
một danh sách thành set
Đầu ra: Một tập hợp (set) sau khi chuyển đổi từ danh sách.
Code Python
# Khởi tạo danh sách
list1 = [1, 2, 3, 4, 5]
print("Danh sách ban đầu:", list1)
Bổ sung
Cách giải khác:
Tạo một set rỗng và sử dụng vòng lặp for để thêm từng phần tử
của danh sách vào set.
# Khởi tạo set rỗng
set1 = set()
# Duyệt qua từng phần tử của danh sách và thêm vào set
for item in list1:
set1.add(item)
Lưu ý: Trong trường hợp này, chúng ta sử dụng phương thức add()
để thêm từng phần tử của danh sách vào set. Phương thức add()
thêm một phần tử vào set. Nếu phần tử đã tồn tại trong set, nó
không thêm phần tử đó.
Tóm tắt
Trong Python, bạn có thể chuyển đổi một danh sách thành một
tập hợp bằng cách sử dụng hàm set() hoặc tạo một set rỗng và
sử dụng vòng lặp for để thêm từng phần tử của danh sách vào
set.
Hàm set() tạo một tập hợp mới từ các phần tử trong danh sách.
Nếu danh sách chứa các phần tử trùng lặp, chúng sẽ bị loại bỏ
khi chuyển đổi thành tập hợp vì tập hợp không chứa các phần tử
trùng lặp.
Chương trình Python này chuyển đổi một danh sách đã khởi tạo
thành một tập hợp bằng cách sử dụng hàm set() hoặc tạo một set
rỗng và sử dụng vòng lặp for để thêm từng phần tử của danh sách
vào set.
Chương 7 : Chuỗi
61. Viết chương trình để tạo một chuỗi.
62. Viết chương trình để nối hai chuỗi.
63. Viết chương trình để lấy độ dài của chuỗi.
64. Viết chương trình để chuyển đổi chuỗi thành chữ hoa.
65. Viết chương trình để chuyển đổi chuỗi thành chữ thường.
66. Viết chương trình để đếm số lần xuất hiện của một ký tự trong
chuỗi.
67. Viết chương trình để kiểm tra một chuỗi có chứa một từ không.
68. Viết chương trình để thay thế một từ trong chuỗi bằng từ khác.
69. Viết chương trình để tách chuỗi thành danh sách các từ.
70. Viết chương trình để nối các từ thành một chuỗi.
061 - Viết chương trình để tạo một
chuỗi
Code Python
# Tạo một chuỗi
str1 = "Hello, World!"
print(str1)
1. Sử dụng dấu ngoặc kép hoặc ngoặc đơn: Đây là cách đơn
giản nhất để tạo một chuỗi.
str1 = "Hello, World!"
str2 = 'Hello, World!'
2. Sử dụng ba dấu ngoặc kép hoặc ngoặc đơn: Điều này cho
phép bạn tạo chuỗi nhiều dòng.
str3 = """Hello,
World!"""
str4 = '''Hello,
World!'''
3. Sử dụng hàm str(): Hàm này chuyển đổi một đối tượng thành
chuỗi.
num = 123
str5 = str(num) # '123'
4. Nối chuỗi: Bạn có thể nối nhiều chuỗi lại với nhau bằng cách sử
dụng toán tử +.
str6 = "Hello, " + "World!"
5. Sử dụng f-string: Trong Python 3.6 trở lên, bạn có thể sử dụng
f-string để tạo chuỗi.
name = "World"
str7 = f"Hello, {name}!"
Tóm tắt
Trong Python, bạn có thể tạo một chuỗi bằng cách sử dụng dấu
ngoặc kép "" hoặc dấu ngoặc đơn ''.
Hàm print() được sử dụng để in chuỗi ra màn hình.
Chương trình Python này tạo một chuỗi mới và in chuỗi đó ra màn
hình.
062 - Viết chương trình để nối hai
chuỗi
Code Python
# Tạo hai chuỗi
str1 = "Hello, "
str2 = "World!"
Bổ sung
Cách giải khác:
Chương trình Python này tạo hai chuỗi mới và nối chúng lại với
nhau bằng cách sử dụng toán tử +, phương thức join(), f-string
hoặc phương thức format().
063 - Viết chương trình để lấy độ dài
của chuỗi
Code Python
# Tạo một chuỗi
str1 = "Hello, World!"
Bổ sung
Cách giải khác:
Tóm tắt
Trong Python, bạn có thể lấy độ dài của một chuỗi bằng cách sử
dụng hàm len() hoặc sử dụng vòng lặp for để đếm số lượng ký
tự trong chuỗi.
Hàm print() được sử dụng để in độ dài của chuỗi ra màn hình.
Chương trình Python này tạo một chuỗi mới và lấy độ dài của chuỗi
bằng cách sử dụng hàm len() hoặc sử dụng vòng lặp for để đếm
số lượng ký tự trong chuỗi.
064 - Viết chương trình để chuyển đổi
chuỗi thành chữ hoa
Code Python
# Nhập vào một chuỗi
input_str = "hello world"
print("Chuỗi ban đầu:", input_str)
Tóm tắt
1. Chuỗi: Một cấu trúc dữ liệu trong Python cho phép lưu trữ và xử
lý văn bản. Chuỗi trong Python là bất biến, nghĩa là không thể
thay đổi sau khi đã được khởi tạo.
2. Phương thức upper(): Dùng để chuyển đổi tất cả các ký tự
trong chuỗi thành chữ hoa.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách chuyển đổi một chuỗi thành chữ
hoa bằng cách sử dụng phương thức upper() và in ra kết quả trong
Python.
065 - Viết chương trình để chuyển đổi
chuỗi thành chữ thường
Đầu ra: Chuỗi sau khi chuyển đổi thành chữ thường.
Code Python
# Tạo một chuỗi
str1 = "Hello, World!"
Bổ sung
Cách giải khác:
Tóm tắt
Trong Python, bạn có thể chuyển đổi một chuỗi thành chữ
thường bằng cách sử dụng phương thức lower() của chuỗi
hoặc sử dụng vòng lặp for và hàm ord() để chuyển đổi từng ký
tự trong chuỗi thành chữ thường.
Hàm print() được sử dụng để in chuỗi sau khi chuyển đổi ra
màn hình.
Chương trình Python này tạo một chuỗi mới và chuyển đổi chuỗi đó
thành chữ thường bằng cách sử dụng phương thức lower() của
chuỗi hoặc sử dụng vòng lặp for và hàm ord() để chuyển đổi từng
ký tự trong chuỗi thành chữ thường.
066 - Viết chương trình để đếm số lần
xuất hiện của một ký tự trong chuỗi
Code Python
# Nhập vào một chuỗi
input_str = "hello world"
print("Chuỗi ban đầu:", input_str)
Khởi tạo một chuỗi ban đầu input_str với giá trị “hello
world”.
4. In ký tự cần đếm:
Tóm tắt
1. Chuỗi: Một cấu trúc dữ liệu trong Python cho phép lưu trữ và xử
lý văn bản. Chuỗi trong Python là bất biến, nghĩa là không thể
thay đổi sau khi đã được khởi tạo.
2. Phương thức count(): Dùng để đếm số lần xuất hiện của một
ký tự hoặc một chuỗi con trong chuỗi gốc.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách đếm số lần xuất hiện của một ký
tự trong một chuỗi bằng cách sử dụng phương thức count() và in ra
kết quả trong Python.
067 - Viết chương trình để kiểm tra
một chuỗi có chứa một từ không
Đầu ra: True nếu chuỗi chứa từ cần kiểm tra, False nếu ngược lại.
Code Python
# Tạo một chuỗi và một từ cần kiểm tra
str1 = "Hello, World!"
word = "World"
Bổ sung
Cách giải khác:
Sử dụng phương thức find() của chuỗi để kiểm tra xem từ cần
kiểm tra có nằm trong chuỗi không.
# Tạo một chuỗi và một từ cần kiểm tra
str1 = "Hello, World!"
word = "World"
Tóm tắt
Trong Python, bạn có thể kiểm tra xem một chuỗi có chứa một
từ cụ thể không bằng cách sử dụng toán tử in hoặc phương
thức find() của chuỗi.
Hàm print() được sử dụng để in kết quả ra màn hình.
Chương trình Python này tạo một chuỗi mới và một từ cần kiểm tra,
sau đó kiểm tra xem từ cần kiểm tra có nằm trong chuỗi không bằng
cách sử dụng toán tử in hoặc phương thức find() của chuỗi.
068 - Viết chương trình để thay thế
một từ trong chuỗi bằng từ khác
Code Python
# Nhập vào một chuỗi
input_str = "Hello world, welcome to the world of Python."
print("Chuỗi ban đầu:", input_str)
Khởi tạo một chuỗi ban đầu input_str với giá trị “Hello
world, welcome to the world of Python.”
6. In từ thay thế:
Tóm tắt
1. Chuỗi: Một cấu trúc dữ liệu trong Python cho phép lưu trữ và xử
lý văn bản. Chuỗi trong Python là bất biến, nghĩa là không thể
thay đổi sau khi đã được khởi tạo.
2. Phương thức replace(): Dùng để thay thế tất cả các lần xuất
hiện của một chuỗi con (có thể là một từ) trong chuỗi gốc bằng
một chuỗi con khác.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách thay thế một từ trong chuỗi bằng
một từ khác bằng cách sử dụng phương thức replace() và in ra kết
quả trong Python.
069 - Viết chương trình để tách chuỗi
thành danh sách các từ
Code Python
# Nhập vào một chuỗi
input_str = "Hello world, welcome to the world of Python."
print("Chuỗi ban đầu:", input_str)
words_list_comma = input_str_comma.split(',')
print("Danh sách các từ (tách bằng dấu phẩy):",
words_list_comma)
words_list_dot = input_str_dot.split('.')
print("Danh sách các từ (tách bằng dấu chấm):",
words_list_dot)
Khởi tạo một chuỗi ban đầu input_str với giá trị “Hello
world, welcome to the world of Python.”
Tóm tắt
1. Chuỗi: Một cấu trúc dữ liệu trong Python cho phép lưu trữ và xử
lý văn bản. Chuỗi trong Python là bất biến, nghĩa là không thể
thay đổi sau khi đã được khởi tạo.
2. Phương thức split(): Dùng để tách chuỗi thành danh sách
các từ. Mặc định tách theo khoảng trắng, nhưng có thể chỉ định
ký tự phân cách khác.
3. Hàm print(): Dùng để in dữ liệu ra màn hình.
Chương trình trên minh họa cách tách một chuỗi thành danh sách
các từ bằng cách sử dụng phương thức split() và in ra kết quả
trong Python. Ngoài ra, nó còn minh họa cách tách chuỗi bằng các
dấu phân cách khác như dấu phẩy và dấu chấm.
070 - Viết chương trình để nối các từ
thành một chuỗi
Code Python
# Nhập vào một danh sách các từ
words_list = ["Hello", "world", "welcome", "to", "Python"]
print("Danh sách các từ:", words_list)
Chương trình trên minh họa cách nối các từ trong một danh sách
thành một chuỗi bằng cách sử dụng phương thức join() và in ra kết
quả trong Python. Ngoài ra, nó còn minh họa cách sử dụng các ký
tự phân cách khác nhau như khoảng trắng, dấu phẩy, và dấu chấm
phẩy để nối các từ.
Chương 8 : File I/O
71. Viết chương trình để đọc nội dung của một file văn bản.
72. Viết chương trình để ghi nội dung vào một file văn bản.
73. Viết chương trình để đếm số dòng trong một file văn bản.
74. Viết chương trình để đếm số từ trong một file văn bản.
75. Viết chương trình để đếm số ký tự trong một file văn bản.
76. Viết chương trình để kiểm tra một file có tồn tại không.
77. Viết chương trình để xóa một file văn bản.
78. Viết chương trình để đọc file theo từng dòng.
79. Viết chương trình để ghi thêm nội dung vào cuối file.
80. Viết chương trình để sao chép nội dung của một file sang file
khác.
071 - Viết chương trình để đọc nội
dung của một file văn bản
1. Mở file văn bản bằng hàm open() với chế độ đọc (‘r’).
2. Sử dụng phương thức read() để đọc toàn bộ nội dung của file.
3. In nội dung vừa đọc được.
4. Đóng file để giải phóng tài nguyên.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
try:
# Mở file văn bản với chế độ đọc
with open(file_path, 'r') as file:
# Đọc toàn bộ nội dung của file
content = file.read()
# In nội dung của file
print("Nội dung của file:")
print(content)
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần đọc, ví dụ: ‘example.txt’.
Sử dụng phương thức read() của đối tượng file để đọc toàn
bộ nội dung của file và lưu vào biến content.
5. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc
‘r’).
2. Phương thức read(): Dùng để đọc toàn bộ nội dung của file.
3. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc.
4. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách đọc nội dung của một file văn bản
bằng cách sử dụng hàm open() và phương thức read() trong
Python, đồng thời xử lý các ngoại lệ có thể xảy ra.
072 - Viết chương trình để ghi nội
dung vào một file văn bản
1. Mở file văn bản bằng hàm open() với chế độ ghi (‘w’).
2. Sử dụng phương thức write() để ghi nội dung vào file.
3. Đóng file để lưu thay đổi và giải phóng tài nguyên.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example_output.txt'
try:
# Mở file văn bản với chế độ ghi
with open(file_path, 'w') as file:
# Ghi nội dung vào file
file.write(content_to_write)
# In thông báo ghi thành công
print(f"Nội dung đã được ghi vào file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần ghi, ví dụ: ‘example_output.txt’.
Khởi tạo biến content_to_write chứa nội dung cần ghi vào
file, ở đây là “Hello, world!to the world of Python
programming.”
Sử dụng phương thức write() của đối tượng file để ghi nội
dung content_to_write vào file.
6. Xử lý ngoại lệ:
Chương trình trên minh họa cách ghi nội dung vào một file văn bản
bằng cách sử dụng hàm open() và phương thức write() trong
Python, đồng thời xử lý các ngoại lệ có thể xảy ra.
073 - Viết chương trình để đếm số
dòng trong một file văn bản
1. Mở file văn bản bằng hàm open() với chế độ đọc (‘r’).
2. Đọc từng dòng của file và đếm số lượng dòng.
3. In số lượng dòng.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
try:
# Mở file văn bản với chế độ đọc
with open(file_path, 'r') as file:
# Đếm số lượng dòng trong file
line_count = sum(1 for line in file)
# In số lượng dòng
print(f"Số lượng dòng trong file: {line_count}")
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Giải thích code
1. Đường dẫn đến file văn bản:
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần đếm số dòng, ví dụ: ‘example.txt’.
4. In số lượng dòng:
5. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc
‘r’).
2. Phương thức readlines(): Dùng để đọc toàn bộ nội dung của
file vào một danh sách các dòng.
3. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc.
4. Biểu thức generator và sum(): Dùng để đếm số lượng dòng
trong file.
5. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách đếm số dòng trong một file văn
bản bằng cách sử dụng biểu thức generator và phương thức
readlines() trong Python, đồng thời xử lý các ngoại lệ có thể xảy
ra.
074 - Viết chương trình để đếm số từ
trong một file văn bản
1. Mở file văn bản bằng hàm open() với chế độ đọc (‘r’).
2. Đọc từng dòng của file.
3. Tách từng dòng thành các từ.
4. Đếm tổng số từ.
5. In số lượng từ.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
try:
# Mở file văn bản với chế độ đọc
with open(file_path, 'r') as file:
# Khởi tạo biến đếm số từ
word_count = 0
# Đọc từng dòng của file
for line in file:
# Tách dòng thành các từ và đếm số từ
words = line.split()
word_count += len(words)
# In số lượng từ
print(f"Số lượng từ trong file: {word_count}")
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần đếm số từ, ví dụ: ‘example.txt’.
Sử dụng vòng lặp for để duyệt qua từng dòng trong file.
7. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc
‘r’).
2. Phương thức split(): Dùng để tách một chuỗi thành các từ
dựa trên khoảng trắng hoặc một ký tự phân cách khác.
3. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc.
4. Vòng lặp for: Dùng để duyệt qua từng dòng trong file.
5. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách đếm số từ trong một file văn bản
bằng cách sử dụng phương thức split() để tách các từ và đếm
tổng số từ trong file. Đồng thời, chương trình xử lý các ngoại lệ có
thể xảy ra khi làm việc với file.
075 - Viết chương trình để đếm số ký
tự trong một file văn bản
1. Mở file văn bản bằng hàm open() với chế độ đọc (‘r’).
2. Đọc toàn bộ nội dung của file.
3. Lọc bỏ các ký tự “khoảng trắng” và “xuống dòng”.
4. Đếm tổng số ký tự còn lại.
5. In số lượng ký tự.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
try:
# Mở file văn bản với chế độ đọc
with open(file_path, 'r') as file:
# Đọc toàn bộ nội dung của file
content = file.read()
# Lọc bỏ các ký tự khoảng trắng và xuống dòng
filtered_content = ''.join(c for c in content if c
not in (' ', '\n', '\t'))
# Đếm số lượng ký tự trong nội dung đã lọc
char_count = len(filtered_content)
# In số lượng ký tự
print(f"Số lượng ký tự trong file (bỏ qua khoảng
trắng và xuống dòng): {char_count}")
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần đếm số ký tự, ví dụ: ‘example.txt’.
Sử dụng phương thức read() của đối tượng file để đọc toàn
bộ nội dung của file và lưu vào biến content.
6. In số lượng ký tự:
7. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc
‘r’).
2. Phương thức read(): Dùng để đọc toàn bộ nội dung của file.
3. Biểu thức tạo chuỗi mới: Dùng để lọc bỏ các ký tự không cần
thiết (khoảng trắng, xuống dòng, tab) và tạo một chuỗi mới chứa
các ký tự cần đếm.
4. Hàm len(): Dùng để đếm số lượng ký tự trong một chuỗi.
5. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc.
6. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách đếm số ký tự trong một file văn
bản bằng cách sử dụng phương thức read() để đọc toàn bộ nội
dung của file, sau đó lọc bỏ các ký tự “khoảng trắng” và “xuống
dòng” và đếm số lượng ký tự còn lại. Đồng thời, chương trình xử lý
các ngoại lệ có thể xảy ra khi làm việc với file.
076 - Viết chương trình để kiểm tra
một file có tồn tại không
Code Python
import os
Khởi tạo biến file_path chứa đường dẫn đến file cần kiểm
tra, ví dụ: ‘example.txt’.
4. In ra thông báo:
Tóm tắt
1. Module os: Cung cấp các hàm để tương tác với hệ thống tập tin
và thư mục.
2. Hàm os.path.isfile(): Dùng để kiểm tra xem một đường dẫn
có phải là file và file đó có tồn tại hay không.
3. Câu lệnh if-else: Dùng để kiểm tra điều kiện và thực hiện các
hành động tương ứng.
Chương trình trên minh họa cách kiểm tra sự tồn tại của một file
bằng cách sử dụng hàm os.path.isfile() và in ra thông báo phù
hợp dựa trên kết quả kiểm tra.
077 - Viết chương trình để xóa một file
văn bản
Code Python
import os
try:
# Kiểm tra sự tồn tại của file
if os.path.isfile(file_path):
# Xóa file
os.remove(file_path)
print(f"File '{file_path}' đã được xóa.")
else:
print(f"File '{file_path}' không tồn tại.")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Giải thích code
1. Import module os:
Khởi tạo biến file_path chứa đường dẫn đến file cần xóa, ví
dụ: ‘example.txt’.
6. Xử lý ngoại lệ:
Chương trình trên minh họa cách xóa một file văn bản bằng cách sử
dụng hàm os.remove() sau khi kiểm tra sự tồn tại của file với hàm
os.path.isfile(). Chương trình cũng xử lý các ngoại lệ có thể xảy
ra trong quá trình xóa file.
078 - Viết chương trình để đọc file
theo từng dòng
1. Mở file văn bản bằng hàm open() với chế độ đọc (‘r’).
2. Sử dụng vòng lặp for để lặp qua từng dòng trong file object.
3. In từng dòng ra màn hình.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
try:
# Mở file văn bản với chế độ đọc
with open(file_path, 'r') as file:
# Lặp qua từng dòng trong file
for line in file:
# In từng dòng ra màn hình
print(line, end='')
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Giải thích code
1. Đường dẫn đến file văn bản:
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần đọc, ví dụ: ‘example.txt’.
Sử dụng vòng lặp for line in file: để lặp qua từng dòng
trong file object. Mỗi lần lặp, một dòng mới từ file được đọc
vào biến line.
5. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc
‘r’).
2. Vòng lặp for: Dùng để lặp qua từng dòng trong file object.
3. Hàm print(): Dùng để in từng dòng ra màn hình. Tham số
end='' được sử dụng để tránh thêm dòng mới không cần thiết.
4. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc.
5. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách đọc một file văn bản theo từng
dòng bằng cách sử dụng vòng lặp for để lặp qua từng dòng trong
file object và in từng dòng ra màn hình. Đồng thời, chương trình xử
lý các ngoại lệ có thể xảy ra khi làm việc với file.
079 - Viết chương trình để ghi thêm
nội dung vào cuối file
1. Mở file văn bản bằng hàm open() với chế độ ghi thêm (‘a’).
2. Sử dụng phương thức write() để ghi nội dung mới vào cuối file.
3. Đóng file sau khi ghi xong.
Code Python
# Đường dẫn đến file văn bản
file_path = 'example.txt'
# Nội dung cần ghi thêm
content_to_add = "\nThis is the new content added to the
file."
try:
# Mở file văn bản với chế độ ghi thêm
with open(file_path, 'a') as file:
# Ghi nội dung mới vào cuối file
file.write(content_to_add)
print(f"Nội dung đã được ghi thêm vào file
'{file_path}'.")
except FileNotFoundError:
print(f"Không tìm thấy file: {file_path}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Khởi tạo biến file_path chứa đường dẫn đến file văn bản
cần ghi thêm, ví dụ: ‘example.txt’.
Khởi tạo biến content_to_add chứa nội dung cần ghi thêm
vào cuối file. Ở đây, nội dung được ghi thêm là “is the new
content added to the file.” (kèm theo ký tự xuống dòng ở đầu
để tách nội dung mới khỏi nội dung cũ).
6. Xử lý ngoại lệ:
Sử dụng câu lệnh try-except để bắt và xử lý các ngoại lệ
như FileNotFoundError nếu file không tồn tại và các ngoại lệ
khác.
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ ghi
thêm ‘a’).
2. Phương thức write(): Dùng để ghi nội dung vào file.
3. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác ghi.
4. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách ghi thêm nội dung vào cuối file
bằng cách sử dụng hàm open() với chế độ ghi thêm (‘a’) và phương
thức write() để ghi nội dung mới vào file. Đồng thời, chương trình
xử lý các ngoại lệ có thể xảy ra khi làm việc với file.
080 - Viết chương trình để sao chép
nội dung của một file sang file khác
Code Python
# Đường dẫn đến file nguồn và file đích
source_file_path = 'source.txt'
destination_file_path = 'destination.txt'
try:
# Mở file nguồn với chế độ đọc
with open(source_file_path, 'r') as source_file:
# Đọc toàn bộ nội dung của file nguồn
content = source_file.read()
Sử dụng phương thức read() của đối tượng file để đọc toàn
bộ nội dung từ file nguồn vào biến content.
7. Xử lý ngoại lệ:
Tóm tắt
1. Hàm open(): Dùng để mở file. Tham số đầu tiên là đường dẫn
đến file, tham số thứ hai là chế độ mở file (ở đây là chế độ đọc ‘r’
cho file nguồn và chế độ ghi ‘w’ cho file đích).
2. Phương thức read(): Dùng để đọc toàn bộ nội dung từ file.
3. Phương thức write(): Dùng để ghi nội dung vào file.
4. Câu lệnh with: Dùng để đảm bảo rằng file được đóng tự động
sau khi hoàn thành thao tác đọc hoặc ghi.
5. Xử lý ngoại lệ: Sử dụng câu lệnh try-except để bắt và xử lý
các lỗi có thể xảy ra khi làm việc với file.
Chương trình trên minh họa cách sao chép nội dung từ một file
nguồn sang một file đích bằng cách sử dụng các hàm open(),
read(), và write(). Đồng thời, chương trình xử lý các ngoại lệ có
thể xảy ra khi làm việc với file.
Chương 9 : Lập trình hướng
đối tượng
81. Viết chương trình để tạo một lớp học sinh.
82. Viết chương trình để thêm thuộc tính cho lớp học sinh.
83. Viết chương trình để thêm phương thức cho lớp học sinh.
84. Viết chương trình để tạo đối tượng từ lớp học sinh.
85. Viết chương trình để truy cập thuộc tính của đối tượng.
86. Viết chương trình để gọi phương thức của đối tượng.
87. Viết chương trình để kế thừa từ một lớp cơ bản.
88. Viết chương trình để ghi đè phương thức của lớp cha.
89. Viết chương trình để sử dụng trừu tượng trong Python.
90. Viết chương trình để sử dụng đa hình trong Python.
081 - Viết chương trình để tạo một lớp
học sinh
Code Python
class HocSinh:
def __init__(self, ten, tuoi, diem_tb):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten
self.tuoi = tuoi
self.diem_tb = diem_tb
def hien_thi_thong_tin(self):
"""Phương thức để hiển thị thông tin của học sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self.tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
def xep_loai(self):
"""Phương thức để xếp loại học sinh dựa trên điểm
trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
Phương thức __init__ được gọi khi một đối tượng của lớp
được khởi tạo.
Các tham số ten, tuoi, diem_tb được truyền vào để khởi tạo
các thuộc tính self.ten, self.tuoi, self.diem_tb.
Phương thức này xếp loại học sinh dựa trên điểm trung bình
diem_tb.
Nếu diem_tb >= 8.5, học sinh được xếp loại “Giỏi”.
Nếu diem_tb >= 6.5, học sinh được xếp loại “Khá”.
Nếu diem_tb >= 5.0, học sinh được xếp loại “Trung bình”.
Nếu diem_tb < 5.0, học sinh được xếp loại “Yếu”.
Tạo một đối tượng hs của lớp HocSinh với tên “Nguyễn Văn
A”, tuổi 16, và điểm trung bình 8.2.
Tóm tắt
1. Định nghĩa lớp: Sử dụng từ khóa class để định nghĩa một lớp
trong Python.
2. Phương thức khởi tạo __init__: Thiết lập các thuộc tính của
đối tượng khi khởi tạo.
3. Phương thức của lớp: Định nghĩa các phương thức để thao
tác với đối tượng của lớp.
4. Tạo đối tượng: Khởi tạo đối tượng của lớp và gọi các phương
thức của nó.
Chương trình trên minh họa cách định nghĩa một lớp HocSinh với
các thuộc tính và phương thức cơ bản, tạo đối tượng của lớp và
thao tác với đối tượng đó.
082 - Viết chương trình để thêm thuộc
tính cho lớp học sinh
Code Python
class HocSinh:
def __init__(self, ten, tuoi, diem_tb, dia_chi):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten
self.tuoi = tuoi
self.diem_tb = diem_tb
self.dia_chi = dia_chi # Thêm thuộc tính dia_chi
def hien_thi_thong_tin(self):
"""Phương thức để hiển thị thông tin của học sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self.tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
print(f"Địa chỉ: {self.dia_chi}") # Hiển thị thuộc
tính dia_chi
def xep_loai(self):
"""Phương thức để xếp loại học sinh dựa trên điểm
trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
# Tạo đối tượng học sinh với thuộc tính địa chỉ
hs = HocSinh("Nguyễn Văn A", 16, 8.2, "123 Đường A, Thành phố
B")
Phương thức __init__ được gọi khi một đối tượng của lớp
được khởi tạo.
Các tham số ten, tuoi, diem_tb, dia_chi được truyền vào để
khởi tạo các thuộc tính self.ten, self.tuoi, self.diem_tb,
self.dia_chi.
Phương thức này hiển thị thông tin của học sinh bằng cách
in ra các thuộc tính ten, tuoi, diem_tb, dia_chi.
Phương thức này xếp loại học sinh dựa trên điểm trung bình
diem_tb.
Nếu diem_tb >= 8.5, học sinh được xếp loại “Giỏi”.
Nếu diem_tb >= 6.5, học sinh được xếp loại “Khá”.
Nếu diem_tb >= 5.0, học sinh được xếp loại “Trung bình”.
Nếu diem_tb < 5.0, học sinh được xếp loại “Yếu”.
5. Tạo đối tượng học sinh với thuộc tính địa chỉ:
Tạo một đối tượng hs của lớp HocSinh với tên “Nguyễn Văn
A”, tuổi 16, điểm trung bình 8.2, và địa chỉ “123 Đường A,
Thành phố B”.
Tóm tắt
1. Định nghĩa lớp: Sử dụng từ khóa class để định nghĩa một lớp
trong Python.
2. Phương thức khởi tạo __init__: Thiết lập các thuộc tính của
đối tượng khi khởi tạo.
3. Phương thức của lớp: Định nghĩa các phương thức để thao
tác với đối tượng của lớp.
4. Tạo đối tượng: Khởi tạo đối tượng của lớp và gọi các phương
thức của nó.
Chương trình trên minh họa cách thêm thuộc tính mới (dia_chi) cho
lớp HocSinh và cập nhật các phương thức để xử lý thuộc tính mới
này.
083 - Viết chương trình để thêm
phương thức cho lớp học sinh
Code Python
Chúng ta sẽ thêm một phương thức mới có tên là cap_nhat_diem để
cập nhật điểm trung bình của học sinh, và một phương thức
loi_chao để hiển thị lời chào từ học sinh.
class HocSinh:
def __init__(self, ten, tuoi, diem_tb, dia_chi):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten
self.tuoi = tuoi
self.diem_tb = diem_tb
self.dia_chi = dia_chi
def hien_thi_thong_tin(self):
"""Phương thức để hiển thị thông tin của học sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self.tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
print(f"Địa chỉ: {self.dia_chi}")
def xep_loai(self):
"""Phương thức để xếp loại học sinh dựa trên điểm
trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
def loi_chao(self):
"""Phương thức để hiển thị lời chào từ học sinh"""
print(f"Xin chào! Tôi là {self.ten} và tôi học lớp
12. Rất vui được gặp bạn!")
# Tạo đối tượng học sinh với thuộc tính địa chỉ
hs = HocSinh("Nguyễn Văn A", 16, 8.2, "123 Đường A, Thành phố
B")
Phương thức __init__ được gọi khi một đối tượng của lớp
được khởi tạo.
Các tham số ten, tuoi, diem_tb, dia_chi được truyền vào để
khởi tạo các thuộc tính self.ten, self.tuoi, self.diem_tb,
self.dia_chi.
Phương thức này hiển thị thông tin của học sinh bằng cách
in ra các thuộc tính ten, tuoi, diem_tb, dia_chi.
Phương thức này xếp loại học sinh dựa trên điểm trung bình
diem_tb.
Nếu diem_tb >= 8.5, học sinh được xếp loại “Giỏi”.
Nếu diem_tb >= 6.5, học sinh được xếp loại “Khá”.
Nếu diem_tb >= 5.0, học sinh được xếp loại “Trung bình”.
Nếu diem_tb < 5.0, học sinh được xếp loại “Yếu”.
Phương thức này cho phép cập nhật điểm trung bình của
học sinh. Nó nhận tham số diem_moi và gán giá trị này cho
self.diem_tb.
6. Phương thức loi_chao:
Phương thức này hiển thị một lời chào từ học sinh, sử dụng
thuộc tính ten.
7. Tạo đối tượng học sinh với thuộc tính địa chỉ:
Tạo một đối tượng hs của lớp HocSinh với tên “Nguyễn Văn
A”, tuổi 16, điểm trung bình 8.2, và địa chỉ “123 Đường A,
Thành phố B”.
10. Cập nhật điểm trung bình và hiển thị thông tin:
Gọi phương thức loi_chao của đối tượng hs để hiển thị lời
chào.
Tóm tắt
1. Định nghĩa lớp: Sử dụng từ khóa class để định nghĩa một lớp
trong Python.
2. Phương thức khởi tạo __init__: Thiết lập các thuộc tính của
đối tượng khi khởi tạo.
3. Phương thức của lớp: Định nghĩa các phương thức để thao
tác với đối tượng của lớp.
4. Tạo đối tượng: Khởi tạo đối tượng của lớp và gọi các phương
thức của nó.
Chương trình trên minh họa cách thêm phương thức mới
(cap_nhat_diem và loi_chao) cho lớp HocSinh và cập nhật các
phương thức để xử lý và hiển thị thông tin của đối tượng học sinh.
084 - Viết chương trình để tạo đối
tượng từ lớp học sinh
Code Python
class HocSinh:
def __init__(self, ten, tuoi, diem_tb, dia_chi):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten
self.tuoi = tuoi
self.diem_tb = diem_tb
self.dia_chi = dia_chi
def hien_thi_thong_tin(self):
"""Phương thức để hiển thị thông tin của học sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self.tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
print(f"Địa chỉ: {self.dia_chi}")
def xep_loai(self):
"""Phương thức để xếp loại học sinh dựa trên điểm
trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
# Hiển thị thông tin của từng học sinh trong danh sách
for hoc_sinh in danh_sach_hoc_sinh:
hoc_sinh.hien_thi_thong_tin()
print(f"Xếp loại: {hoc_sinh.xep_loai()}")
print("-----")
Phương thức này hiển thị thông tin của học sinh bằng cách
in ra các thuộc tính ten, tuoi, diem_tb, dia_chi.
Phương thức này xếp loại học sinh dựa trên điểm trung bình
diem_tb.
Nếu diem_tb >= 8.5, học sinh được xếp loại “Giỏi”.
Nếu diem_tb >= 6.5, học sinh được xếp loại “Khá”.
Nếu diem_tb >= 5.0, học sinh được xếp loại “Trung bình”.
Nếu diem_tb < 5.0, học sinh được xếp loại “Yếu”.
Tạo ba đối tượng hs1, hs2, hs3 của lớp HocSinh với các
thông tin khác nhau.
7. Hiển thị thông tin của từng học sinh trong danh sách:
Sử dụng vòng lặp for để duyệt qua từng đối tượng trong
danh sách danh_sach_hoc_sinh.
Gọi phương thức hien_thi_thong_tin và xep_loai để hiển
thị thông tin và xếp loại của từng học sinh.
Tóm tắt
1. Định nghĩa lớp: Sử dụng từ khóa class để định nghĩa một lớp
trong Python.
2. Phương thức khởi tạo __init__: Thiết lập các thuộc tính của
đối tượng khi khởi tạo.
3. Phương thức của lớp: Định nghĩa các phương thức để thao
tác với đối tượng của lớp.
4. Tạo đối tượng: Khởi tạo đối tượng của lớp và gọi các phương
thức của nó.
5. Tạo danh sách đối tượng: Tạo một danh sách chứa nhiều đối
tượng của lớp và thao tác với từng đối tượng trong danh sách.
Chương trình trên minh họa cách tạo đối tượng từ lớp HocSinh và
tạo danh sách các đối tượng từ lớp HocSinh, sau đó hiển thị thông
tin và xếp loại của từng học sinh trong danh sách.
085 - Viết chương trình để truy cập
thuộc tính của đối tượng
Code Python
class HocSinh:
def __init__(self, ten, tuoi, diem_tb, dia_chi):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten # Thuộc tính public
self._tuoi = tuoi # Thuộc tính private
self.diem_tb = diem_tb # Thuộc tính public
self.__dia_chi = dia_chi # Thuộc tính private (name
mangling)
def hien_thi_thong_tin(self):
"""Phương thức để hiển thị thông tin của học sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self._tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
print(f"Địa chỉ: {self.__dia_chi}")
def xep_loai(self):
"""Phương thức để xếp loại học sinh dựa trên điểm
trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
# Truy cập và thay đổi giá trị các thuộc tính public
print(f"Trước khi thay đổi: Tên - {hs.ten}, Điểm trung bình -
{hs.diem_tb}")
hs.ten = "Trần Thị B"
hs.diem_tb = 9.0
print(f"Sau khi thay đổi: Tên - {hs.ten}, Điểm trung bình -
{hs.diem_tb}")
# Truy cập và thay đổi giá trị các thuộc tính private qua
getter và setter
print(f"Trước khi thay đổi: Tuổi - {hs.tuoi}, Địa chỉ -
{hs.get_dia_chi()}")
hs.tuoi = 17
hs.set_dia_chi("456 Đường B, Thành phố C")
print(f"Sau khi thay đổi: Tuổi - {hs.tuoi}, Địa chỉ -
{hs.get_dia_chi()}")
Khởi tạo các thuộc tính ten, diem_tb là thuộc tính public.
Khởi tạo các thuộc tính _tuoi và __dia_chi là thuộc tính
private.
__dia_chi sử dụng kỹ thuật name mangling để trở thành
thuộc tính private.
Hiển thị thông tin của học sinh bằng cách in ra các thuộc tính
ten, _tuoi, diem_tb, __dia_chi.
8. Truy cập và thay đổi giá trị các thuộc tính public:
Truy cập và thay đổi trực tiếp các thuộc tính public ten và
diem_tb.
9. Truy cập và thay đổi giá trị các thuộc tính private:
Chương trình trên minh họa cách truy cập và thay đổi giá trị của các
thuộc tính public và private của đối tượng từ lớp HocSinh, sử dụng
các phương thức getter và setter để quản lý các thuộc tính private.
086 - Viết chương trình để gọi
phương thức của đối tượng
Code Python
class HocSinh:
def __init__(self, ten, tuoi, diem_tb, dia_chi):
"""Phương thức khởi tạo để thiết lập các thuộc tính
của học sinh"""
self.ten = ten
self.tuoi = tuoi
self.diem_tb = diem_tb
self.dia_chi = dia_chi
def hien_thi_thong_tin(self):
"""Phương thức public để hiển thị thông tin của học
sinh"""
print(f"Học sinh: {self.ten}")
print(f"Tuổi: {self.tuoi}")
print(f"Điểm trung bình: {self.diem_tb}")
print(f"Địa chỉ: {self.dia_chi}")
self.__xep_loai() # Gọi phương thức private từ
phương thức public
def xep_loai(self):
"""Phương thức public để xếp loại học sinh dựa trên
điểm trung bình"""
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
def __xep_loai(self):
"""Phương thức private để xếp loại học sinh dựa trên
điểm trung bình"""
loai = self.xep_loai()
print(f"Xếp loại: {loai}")
Phương thức khởi tạo để thiết lập các thuộc tính ten, tuoi,
diem_tb, dia_chi.
Xếp loại học sinh dựa trên điểm trung bình diem_tb.
Xếp loại học sinh dựa trên điểm trung bình và in ra kết quả.
Phương thức này được gọi từ phương thức public
hien_thi_thong_tin.
Phương thức private không thể được gọi trực tiếp từ bên
ngoài lớp, chỉ có thể được gọi từ bên trong lớp thông qua
phương thức public.
Tóm tắt
1. Định nghĩa lớp: Sử dụng từ khóa class để định nghĩa một lớp
trong Python.
2. Phương thức khởi tạo __init__: Thiết lập các thuộc tính của
đối tượng khi khởi tạo.
3. Phương thức public: Định nghĩa các phương thức có thể được
gọi từ bên ngoài lớp.
4. Phương thức private: Định nghĩa các phương thức chỉ có thể
được gọi từ bên trong lớp.
5. Gọi phương thức public: Gọi trực tiếp từ đối tượng.
6. Gọi phương thức private: Gọi từ bên trong lớp thông qua
phương thức public.
Chương trình trên minh họa cách gọi các phương thức public và
private của đối tượng từ lớp HocSinh, trong đó phương thức
private được gọi từ bên trong phương thức public.
087 - Viết chương trình để kế thừa từ
một lớp cơ bản
Code Python
# Định nghĩa lớp cơ bản Nguoi
class Nguoi:
def __init__(self, ten, tuoi):
self.ten = ten
self.tuoi = tuoi
def hien_thi_thong_tin(self):
print(f"Tên: {self.ten}")
print(f"Tuổi: {self.tuoi}")
def hien_thi_thong_tin(self):
super().hien_thi_thong_tin()
print(f"Lớp: {self.lop}")
print(f"Điểm trung bình: {self.diem_tb}")
def xep_loai(self):
if self.diem_tb >= 8.5:
return "Giỏi"
elif self.diem_tb >= 6.5:
return "Khá"
elif self.diem_tb >= 5.0:
return "Trung bình"
else:
return "Yếu"
Tóm tắt
1. Định nghĩa lớp cơ bản: Sử dụng từ khóa class để định nghĩa
lớp cơ bản và các thuộc tính, phương thức.
2. Kế thừa lớp: Sử dụng từ khóa class và () để định nghĩa lớp
con kế thừa từ lớp cơ bản.
3. Gọi phương thức của lớp cha: Sử dụng từ khóa super() để
gọi phương thức của lớp cha từ lớp con.
4. Ghi đè phương thức: Định nghĩa lại phương thức của lớp cha
trong lớp con để thay đổi hoặc mở rộng chức năng của nó.
Chương trình trên minh họa cách kế thừa từ một lớp cơ bản và ghi
đè phương thức của lớp cha trong lớp con, đồng thời bổ sung các
thuộc tính và phương thức riêng cho lớp con.
088 - Viết chương trình để ghi đè
phương thức của lớp cha
Code Python
# Định nghĩa lớp cơ bản Nguoi
class Nguoi:
def __init__(self, ten, tuoi):
self.ten = ten
self.tuoi = tuoi
def hien_thi_thong_tin(self):
print(f"Tên: {self.ten}")
print(f"Tuổi: {self.tuoi}")
def hien_thi_thong_tin(self):
# Sử dụng phương thức của lớp cha để hiển thị tên và
tuổi
super().hien_thi_thong_tin()
# Thêm thông tin về lớp và điểm trung bình
print(f"Lớp: {self.lop}")
print(f"Điểm trung bình: {self.diem_tb}")
Tóm tắt
1. Định nghĩa lớp cơ bản: Sử dụng từ khóa class để định nghĩa
lớp cơ bản và các thuộc tính, phương thức.
2. Kế thừa lớp: Sử dụng từ khóa class và () để định nghĩa lớp
con kế thừa từ lớp cơ bản.
3. Gọi phương thức của lớp cha: Sử dụng từ khóa super() để
gọi phương thức của lớp cha từ lớp con.
4. Ghi đè phương thức: Định nghĩa lại phương thức của lớp cha
trong lớp con để thay đổi hoặc mở rộng chức năng của nó.
Chương trình trên minh họa cách ghi đè phương thức của lớp cha
trong lớp con và sử dụng phương thức của lớp cha trong lớp con
bằng cách sử dụng từ khóa super().
089 - Viết chương trình để sử dụng
trừu tượng trong Python
Code Python
from abc import ABC, abstractmethod
Tóm tắt
Sử dụng lớp trừu tượng và phương thức trừu tượng trong
Python.
Kế thừa trong lập trình hướng đối tượng Python.
Sử dụng decorator @abstractmethod.
Chương trình này mô phỏng việc sử dụng trừu tượng trong Python
thông qua việc tạo một lớp trừu tượng Animal và các lớp con Dog và
Cat triển khai phương thức trừu tượng sound.
090 - Viết chương trình để sử dụng đa
hình trong Python
Code Python
class Animal:
def sound(self):
return "Animal makes a sound"
class Dog(Animal):
def sound(self):
return "Woof!"
class Cat(Animal):
def sound(self):
return "Meow!"
Bổ sung
Các cách giải khác: Trong trường hợp này, việc sử dụng đa
hình là một cách tiếp cận phổ biến và hiệu quả. Tuy nhiên, tùy
thuộc vào yêu cầu cụ thể của chương trình, có thể có các cách
tiếp cận khác như sử dụng lớp cơ sở thông thường hoặc sử
dụng các hàm.
Tóm tắt
Các điểm lý thuyết Python trong chương trình:
Sử dụng đa hình trong Python.
Kế thừa trong lập trình hướng đối tượng Python.
Ghi đè phương thức trong Python.
Một câu tóm tắt chung về chương trình: Chương trình này mô
phỏng việc sử dụng đa hình trong Python thông qua việc tạo một
lớp Animal và các lớp con Dog và Cat ghi đè phương thức sound.
Chương 10 : Ngoại lệ
91. Viết chương trình để bắt lỗi chia cho 0.
92. Viết chương trình để bắt lỗi khi truy cập chỉ mục không tồn tại
trong danh sách.
93. Viết chương trình để bắt lỗi khi truy cập key không tồn tại trong
dictionary.
94. Viết chương trình để bắt lỗi khi chuyển đổi kiểu dữ liệu không
hợp lệ.
95. Viết chương trình để bắt lỗi khi đọc file không tồn tại.
96. Viết chương trình để tự định nghĩa ngoại lệ.
97. Viết chương trình để sử dụng khối lệnh try-except-finally.
98. Viết chương trình để bắt nhiều lỗi cùng lúc.
99. Viết chương trình để bắt lỗi và tiếp tục thực hiện các lệnh khác.
100. Viết chương trình để bắt lỗi và ném lỗi cho hàm khác để ghi log
lỗi vào file.
091 - Viết chương trình để bắt lỗi chia
cho 0
Code Python
try:
result = 10 / 0
except ZeroDivisionError:
result = "Error: Division by zero is not allowed!"
print(result)
Bổ sung
Trong Python, cấu trúc để xử lý ngoại lệ là try/except, không phải
try/catch (như các ngôn ngữ khác). Đây là một ví dụ về cách sử
dụng nó:
try:
# Code có thể gây ra ngoại lệ
except ExceptionType:
# Code xử lý ngoại lệ
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu về lỗi ZeroDivisionError trong Python.
Chương trình này mô phỏng việc bắt lỗi chia cho 0 trong Python
thông qua việc sử dụng khối try/except để bắt lỗi
ZeroDivisionError.
092 - Viết chương trình để bắt lỗi khi
truy cập chỉ mục không tồn tại trong
danh sách
Code Python
try:
my_list = [1, 2, 3]
value = my_list[5]
except IndexError:
value = "Error: Index out of range!"
print(value)
Giải thích code
1. Thực hiện truy cập chỉ mục trong khối try: Đây là nơi chúng
ta thực hiện truy cập chỉ mục có thể gây ra lỗi.
2. Bắt lỗi IndexError trong khối except: Nếu lỗi IndexError xảy
ra, chúng ta sẽ bắt lỗi và gán giá trị cho value là một thông báo
lỗi.
3. In ra value: In ra giá trị tại chỉ mục được truy cập hoặc thông
báo lỗi.
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu về lỗi IndexError trong Python.
Chương trình này mô phỏng việc bắt lỗi khi truy cập vào một chỉ
mục không tồn tại trong danh sách trong Python thông qua việc sử
dụng khối try/except để bắt lỗi IndexError.
093 - Viết chương trình để bắt lỗi khi
truy cập key không tồn tại trong
dictionary
Code Python
try:
my_dict = {'name': 'John', 'age': 30}
value = my_dict['address']
except KeyError:
value = "Error: Key not found in dictionary!"
print(value)
Giải thích code
1. Thực hiện truy cập key trong khối try: Đây là nơi chúng ta
thực hiện truy cập key có thể gây ra lỗi.
2. Bắt lỗi KeyError trong khối except: Nếu lỗi KeyError xảy ra,
chúng ta sẽ bắt lỗi và gán giá trị cho value là một thông báo lỗi.
3. In ra value: In ra giá trị tại key được truy cập hoặc thông báo lỗi.
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu về lỗi KeyError trong Python.
Chương trình này mô phỏng việc bắt lỗi khi truy cập vào một key
không tồn tại trong dictionary trong Python thông qua việc sử dụng
khối try/except để bắt lỗi KeyError.
094 - Viết chương trình để bắt lỗi khi
chuyển đổi kiểu dữ liệu không hợp lệ
Code Python
try:
value = int('abc')
except ValueError:
value = "Error: Invalid type conversion!"
print(value)
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu về lỗi ValueError trong Python.
Chương trình này mô phỏng việc bắt lỗi khi thực hiện chuyển đổi
kiểu dữ liệu không hợp lệ trong Python thông qua việc sử dụng khối
try/except để bắt lỗi ValueError.
095 - Viết chương trình để bắt lỗi khi
đọc file không tồn tại
Code Python
def read_file(file_path):
try:
with open(file_path, 'r') as file:
content = file.read()
except FileNotFoundError:
content = "Error: File not found!"
return content
print(read_file('non_existent_file.txt'))
Giải thích code
1. Thực hiện việc đọc file trong khối try: Đây là nơi chúng ta
thực hiện việc đọc file có thể gây ra lỗi.
2. Bắt lỗi FileNotFoundError trong khối except: Nếu lỗi
FileNotFoundError xảy ra, chúng ta sẽ bắt lỗi và gán giá trị cho
content là một thông báo lỗi.
3. Trả về content: Trả về nội dung của file hoặc thông báo lỗi.
4. In ra kết quả: In ra nội dung của file hoặc thông báo lỗi khi gọi
hàm read_file.
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu về lỗi FileNotFoundError trong Python.
Sử dụng hàm open để đọc file trong Python.
Chương trình này mô phỏng việc bắt lỗi khi thực hiện việc đọc một
file không tồn tại trong Python thông qua việc sử dụng khối
try/except để bắt lỗi FileNotFoundError.
096 - Viết chương trình để tự định
nghĩa ngoại lệ
Code Python
class CustomException(Exception):
pass
def raise_custom_exception():
try:
raise CustomException("This is a custom exception!")
except CustomException as e:
print(e)
raise_custom_exception()
Giải thích code
1. Định nghĩa một lớp ngoại lệ tùy chỉnh:
2. Thực hiện một hành động có thể gây ra ngoại lệ trong một
khối try: Đây là nơi chúng ta thực hiện một hành động có thể
gây ra ngoại lệ tùy chỉnh.
3. Bắt ngoại lệ tùy chỉnh trong khối except: Nếu ngoại lệ tùy
chỉnh xảy ra, chúng ta sẽ bắt lỗi và in ra thông báo lỗi.
Tóm tắt
Sử dụng khối try/except để bắt lỗi trong Python.
Hiểu cách tự định nghĩa ngoại lệ trong Python.
Sử dụng từ khóa raise để ném một ngoại lệ.
Chương trình này mô phỏng việc tự định nghĩa, ném và bắt một
ngoại lệ tùy chỉnh trong Python.
097 - Viết chương trình để sử dụng
khối lệnh try-except-finally
Code Python
def try_except_finally():
try:
print("Trying to divide by zero...")
result = 10 / 0
except ZeroDivisionError as e:
print("Caught an exception:", e)
finally:
print("This is the finally block.")
try_except_finally()
Giải thích code
1. Thực hiện một hành động có thể gây ra ngoại lệ trong khối
try: Đây là nơi chúng ta thực hiện một hành động có thể gây ra
ngoại lệ (chia cho 0).
2. Bắt và xử lý ngoại lệ trong khối except: Nếu ngoại lệ
ZeroDivisionError xảy ra, chúng ta sẽ bắt lỗi và in ra thông báo
lỗi.
3. Thực hiện một hành động trong khối finally: Đây là nơi
chúng ta thực hiện một hành động, bất kể có ngoại lệ xảy ra hay
không.
4. Gọi hàm try_except_finally: Gọi hàm để thực hiện việc sử
dụng khối lệnh try-except-finally.
Tóm tắt
Sử dụng khối try/except/finally để bắt, xử lý ngoại lệ và thực
hiện một số hành động, bất kể có ngoại lệ xảy ra hay không.
Hiểu về ngoại lệ ZeroDivisionError trong Python.
Code Python
def catch_multiple_exceptions(x, y):
try:
result = x / y
print(result)
except ZeroDivisionError as e:
print("Caught an exception:", e)
except TypeError as e:
print("Caught an exception:", e)
catch_multiple_exceptions(10, 0)
catch_multiple_exceptions(10, "zero")
Giải thích code
1. Thực hiện một hành động có thể gây ra ngoại lệ trong khối
try: Đây là nơi chúng ta thực hiện một hành động có thể gây ra
ngoại lệ (chia cho 0 hoặc chia cho một chuỗi).
2. Bắt và xử lý ngoại lệ trong các khối except: Nếu ngoại lệ
ZeroDivisionError hoặc TypeError xảy ra, chúng ta sẽ bắt lỗi và
in ra thông báo lỗi tương ứng.
3. Gọi hàm catch_multiple_exceptions: Gọi hàm để thực hiện
việc bắt nhiều lỗi cùng lúc.
Tóm tắt
Sử dụng nhiều khối except để bắt và xử lý nhiều loại ngoại lệ
khác nhau.
Hiểu về ngoại lệ ZeroDivisionError và TypeError trong Python.
Chương trình này mô phỏng việc sử dụng nhiều khối except để bắt
và xử lý nhiều loại ngoại lệ khác nhau trong Python.
099 - Viết chương trình để bắt lỗi và
tiếp tục thực hiện các lệnh khác
Code Python
def catch_error_and_continue():
try:
print("Trying to divide by zero...")
result = 10 / 0
except ZeroDivisionError as e:
print("Caught an exception:", e)
catch_error_and_continue()
Giải thích code
1. Thực hiện một hành động có thể gây ra ngoại lệ trong khối
try: Đây là nơi chúng ta thực hiện một hành động có thể gây ra
ngoại lệ (chia cho 0).
2. Bắt và xử lý ngoại lệ trong khối except: Nếu ngoại lệ
ZeroDivisionError xảy ra, chúng ta sẽ bắt lỗi và in ra thông báo
lỗi.
3. Thực hiện một hành động sau khối try/except: Đây là nơi
chúng ta thực hiện một hành động sau khi khối try/except đã
được thực hiện.
4. Gọi hàm catch_error_and_continue: Gọi hàm để thực hiện việc
bắt lỗi và tiếp tục thực hiện các lệnh khác.
Tóm tắt
Sử dụng khối try/except để bắt và xử lý ngoại lệ.
Hiểu về ngoại lệ ZeroDivisionError trong Python.
Hiểu rằng sau khi bắt và xử lý một ngoại lệ, chương trình sẽ tiếp
tục thực hiện các lệnh tiếp theo nằm ngoài khối try/except.
Code Python
def throw_error():
try:
result = 10 / 0
except ZeroDivisionError as e:
raise e
except TypeError as e:
raise e
def log_error():
try:
throw_error()
except Exception as e:
with open('error.txt', 'a') as f:
f.write(str(e) + '\n')
log_error()
Tóm tắt
Sử dụng từ khóa raise để ném một ngoại lệ trong Python.
Sử dụng khối try/except để bắt và xử lý ngoại lệ.
Hiểu về ngoại lệ ZeroDivisionError và TypeError trong Python.
Sử dụng file I/O để ghi log lỗi vào file.
Code Python
def dem_so_tu(chuoi):
"""
Hàm này nhận vào một chuỗi và trả về số từ trong chuỗi
đó.
"""
# Tách chuỗi thành danh sách các từ
danh_sach_tu = chuoi.split()
return so_tu
Hàm này nhận vào một chuỗi và trả về số từ trong chuỗi đó.
Sử dụng phương thức split() để tách chuỗi thành danh
sách các từ. split() mặc định tách chuỗi dựa trên khoảng
trắng.
Sử dụng len() để đếm số lượng phần tử trong danh sách,
tức là số từ trong chuỗi.
Gọi hàm dem_so_tu với chuỗi đã nhập và lưu kết quả vào
biến so_tu.
In ra số từ trong chuỗi.
Tóm tắt
1. Nhập chuỗi: Sử dụng input() để nhận chuỗi từ người dùng.
2. Tách chuỗi thành danh sách từ: Sử dụng phương thức
split() để tách chuỗi thành danh sách các từ dựa trên khoảng
trắng.
3. Đếm số từ: Sử dụng len() để đếm số lượng phần tử trong danh
sách từ.
4. In kết quả: In ra số từ trong chuỗi.
Chương trình trên minh họa cách đếm số từ trong một chuỗi bằng
cách tách chuỗi thành danh sách các từ và đếm số lượng phần tử
trong danh sách đó.
102 - Viết chương trình để đếm số ký
tự trong một chuỗi
Code Python
Cả hai cách đều chính xác và có thể sử dụng tùy vào tình huống cụ
thể. Sử dụng len() là cách nhanh chóng và dễ hiểu nhất, trong khi
việc duyệt qua từng ký tự có thể hữu ích trong một số trường hợp cụ
thể yêu cầu xử lý từng ký tự riêng lẻ.
103 - Viết chương trình để đếm số câu
trong một đoạn văn
Code Python
def dem_so_cau_1(doan_van):
"""
Hàm này sử dụng regex để tách đoạn văn thành các câu và
đếm số câu.
"""
# Sử dụng regex để tách đoạn văn thành các câu
cau = re.split(r'[.?!]', doan_van)
# Loại bỏ các phần tử rỗng
cau = [c for c in cau if c.strip()]
return len(cau)
# Nhập đoạn văn từ người dùng
doan_van = input("Nhập một đoạn văn: ")
return so_cau
Tóm tắt
1. Sử dụng split() với nhiều dấu câu: Tách đoạn văn thành
danh sách các câu và đếm số phần tử trong danh sách.
2. Duyệt từng ký tự và đếm dấu câu: Duyệt qua từng ký tự trong
đoạn văn và đếm số lần xuất hiện của các dấu câu.
Cả hai cách đều chính xác và có thể sử dụng tùy vào tình huống cụ
thể. Sử dụng split() là cách nhanh chóng và dễ hiểu, trong khi việc
duyệt qua từng ký tự có thể hữu ích trong một số trường hợp cụ thể
yêu cầu xử lý từng ký tự riêng lẻ.
104 - Viết chương trình để tìm tất cả
các từ dài nhất trong một chuỗi
Code Python
def tim_tu_dai_nhat(file_name):
"""
Hàm để tìm tất cả các từ dài nhất trong một file văn bản.
"""
noi_dung = doc_file(file_name)
return tu_dai_nhat
def tim_tu_dai_nhat(file_name):
"""
Hàm để tìm tất cả các từ dài nhất trong một file văn bản.
"""
noi_dung = doc_file(file_name)
# Tách chuỗi thành danh sách các từ
danh_sach_tu = noi_dung.split()
# Tìm độ dài của từ dài nhất bằng hàm max với key là độ
dài của từ
do_dai_max = len(max(danh_sach_tu, key=len))
return tu_dai_nhat
Hàm doc_file mở và đọc nội dung từ file văn bản, sau đó trả
về chuỗi nội dung của file.
Tóm tắt
1. Đọc nội dung từ file: Sử dụng hàm open để đọc nội dung từ file
văn bản và lưu vào một chuỗi.
2. Tách chuỗi thành danh sách từ: Sử dụng phương thức split
để tách chuỗi thành danh sách các từ.
3. Tìm từ dài nhất (Cách 1): Sử dụng vòng lặp để tìm từ dài nhất
và duyệt lại danh sách để tìm tất cả các từ có độ dài bằng độ dài
của từ dài nhất.
4. Tìm từ dài nhất (Cách 2): Sử dụng hàm max với key là độ dài
của từ để tìm từ dài nhất và duyệt lại danh sách để tìm tất cả các
từ có độ dài bằng độ dài của từ dài nhất.
105 - Viết chương trình để tìm từ xuất
hiện nhiều nhất trong một chuỗi
Code Python
def tim_tu_xuat_hien_nhieu_nhat(file_name):
"""
Hàm để tìm từ xuất hiện nhiều nhất trong một file văn
bản.
"""
noi_dung = doc_file(file_name)
def tim_tu_xuat_hien_nhieu_nhat(file_name):
"""
Hàm để tìm từ xuất hiện nhiều nhất trong một file văn
bản.
"""
noi_dung = doc_file(file_name)
Hàm doc_file mở và đọc nội dung từ file văn bản, sau đó trả
về chuỗi nội dung của file.
Tóm tắt
Chương trình tìm từ xuất hiện nhiều nhất trong một chuỗi được lấy
từ file văn bản bằng cách sử dụng từ điển hoặc thư viện
collections.Counter. Cả hai cách đều hiệu quả trong việc đếm và
tìm từ xuất hiện nhiều nhất.
106 - Viết chương trình để tách các từ
từ một chuỗi thành danh sách
Code Python
def tach_tu(file_name):
"""
Hàm để tách các từ từ một chuỗi thành danh sách.
"""
noi_dung = doc_file(file_name)
# Tách chuỗi thành danh sách các từ
danh_sach_tu = noi_dung.split()
return danh_sach_tu
def doc_file(file_name):
"""
Hàm để đọc nội dung từ một file văn bản.
"""
with open(file_name, 'r', encoding='utf-8') as file:
noi_dung = file.read()
return noi_dung
def tach_tu(file_name):
"""
Hàm để tách các từ từ một chuỗi thành danh sách.
"""
noi_dung = doc_file(file_name)
return danh_sach_tu
Tóm tắt
Sử dụng hàm open để mở và đọc nội dung từ file văn bản.
Sử dụng phương thức split để tách chuỗi thành danh sách các
từ.
Sử dụng thư viện re với biểu thức chính quy để tách từ một
cách linh hoạt hơn.
In ra danh sách các từ.
Chương trình đọc nội dung từ file văn bản và tách chuỗi thành danh
sách các từ, sử dụng phương thức split hoặc biểu thức chính quy.
107 - Viết chương trình để nối các từ
trong danh sách thành một chuỗi
Code Python
Tóm tắt
Khởi tạo một danh sách các từ.
Sử dụng phương thức join để nối các từ trong danh sách thành
một chuỗi.
Sử dụng vòng lặp for để nối các từ trong danh sách thành một
chuỗi.
In ra chuỗi kết quả.
Chương trình nối các từ trong danh sách thành một chuỗi, sử dụng
phương thức join hoặc vòng lặp for.
108 - Viết chương trình để thay thế
một từ trong chuỗi bằng từ khác
Code Python
Tóm tắt
Sử dụng phương thức replace để thay thế một từ trong chuỗi
bằng từ khác.
Sử dụng biểu thức chính quy re.sub để thay thế từ trong chuỗi,
đảm bảo thay thế từ đầy đủ.
Chương trình thay thế một từ trong chuỗi bằng từ khác, sử dụng
phương thức replace hoặc biểu thức chính quy re.sub.
109 - Viết chương trình để loại bỏ các
ký tự đặc biệt khỏi chuỗi
Code Python
def loai_bo_ky_tu_dac_biet(chuoi):
"""
Hàm để loại bỏ các ký tự đặc biệt khỏi chuỗi, chỉ giữ lại
chữ cái và số.
"""
chuoi_ket_qua = re.sub(r'[^A-Za-z0-9]', '', chuoi)
return chuoi_ket_qua
Tóm tắt
Import thư viện re để sử dụng biểu thức chính quy.
Sử dụng re.sub với biểu thức chính quy [^A-Za-z0-9] để loại bỏ
các ký tự không phải chữ cái và số.
Chương trình loại bỏ các ký tự đặc biệt khỏi chuỗi, chỉ giữ lại các ký
tự chữ cái và số, sử dụng biểu thức chính quy re.sub.
110 - Viết chương trình để kiểm tra
một chuỗi có phải là palindrome
không
Code Python
Tóm tắt
Loại bỏ khoảng trắng và chuyển đổi chuỗi thành chữ thường để
đảm bảo so sánh chính xác.
So sánh chuỗi với chuỗi đảo ngược của nó bằng slicing hoặc sử
dụng vòng lặp để kiểm tra từng ký tự đối xứng.
Chương trình kiểm tra một chuỗi có phải là palindrome không bằng
cách so sánh chuỗi với chuỗi đảo ngược của nó hoặc sử dụng vòng
lặp để kiểm tra từng ký tự đối xứng.
Chương 12 : Xử lý ngày và thời
gian
111. Viết chương trình để lấy ngày và giờ hiện tại.
112. Viết chương trình để lấy ngày hiện tại.
113. Viết chương trình để lấy thời gian hiện tại.
114. Viết chương trình để chuyển đổi định dạng ngày tháng.
115. Viết chương trình để tính thời gian chênh lệch giữa hai ngày.
116. Viết chương trình để tính thời gian chênh lệch giữa hai thời gian.
117. Viết chương trình để tính số ngày từ ngày hiện tại đến một ngày
nhất định.
118. Viết chương trình để tính số giây từ thời gian hiện tại đến một
thời gian nhất định.
119. Viết chương trình để in lịch của một tháng nhất định.
120. Viết chương trình để in lịch của một năm nhất định.
111 - Viết chương trình để lấy ngày và
giờ hiện tại
Code Python
from datetime import datetime
def lay_ngay_gio_hien_tai():
"""
Hàm để lấy ngày và giờ hiện tại.
"""
# Lấy thời gian hiện tại
hien_tai = datetime.now()
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.now() để lấy thời gian hiện tại.
Định dạng thời gian hiện tại và in ra kết quả.
Chương trình sử dụng thư viện datetime để lấy và định dạng ngày
và giờ hiện tại.
112 - Viết chương trình để lấy ngày
hiện tại
Code Python
from datetime import datetime
def lay_ngay_thang_nam_gio_phut_giay_hien_tai():
"""
Hàm để lấy ngày, tháng, năm, giờ, phút, giây hiện tại và
xuất ra từng dòng.
"""
# Lấy thời gian hiện tại
hien_tai = datetime.now()
# Truy xuất từng thành phần ngày, tháng, năm, giờ, phút,
giây
nam = hien_tai.year
thang = hien_tai.month
ngay = hien_tai.day
gio = hien_tai.hour
phut = hien_tai.minute
giay = hien_tai.second
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.now() để lấy thời gian hiện tại.
Truy xuất và in từng thành phần ngày, tháng, năm, giờ, phút,
giây ra từng dòng.
Chương trình lấy ngày, tháng, năm, giờ, phút, giây hiện tại và xuất ra
từng giá trị trên từng dòng riêng biệt.
113 - Viết chương trình để lấy thời
gian hiện tại
Code Python
from datetime import datetime
def lay_thoi_gian_hien_tai():
"""
Hàm để lấy thời gian hiện tại theo định dạng 24 giờ và 12
giờ (AM/PM).
"""
# Lấy thời gian hiện tại
hien_tai = datetime.now()
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.now() để lấy thời gian hiện tại.
Định dạng thời gian hiện tại theo kiểu 24 giờ và 12 giờ (AM/PM).
In ra kết quả theo cả hai định dạng.
Chương trình lấy thời gian hiện tại và hiển thị nó theo hai kiểu: 24
giờ và 12 giờ (AM/PM).
114 - Viết chương trình để chuyển đổi
định dạng ngày tháng
Code Python
from datetime import datetime
return ngay_thang_moi
# Định dạng cũ và mới
ngay_thang_cu = "24-05-2024"
dinh_dang_cu = "%d-%m-%Y"
dinh_dang_moi = "%Y/%m/%d"
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.strptime() để chuyển đổi chuỗi ngày tháng
thành đối tượng datetime theo định dạng ban đầu.
Sử dụng strftime() để chuyển đổi đối tượng datetime thành
chuỗi ngày tháng theo định dạng mới.
In ra kết quả ngày tháng theo định dạng mới.
Chương trình chuyển đổi định dạng ngày tháng từ định dạng này
sang định dạng khác bằng cách sử dụng thư viện datetime trong
Python.
115 - Viết chương trình để tính thời
gian chênh lệch giữa hai ngày
Code Python
from datetime import datetime
return chenh_lech
# Ngày tháng đầu vào
ngay1 = "01-01-2020"
ngay2 = "24-05-2024"
dinh_dang = "%d-%m-%Y"
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.strptime() để chuyển đổi chuỗi ngày tháng
thành đối tượng datetime.
Tính toán chênh lệch giữa hai ngày bằng cách trừ hai đối tượng
datetime.
In ra chênh lệch thời gian giữa hai ngày.
Chương trình tính toán chênh lệch thời gian giữa hai ngày bằng
cách sử dụng thư viện datetime trong Python.
116 - Viết chương trình để tính thời
gian chênh lệch giữa hai thời gian
Code Python
from datetime import datetime
return chenh_lech
# Thời gian đầu vào
thoi_gian1 = "14:30:00"
thoi_gian2 = "18:45:00"
dinh_dang = "%H:%M:%S"
Tóm tắt
Import thư viện datetime.
Sử dụng datetime.strptime() để chuyển đổi chuỗi thời gian
thành đối tượng datetime.
Tính toán chênh lệch giữa hai thời gian bằng cách trừ hai đối
tượng datetime.
In ra chênh lệch thời gian giữa hai thời gian.
Chương trình tính toán chênh lệch thời gian giữa hai thời gian bằng
cách sử dụng thư viện datetime trong Python.
117 - Viết chương trình để tính số
ngày từ ngày hiện tại đến một ngày
nhất định
Code Python
from datetime import datetime
# Chuyển đổi chuỗi ngày tháng của ngày đích thành đối
tượng datetime
ngay_dich_obj = datetime.strptime(ngay_dich, dinh_dang)
return chenh_lech.days
Tóm tắt
Import thư viện datetime.
Lấy ngày hiện tại bằng datetime.now().
Sử dụng datetime.strptime() để chuyển đổi chuỗi ngày tháng
của ngày đích thành đối tượng datetime.
Tính toán chênh lệch ngày bằng cách trừ hai đối tượng
datetime.
Lấy số ngày chênh lệch từ đối tượng timedelta và in ra kết quả.
Chương trình tính số ngày từ ngày hiện tại đến một ngày nhất định
trong tương lai bằng cách sử dụng thư viện datetime trong Python.
118 - Viết chương trình để tính số giây
từ thời gian hiện tại đến một thời gian
nhất định
Code Python
from datetime import datetime
def tinh_so_giay_den_thoi_gian_dich(thoi_gian_dich,
dinh_dang):
"""
Hàm để tính số giây từ thời gian hiện tại đến một thời
gian nhất định.
"""
# Lấy thời gian hiện tại
thoi_gian_hien_tai = datetime.now()
# Chuyển đổi chuỗi thời gian của thời gian đích thành đối
tượng datetime
thoi_gian_dich_obj = datetime.strptime(thoi_gian_dich,
dinh_dang)
return chenh_lech.total_seconds()
Chương trình tính số giây từ thời gian hiện tại đến một thời gian
nhất định trong tương lai bằng cách sử dụng thư viện datetime trong
Python.
119 - Viết chương trình để in lịch của
một tháng nhất định
Code Python
import calendar
# In lịch
print(lich_thang)
Tóm tắt
Import thư viện calendar.
Tạo đối tượng TextCalendar với tuần bắt đầu từ Chủ nhật.
Sử dụng phương thức formatmonth() của đối tượng
TextCalendar để lấy lịch của tháng dưới dạng chuỗi.
In lịch của tháng ra màn hình.
Chương trình này in lịch của một tháng nhất định bằng cách sử
dụng thư viện calendar trong Python.
120 - Viết chương trình để in lịch của
một năm nhất định
Code Python
import calendar
def in_lich_nam(nam):
"""
Hàm để in lịch của một năm nhất định.
"""
# Tạo đối tượng TextCalendar
cal = calendar.TextCalendar(calendar.SUNDAY)
Tóm tắt
Import thư viện calendar.
Tạo đối tượng TextCalendar với tuần bắt đầu từ Chủ nhật.
Sử dụng phương thức formatyear() của đối tượng
TextCalendar để lấy lịch của năm dưới dạng chuỗi.
In lịch của năm ra màn hình.
Chương trình này in lịch của một năm nhất định bằng cách sử dụng
thư viện calendar trong Python.
Chương 13 : Lập trình hàm
121. Viết chương trình để sử dụng hàm map để nhân đôi các phần tử
trong danh sách.
122. Viết chương trình để sử dụng hàm filter để lọc các số chẵn trong
danh sách.
123. Viết chương trình để sử dụng hàm reduce để tính tổng các phần
tử trong danh sách.
124. Viết chương trình để sử dụng hàm lambda để tính lũy thừa của
một số.
125. Viết chương trình để sử dụng hàm lambda để kiểm tra số chẵn
lẻ.
126. Viết chương trình để sử dụng hàm map với lambda để nhân đôi
các phần tử trong danh sách.
127. Viết chương trình để sử dụng hàm filter với lambda để lọc các số
lớn hơn 10 trong danh sách.
128. Viết chương trình để sử dụng hàm reduce với lambda để tính
tích các phần tử trong danh sách.
129. Viết chương trình để sử dụng hàm lambda để sắp xếp danh
sách từ điển theo giá trị.
130. Viết chương trình để sử dụng hàm lambda để tìm số lớn nhất
trong danh sách.
121 - Viết chương trình để sử dụng
hàm map để nhân đôi các phần tử
trong danh sách
Code Python
def double(n):
"""
Hàm để nhân đôi một số.
"""
return n * 2
# Sử dụng hàm map để nhân đôi các phần tử trong danh sách
doubled_numbers = list(map(double, numbers))
print("Danh sách sau khi nhân đôi các phần tử:",
doubled_numbers)
Bổ sung
Các cách giải khác:
Tóm tắt
Sử dụng hàm map() trong Python để áp dụng một hàm cho mỗi
phần tử của một iterable (như danh sách).
Sử dụng hàm list() để chuyển đổi một iterable thành một danh
sách.
Chương trình này minh họa cách sử dụng hàm map() trong Python
để thực hiện các phép toán trên mỗi phần tử của một danh sách.
122 - Viết chương trình để sử dụng
hàm filter để lọc các số chẵn trong
danh sách
Code Python
def is_even(n):
"""
Hàm để kiểm tra một số có phải là số chẵn hay không.
"""
return n % 2 == 0
Bổ sung
Các cách giải khác:
Tóm tắt
Sử dụng hàm filter() trong Python để lọc các phần tử trong
một iterable (như danh sách) dựa trên một hàm kiểm tra.
Sử dụng hàm list() để chuyển đổi một iterable thành một danh
sách.
Chương trình này minh họa cách sử dụng hàm filter() trong
Python để lọc ra các số chẵn từ một danh sách.
124 - Viết chương trình để sử dụng
hàm reduce để tính tổng các phần tử
trong danh sách
Code Python
from functools import reduce
# Sử dụng hàm reduce để tính tổng các phần tử trong danh sách
total = reduce(add, numbers)
print("Tổng các phần tử trong danh sách:", total)
Bổ sung
Các cách giải khác:
1. Sử dụng hàm
sum()`: `total = sum(numbers)
Tóm tắt
Sử dụng hàm reduce() từ module functools trong Python để áp
dụng một hàm lên mỗi phần tử của một iterable (như danh sách)
theo cách giảm dần.
Chương trình này minh họa cách sử dụng hàm reduce() trong
Python để tính tổng các phần tử trong một danh sách.
124 - Viết chương trình để sử dụng
hàm lambda để tính lũy thừa của một
số
Code Python
# Định nghĩa hàm lambda để tính lũy thừa của một số
power = lambda x, y: x ** y
# Số và số mũ
number = 2
exponent = 3
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Hàm lambda có thể nhận bất kỳ số lượng đối số nào và trả về
một giá trị.
Chương trình này minh họa cách sử dụng hàm lambda trong Python
để tính lũy thừa của một số.
125 - Viết chương trình để sử dụng
hàm lambda để kiểm tra số chẵn lẻ
Hàm Lambda
Hàm lambda trong Python là một hàm ẩn danh nhỏ, không tên,
được định nghĩa bằng từ khóa lambda. Hàm lambda có thể nhận bất
kỳ số lượng đối số nào nhưng chỉ có thể có một biểu thức. Giá trị
của biểu thức này sẽ được trả về.
Trong đoạn mã bạn đã cung cấp, hàm lambda is_even nhận vào
một đối số x và trả về “Chẵn” nếu x chia hết cho 2 (tức là x là số
chẵn), và trả về “Lẻ” nếu không (tức là x là số lẻ).
Hàm lambda thường được sử dụng trong các trường hợp cần một
hàm nhỏ và ngắn gọn, không cần tái sử dụng, như làm đối số cho
các hàm như map(), filter(), reduce(), hoặc làm hàm callback
trong các hàm hoặc phương thức nhận hàm callback.
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Hàm lambda có thể nhận bất kỳ số lượng đối số nào và trả về
một giá trị.
Chương trình này minh họa cách sử dụng hàm lambda trong Python
để kiểm tra một số là chẵn hay lẻ.
126 - Viết chương trình để sử dụng
hàm map với lambda để nhân đôi các
phần tử trong danh sách
Thuật toán
Đầu vào
Một danh sách các số.
Đầu ra
Một danh sách mới với các phần tử đã được nhân đôi.
print(f"Danh sách sau khi nhân đôi các phần tử: {result}")
Bổ sung
Cách giải khác: Sử dụng list comprehension
result = [x * 2 for x in numbers]
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Sử dụng hàm map() để áp dụng một hàm lên từng phần tử của
một danh sách.
Chuyển đổi đối tượng map thành danh sách bằng hàm list().
Chương trình này minh họa cách sử dụng hàm map() và hàm lambda
trong Python để nhân đôi các phần tử trong một danh sách.
127 - Viết chương trình để sử dụng
hàm filter với lambda để lọc các số
lớn hơn 10 trong danh sách
Thuật toán
Đầu vào
Một danh sách các số.
Đầu ra
Một danh sách mới chỉ chứa các số lớn hơn 10.
print(f"Danh sách sau khi lọc các số lớn hơn 10: {result}")
Bổ sung
Cách giải khác: Sử dụng list comprehension
result = [x for x in numbers if x > 10]
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Sử dụng hàm filter() để lọc các phần tử trong một danh sách
theo một điều kiện nào đó.
Chuyển đổi đối tượng filter thành danh sách bằng hàm
list().
Chương trình này minh họa cách sử dụng hàm filter() và hàm
lambda trong Python để lọc ra các số lớn hơn 10 từ một danh sách.
128 - Viết chương trình để sử dụng
hàm reduce với lambda để tính tích
các phần tử trong danh sách
Thuật toán
Đầu vào
Một danh sách các số.
Đầu ra
Tích của tất cả các phần tử trong danh sách.
Bổ sung
Sử dụng vòng lặp:
result = 1
for num in numbers:
result *= num
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Sử dụng hàm reduce() từ module functools để tính toán trên
từng cặp phần tử của một danh sách.
Chương trình này minh họa cách sử dụng hàm reduce() và hàm
lambda trong Python để tính tích của tất cả các phần tử trong một
danh sách.
129 - Viết chương trình để sử dụng
hàm lambda để sắp xếp danh sách từ
điển theo giá trị
Thuật toán
Đầu vào
Một danh sách các từ điển.
Đầu ra
Danh sách đã được sắp xếp theo giá trị.
Code Python
# Danh sách từ điển cần sắp xếp
dict_list = [{'name': 'John', 'age': 20}, {'name': 'Jane',
'age': 22}, {'name': 'Doe', 'age': 19}]
# Sắp xếp danh sách từ điển theo giá trị của 'age'
sorted_list = sorted(dict_list, key=lambda x: x['age'])
Bổ sung
Cách giải khác: Sử dụng hàm sort() của danh sách:
dict_list.sort(key=lambda x: x['age'])
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Sử dụng hàm sorted() để sắp xếp một danh sách theo một tiêu
chí nào đó.
Chương trình này minh họa cách sử dụng hàm lambda trong Python
để sắp xếp một danh sách từ điển theo giá trị.
130 - Viết chương trình để sử dụng
hàm lambda để tìm số lớn nhất trong
danh sách
Thuật toán
Đầu vào
Một danh sách các số.
Đầu ra
Số lớn nhất trong danh sách.
Code Python
# Danh sách cần tìm số lớn nhất
numbers = [1, 2, 3, 4, 5]
Bổ sung
Cách giải khác: Sử dụng vòng lặp:
max_number = numbers[0]
for num in numbers:
if num > max_number:
max_number = num
Tóm tắt
Sử dụng hàm lambda trong Python để định nghĩa một hàm ẩn
danh ngắn gọn.
Sử dụng hàm max() để tìm số lớn nhất trong một danh sách.
Chương trình này minh họa cách sử dụng hàm lambda trong Python
để tìm số lớn nhất trong một danh sách.
Chương 14 : Bài toán thuật
toán
131. Viết chương trình để tính dãy Fibonacci.
132. Viết chương trình để in ra 10 số hạnh phúc đầu tiên.
133. Viết chương trình để tìm bội số chung nhỏ nhất của hai số.
134. Viết chương trình để kiểm tra một số có phải là số nguyên tố
không.
135. Viết chương trình để tìm tất cả các số nguyên tố từ 1 đến 100.
136. Viết chương trình để tính tổng các số từ 1 đến n.
137. Viết chương trình để tính sin & cos bằng các triển khai chuỗi
Taylor.
138. Viết chương trình để tính Lôgarit tự nhiên ln.
139. Viết chương trình để in ra n số hoàn hảo đầu tiên.
140. Viết chương trình để in ra các số Armstrong từ 1 đến 1000.
131 - Viết chương trình để tính dãy
Fibonacci
Tạo hai biến để lưu hai số đầu tiên của dãy Fibonacci.
Sử dụng vòng lặp để tính các số Fibonacci tiếp theo.
Lưu các số Fibonacci vào danh sách và trả về danh sách đó.
Code Python
fibo_seq = [0, 1]
for i in range(2, n):
next_fibo = fibo_seq[-1] + fibo_seq[-2]
fibo_seq.append(next_fibo)
return fibo_seq
def fibonacci_sequence_recursive(n):
"""
Hàm để tạo dãy Fibonacci sử dụng đệ quy.
"""
return [fibonacci_recursive(i) for i in range(n)]
Tóm tắt
Sử dụng vòng lặp for để tính dãy Fibonacci bằng cách khởi tạo
hai số đầu tiên và sử dụng vòng lặp để tính các số tiếp theo.
Sử dụng đệ quy để tính dãy Fibonacci bằng cách định nghĩa
hàm đệ quy để tính số Fibonacci tại vị trí n.
In kết quả dãy Fibonacci cho cả hai phương pháp.
132 - Viết chương trình để in ra 10 số
hạnh phúc đầu tiên
2. Thuật toán:
Code Python
def is_happy_number(n):
"""
Hàm kiểm tra một số có phải là số hạnh phúc hay không.
"""
seen = set()
while n != 1 and n not in seen:
seen.add(n)
n = sum(int(char) ** 2 for char in str(n))
return n == 1
def first_n_happy_numbers(n):
"""
Hàm trả về danh sách n số hạnh phúc đầu tiên.
"""
happy_numbers = []
num = 1
while len(happy_numbers) < n:
if is_happy_number(num):
happy_numbers.append(num)
num += 1
return happy_numbers
seen = set(): Khởi tạo một tập hợp để lưu các số đã gặp.
while n != 1 and n not in seen: Lặp lại quá trình thay thế
cho đến khi nhận được số 1 hoặc gặp lại một số đã gặp.
seen.add(n): Thêm số hiện tại vào tập hợp.
n = sum(int(char) ** 2 for char in str(n)): Tính tổng
bình phương các chữ số của số hiện tại.
return n == 1: Trả về True nếu số hiện tại là 1, ngược lại là
False.
Tóm tắt
Hàm và hàm tạo trong Python: Sử dụng hàm để tổ chức mã và
tái sử dụng mã.
Tập hợp (set): Sử dụng tập hợp để lưu các số đã gặp nhằm
tránh vòng lặp vô hạn.
Vòng lặp while và for: Sử dụng vòng lặp để kiểm tra các số và
tính tổng bình phương các chữ số.
Danh sách (list): Sử dụng danh sách để lưu các số hạnh phúc
tìm được.
Chương trình này tính và in ra 10 số hạnh phúc đầu tiên bằng cách
kiểm tra từng số một xem nó có phải là số hạnh phúc hay không và
lưu các số hạnh phúc tìm được vào một danh sách.
133 - Viết chương trình để tìm bội số
chung nhỏ nhất (BSCNN) của hai số
2. Thuật toán:
Code Python
import math
Tóm tắt
Import thư viện: Import thư viện math để sử dụng hàm gcd.
Định nghĩa hàm: Định nghĩa hàm lcm để tính BSCNN của hai
số.
Sử dụng hàm gcd: Tính Ước số chung lớn nhất (ƯSCNN) của
hai số bằng hàm gcd.
Công thức BSCNN: Tính BSCNN bằng công thức (a * b) //
gcd(a, b).
In kết quả: In BSCNN của hai số đã cho.
Chương trình này tính bội số chung nhỏ nhất (BSCNN) của hai số
bằng cách sử dụng hàm gcd từ thư viện math để tính Ước số chung
lớn nhất (ƯSCNN), sau đó áp dụng công thức (a * b) // gcd(a,
b) để tính BSCNN.
134 - Viết chương trình để kiểm tra
một số có phải là số nguyên tố không
Code Python
def is_prime_recursive(n, divisor=None):
"""
Hàm đệ quy để kiểm tra số nguyên tố.
"""
if divisor is None:
divisor = n - 1
if n < 2:
return False
if divisor == 1:
return True
if n % divisor == 0:
return False
if is_prime_recursive(number):
print(f"{number} là số nguyên tố.")
else:
print(f"{number} không phải là số nguyên tố.")
Chương trình này sử dụng phương pháp đệ quy để kiểm tra xem
một số có phải là số nguyên tố hay không bằng cách kiểm tra xem
số đó có chia hết cho bất kỳ số nào từ 2 đến n-1 hay không.
135 - chương trình để tìm tất cả các
số nguyên tố từ 1 đến 100
Thuật toán
Đầu vào: Không có đầu vào cụ thể do đề bài yêu cầu tìm số
nguyên tố trong khoảng cố định từ 1 đến 100.
Code Python
def is_prime(n):
# Kiểm tra nếu n nhỏ hơn 2, thì không phải là số nguyên
tố
if n < 2:
return False
# Kiểm tra các ước từ 2 đến căn bậc hai của n
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
Tóm tắt
Hàm is_prime(n) để kiểm tra số nguyên tố.
Vòng lặp for để kiểm tra các số từ 1 đến 100.
Thêm số nguyên tố vào danh sách và in kết quả.
Thuật toán
Đầu vào: Một số nguyên dương n do người dùng nhập vào.
Code Python
def calculate_sum(n):
# Tính tổng các số từ 1 đến n
return sum(range(1, n + 1))
Tóm tắt
Sử dụng hàm input để nhập giá trị từ người dùng.
Sử dụng hàm int để chuyển đổi giá trị nhập vào thành số
nguyên.
Sử dụng hàm sum và range để tính tổng các số từ 1 đến n.
Sử dụng câu điều kiện if để kiểm tra giá trị nhập vào.
Chương trình này tính tổng các số từ 1 đến n dựa trên giá trị n do
người dùng nhập vào và in ra kết quả.
137 - Viết chương trình để tính sin(x)
& cos(x) bằng các triển khai chuỗi
Taylor
Thuật toán
Đầu vào: Giá trị của x (góc tính theo radian) và số lượng phần
tử của chuỗi Taylor.
Đầu ra: Giá trị của sin(x) và cos(x) được tính toán bằng chuỗi
Taylor.
Code Python
import math
# In kết quả
print(f"Giá trị sin({x}) bằng chuỗi Taylor với {terms} phần
tử là: {sin_x}")
print(f"Giá trị cos({x}) bằng chuỗi Taylor với {terms} phần
tử là: {cos_x}")
Tóm tắt
Sử dụng vòng lặp for để tính tổng các phần tử của chuỗi Taylor.
Sử dụng hàm math.factorial để tính giai thừa.
Sử dụng toán tử ** để tính lũy thừa.
Nhập giá trị từ người dùng bằng hàm input và chuyển đổi kiểu
dữ liệu.
Chương trình này tính giá trị của sin(x) và cos(x) bằng cách triển
khai chuỗi Taylor với số lượng phần tử được người dùng nhập vào.
138 - Viết chương trình để tính Lôgarit
tự nhiên ln(x)
Thuật toán
Đầu vào: Giá trị của x (phải là một số dương khác 1).
Đầu ra: Giá trị của ln(x) được tính toán bằng chuỗi Taylor.
Kiểm tra nếu x <= 0 hoặc x = 1 thì báo lỗi vì ln(x) không
xác định.
Sử dụng biến đổi để tính ln(x) khi y = (x-1)/(x+1).
Sử dụng vòng lặp để tính tổng các phần tử của chuỗi Taylor
cho ln(1 + y).
Nhân kết quả với 2 để có giá trị cuối cùng của ln(x).
Nhập giá trị x từ người dùng và kiểm tra giá trị này.
Nhập số lượng phần tử của chuỗi Taylor.
Tính giá trị ln(x) bằng cách gọi hàm taylor_ln.
In ra kết quả hoặc thông báo lỗi nếu x không hợp lệ.
Tóm tắt
Sử dụng vòng lặp for để tính tổng các phần tử của chuỗi Taylor.
Sử dụng phép biến đổi để đảm bảo chuỗi Taylor hội tụ nhanh
hơn.
Nhập giá trị từ người dùng bằng hàm input và chuyển đổi kiểu
dữ liệu.
Sử dụng khối try-except để xử lý lỗi đầu vào không hợp lệ.
Chương trình này tính giá trị của ln(x) bằng cách triển khai chuỗi
Taylor với số lượng phần tử được người dùng nhập vào và kiểm tra
điều kiện hợp lệ của x.
139 - Viết chương trình để in ra n số
hoàn hảo đầu tiên
Thuật toán
Đầu vào: Một số nguyên dương n do người dùng nhập vào.
Đầu ra: Danh sách n số hoàn hảo đầu tiên.
def find_perfect_numbers(n):
perfect_numbers = []
number = 1
while len(perfect_numbers) < n:
if is_perfect_number(number):
perfect_numbers.append(number)
number += 1
return perfect_numbers
Tính tổng các ước số dương của num (không bao gồm chính
nó) bằng cách sử dụng danh sách nén và hàm sum.
Trả về True nếu tổng này bằng num, ngược lại trả về False.
Hàm find_perfect_numbers(n):
Tóm tắt
Sử dụng hàm input để nhập giá trị từ người dùng và chuyển đổi
kiểu dữ liệu.
Sử dụng danh sách nén để tính tổng các ước số dương của một
số.
Sử dụng vòng lặp while để tiếp tục tìm kiếm cho đến khi đủ n số
hoàn hảo.
Sử dụng hàm sum để tính tổng các phần tử trong danh sách.
Chương trình này tìm và in ra n số hoàn hảo đầu tiên dựa trên giá trị
n do người dùng nhập vào.
140 - Viết chương trình để in ra các số
Armstrong từ 1 đến 1000
Thuật toán
Đầu vào: Không có đầu vào cụ thể vì chương trình sẽ tìm các
số Armstrong trong khoảng từ 1 đến 1000.
Đầu ra: Danh sách các số Armstrong từ 1 đến 1000.
Code Python
def is_armstrong_number(num):
# Chuyển số thành chuỗi để dễ dàng truy cập từng chữ số
num_str = str(num)
# Tính số lượng chữ số
num_digits = len(num_str)
# Tính tổng các lũy thừa bậc num_digits của các chữ số
sum_of_powers = sum(int(digit)**num_digits for digit in
num_str)
# Kiểm tra nếu tổng này bằng chính số đó
return sum_of_powers == num
Chuyển số num thành chuỗi để dễ dàng truy cập từng chữ số.
Tính số lượng chữ số của số num bằng cách lấy độ dài của
chuỗi.
Tính tổng các lũy thừa bậc num_digits của các chữ số bằng
cách sử dụng vòng lặp và hàm sum.
Trả về True nếu tổng này bằng chính số đó, ngược lại trả về
False.
Tóm tắt
Sử dụng hàm str để chuyển số thành chuỗi.
Sử dụng hàm len để tính số lượng chữ số.
Sử dụng vòng lặp for và hàm sum để tính tổng các lũy thừa của
các chữ số.
Sử dụng vòng lặp for để kiểm tra các số từ 1 đến 1000 và thêm
các số Armstrong vào danh sách.
Thuật toán
Đầu vào
Hai phân số.
Đầu ra
Tổng, hiệu, tích và thương của hai phân số.
Code Python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
class MyFraction:
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
# Test
frac1 = MyFraction(1, 2)
frac2 = MyFraction(2, 3)
print(f"Tổng: {frac1.add(frac2)}")
print(f"Hiệu: {frac1.subtract(frac2)}")
print(f"Tích: {frac1.multiply(frac2)}")
print(f"Thương: {frac1.divide(frac2)}")
Tóm tắt
Sử dụng hàm gcd để tìm ước chung lớn nhất của hai số.
Định nghĩa một lớp MyFraction để thực hiện các phép toán với
phân số.
Chương trình này minh họa cách viết một chương trình Python để
tính tổng, hiệu, tích và thương của hai phân số mà không sử dụng
lớp Fraction.
142 - Viết chương trình để tìm nghiệm
của phương trình bậc 2 (ax^2 + bx + c
= 0)
Thuật toán
Đầu vào
Hệ số a, b, c của phương trình bậc 2.
Đầu ra
Nghiệm của phương trình bậc 2.
# Nhap a, b, c
a = float(input("Nhập a: "))
b = float(input("Nhập b: "))
c = float(input("Nhập c: "))
print(solve_quadratic(a, b, c))
Tóm tắt
Sử dụng công thức giải phương trình bậc 2 để tìm nghiệm.
Chương trình này minh họa cách viết một chương trình Python để
tìm nghiệm của phương trình bậc 2.
143 - Viết chương trình để tìm nghiệm
của hệ phương trình bậc nhất 2 ẩn số
x&y
Thuật toán
Đầu vào
Hệ số a1, b1, c1, a2, b2, c2 của hệ phương trình bậc nhất 2 ẩn
số.
Đầu ra
Nghiệm của hệ phương trình bậc nhất 2 ẩn số.
Tóm tắt
Sử dụng công thức giải hệ phương trình bậc nhất 2 ẩn số để tìm
nghiệm.
Chương trình này minh họa cách viết một chương trình Python để
tìm nghiệm của hệ phương trình bậc nhất 2 ẩn số.
144 - Viết chương trình để tìm các bộ
ba Pythagorean nhỏ hơn 100 là 3 số
nguyên liên tiếp hoặc 3 số chẵn liên
tiếp
Thuật toán
Đầu vào
Không có đầu vào.
Đầu ra
Danh sách các bộ ba Pythagorean nhỏ hơn 100 là 3 số nguyên
liên tiếp hoặc 3 số chẵn liên tiếp.
print(find_pythagorean_triplets())
Bổ sung
Có thể có nhiều cách khác để giải quyết vấn đề này, nhưng cách
tiếp cận trên là một trong những cách đơn giản và hiệu quả nhất.
Tóm tắt
Chương trình sử dụng vòng lặp for để duyệt qua tất cả các số
nguyên từ 1 đến 97.
Chương trình sử dụng phép toán == để kiểm tra xem ba số có
tạo thành một bộ ba Pythagorean không.
Chương trình sử dụng phương thức append để thêm một phần
tử vào cuối danh sách.
Chương trình Python trên tìm các bộ ba Pythagorean nhỏ hơn 100
là 3 số nguyên liên tiếp hoặc 3 số chẵn liên tiếp.
145 - Viết chương trình để tính lũy
thừa của một số
Thuật toán
Đầu vào
Số cơ sở base và số mũ exponent.
Đầu ra
Kết quả của base mũ exponent.
Code Python
def power(base, exponent):
return base ** exponent
# Test
print(power(2, 3))
Cách giải khác
Ngoài ra, bạn cũng có thể sử dụng hàm pow của Python để tính lũy
thừa của một số.
def power(base, exponent):
return pow(base, exponent)
# Test
print(power(2, 3))
Tóm tắt
Sử dụng toán tử ** hoặc hàm pow để tính lũy thừa của một số.
Chương trình này minh họa cách viết một chương trình Python để
tính lũy thừa của một số.
146 - Viết chương trình để tính Tính
căn bậc hai của một số nguyên
dương x bằng thuật toán Babylonian
Thuật toán
Đầu vào
Số nguyên dương x.
Đầu ra
Căn bậc hai của x tính bằng thuật toán Babylonian và hàm sqrt
trong thư viện math.
def babylonian_sqrt(x):
guess = x
while abs(guess * guess - x) > 1e-10:
guess = (guess + x / guess) / 2
return guess
# Test
x = 16
print("Babylonian method:", babylonian_sqrt(x))
print("math.sqrt:", math.sqrt(x))
Tóm tắt
Sử dụng thuật toán Babylonian để tính căn bậc hai của một số
nguyên dương.
Chương trình này minh họa cách viết một chương trình Python để
tính căn bậc hai của một số nguyên dương x bằng thuật toán
Babylonian và so sánh kết quả với hàm sqrt trong thư viện math.
147 - Viết chương trình để kiểm tra
một số có phải là số hoàn hảo không
Thuật toán
Đầu vào
Số nguyên n.
Đầu ra
True nếu n là số hoàn hảo, False nếu không.
Code Python
def sum_of_divisors(n, i=1, sum=0):
if i == n:
return sum
else:
if n % i == 0:
sum += i
return sum_of_divisors(n, i + 1, sum)
def is_perfect(n):
return sum_of_divisors(n) == n
# Test
print(is_perfect(6)) # True
print(is_perfect(28)) # True
print(is_perfect(12)) # False
Tóm tắt
Sử dụng hàm đệ quy để tính tổng các ước số của n.
Kiểm tra xem tổng có bằng n không.
Chương trình này minh họa cách viết một chương trình Python để
kiểm tra một số có phải là số hoàn hảo không bằng cách sử dụng
thuật toán đệ quy.
148 - Viết chương trình liệt kê, đếm và
tính tổng các ước số của số nguyên
dương n
Yêu cầu
Viết một chương trình Python để liệt kê, đếm và tính tổng các ước
số của một số nguyên dương n. Số n được nhập từ bàn phím.
Code Python
def find_divisors(n):
divisors = [i for i in range(1, n+1) if n % i == 0]
return divisors, len(divisors), sum(divisors)
Tóm tắt
Chương trình sử dụng list comprehension để tạo danh sách các
ước số.
Chương trình sử dụng phép toán % để kiểm tra xem một số có
phải là ước số của n không.
Chương trình sử dụng hàm len để đếm số lượng ước số và hàm
sum để tính tổng các ước số.
Chương trình Python trên liệt kê, đếm và tính tổng các ước số
của một số nguyên dương n.
Chương trình Python trên liệt kê, đếm và tính tổng các ước số của
một số nguyên dương n.
149 - Viết chương trình để nhập vào
một số nguyên dương n, phân tích n
thành các thừa số nguyên tố
Thuật toán
Đầu vào
Số nguyên dương n.
Đầu ra
Danh sách các thừa số nguyên tố của n.
Code Python
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
Tóm tắt
Chương trình sử dụng vòng lặp while để duyệt qua tất cả các số
từ 2 trở đi.
Chương trình sử dụng phép toán % để kiểm tra xem một số có
phải là thừa số nguyên tố của n không.
Chương trình sử dụng phép toán // để chia n cho số nguyên tố.
Thuật toán
Đầu vào
Tọa độ của hai điểm A và B.
Đầu ra
Khoảng cách giữa hai điểm A và B.
Code Python
import math
def calculate_distance(point1, point2):
return math.sqrt((point1[0] - point2[0])**2 + (point1[1]
- point2[1])**2)
Bổ sung
Có thể có nhiều cách khác để giải quyết vấn đề này, nhưng cách
tiếp cận trên là một trong những cách đơn giản và hiệu quả nhất.
Tóm tắt
Chương trình sử dụng hàm sqrt từ module math để tính căn bậc
hai.
Chương trình sử dụng phép toán ** để tính bình phương của
một số.
Chương trình sử dụng tuples để lưu trữ tọa độ của các điểm.
Chương trình Python trên tìm khoảng cách giữa hai điểm A và B
trong hệ tọa độ Oxy.
Chương 16 : Giao diện cơ bản
151. Viết chương trình để tạo một cửa sổ GUI đơn giản.
152. Viết chương trình để thêm nút vào cửa sổ GUI.
153. Viết chương trình để thêm hộp văn bản vào cửa sổ GUI.
154. Viết chương trình để thêm nhãn vào cửa sổ GUI.
155. Viết chương trình để thêm menu vào cửa sổ GUI.
156. Viết chương trình để thêm hộp thoại thông báo vào cửa sổ GUI.
157. Viết chương trình để thêm hình ảnh vào cửa sổ GUI.
158. Viết chương trình để thêm bảng vào cửa sổ GUI.
159. Viết chương trình để thêm đồ thị vào cửa sổ GUI.
160. Viết chương trình để tạo ứng dụng máy tính đơn giản với GUI.
151 - Viết chương trình để tạo một
cửa sổ GUI đơn giản
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
import tkinter as tk
root = tk.Tk()
root.title("Fx Studio")
root.mainloop()
Giải thích code:
Import thư viện tkinter: Thư viện tkinter được sử dụng để
tạo GUI trong Python.
Tạo một instance của lớp Tk: Đây là cửa sổ chính của ứng
dụng GUI.
Đặt tiêu đề cho cửa sổ: Sử dụng phương thức title để đặt
tiêu đề cho cửa sổ là "Fx Studio".
Gọi phương thức mainloop: Phương thức này được gọi để giữ
cửa sổ mở cho đến khi người dùng đóng nó.
Bổ sung
1. Sử dụng PyQt: PyQt là một bộ bindings Python cho thư viện Qt,
một thư viện để tạo GUI. PyQt hỗ trợ nhiều hệ điều hành và là
một lựa chọn tốt cho việc tạo GUI phức tạp.
3. Sử dụng Kivy: Kivy là một thư viện Python cho phát triển đa nền
tảng, bao gồm cả GUI. Kivy hỗ trợ cả cảm ứng đa điểm và là lựa
chọn tốt cho việc tạo ứng dụng di động.
Chương trình này tạo ra một cửa sổ GUI đơn giản với tiêu đề “Fx
Studio” sử dụng thư viện tkinter trong Python.
152 - Viết chương trình để thêm nút
vào cửa sổ GUI
Thuật toán:
Đầu vào:
Đầu ra:
Một cửa sổ GUI với một nút. Khi nút được nhấn, một sự kiện
sẽ được xử lý.
def handle_button_click():
print("Button clicked!")
root = tk.Tk()
button = tk.Button(root, text="Click me!",
command=handle_button_click)
button.pack()
root.mainloop()
Bổ sung
Sử dụng thư viện PyQt, wxPython, Kivy, PyGTK, hoặc PySide: Tất
cả những thư viện này cũng cung cấp các lớp và phương thức để
tạo nút và xử lý sự kiện cho nút.
Tóm tắt:
Sử dụng thư viện tkinter để tạo GUI trong Python.
Sử dụng lớp Tk trong tkinter để tạo cửa sổ chính của ứng dụng
GUI.
Sử dụng lớp Button trong tkinter để tạo nút.
Sử dụng thuộc tính command của lớp Button để gắn hàm xử lý sự
kiện cho nút.
Sử dụng phương thức pack để thêm nút vào cửa sổ.
Sử dụng phương thức mainloop để giữ cửa sổ mở.
Chương trình này tạo ra một cửa sổ GUI với một nút. Khi nút được
nhấn, một sự kiện sẽ được xử lý.
153 - Viết chương trình để thêm hộp
văn bản vào cửa sổ GUI
Thuật toán:
Đầu vào: Không có đầu vào cụ thể từ người dùng.
Đầu ra: Một cửa sổ GUI với một hộp văn bản và một nút. Khi nút
được nhấn, văn bản trong hộp văn bản sẽ được xóa.
Các bước thực hiện:
1. Import thư viện tkinter.
2. Tạo một instance của lớp Tk từ thư viện tkinter.
3. Tạo một hộp văn bản bằng cách sử dụng lớp Entry từ thư
viện tkinter.
4. Tạo một nút bằng cách sử dụng lớp Button từ thư viện
tkinter.
5. Định nghĩa một hàm để xóa văn bản trong hộp văn bản khi
nút được nhấn.
6. Gắn hàm này vào nút bằng cách sử dụng thuộc tính command
của nút.
7. Gọi phương thức mainloop trên instance Tk để hiển thị cửa
sổ GUI.
Code Python
import tkinter as tk
def clear_text():
entry.delete(0, tk.END)
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="Clear text",
command=clear_text)
button.pack()
root.mainloop()
Bổ sung
Sử dụng thư viện PyQt, wxPython, Kivy, PyGTK, hoặc PySide: Tất
cả những thư viện này cũng cung cấp các lớp và phương thức để
tạo hộp văn bản, nút và xử lý sự kiện cho nút.
Tóm tắt:
Sử dụng thư viện tkinter để tạo GUI trong Python.
Sử dụng lớp Tk trong tkinter để tạo cửa sổ chính của ứng dụng
GUI.
Sử dụng lớp Entry trong tkinter để tạo hộp văn bản.
Sử dụng lớp Button trong tkinter để tạo nút.
Sử dụng thuộc tính command của lớp Button để gắn hàm xử lý sự
kiện cho nút.
Sử dụng phương thức pack để thêm hộp văn bản và nút vào cửa
sổ.
Sử dụng phương thức mainloop để giữ cửa sổ mở.
Chương trình này tạo ra một cửa sổ GUI với một hộp văn bản và
một nút. Khi nút được nhấn, văn bản trong hộp văn bản sẽ được
xóa.
154 - Viết chương trình để thêm nhãn
vào cửa sổ GUI
Thuật toán:
Đầu vào:
Không có đầu vào từ người dùng ngoài việc tương tác với giao
diện (nhấn nút).
Đầu ra:
Thay đổi nội dung của nhãn khi nút được nhấn.
def change_label_text():
label.config(text="Nội dung nhãn đã được thay đổi")
# Tạo nhãn
label = tk.Label(window, text="Đây là nhãn ban đầu")
label.pack()
Tóm tắt
Nhập thư viện Tkinter (import tkinter as tk).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề cho cửa sổ (window.title).
Tạo và hiển thị nhãn (tk.Label và label.pack).
Tạo và hiển thị nút (tk.Button và button.pack).
Liên kết sự kiện nhấn nút với hàm thay đổi nội dung nhãn
(command=change_label_text).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một nhãn và một nút bấm,
khi nhấn vào nút, nội dung của nhãn sẽ thay đổi.
155 - Viết chương trình để thêm menu
vào cửa sổ GUI
Thuật toán:
Đầu vào:
Các mục menu được chọn bởi người dùng.
Đầu ra:
Nội dung nhãn sẽ thay đổi dựa trên mục menu được chọn.
def show_selected(option):
label.config(text=f"Bạn đã chọn: {option}")
# Tạo nhãn
label = tk.Label(window, text="Chọn một mục từ menu")
label.pack()
# Tạo menu
menu_bar = Menu(window)
window.config(menu=menu_bar)
Tóm tắt
Nhập thư viện Tkinter và lớp Menu (import tkinter as tk, from
tkinter import Menu).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề cho cửa sổ (window.title).
Tạo và hiển thị nhãn (tk.Label và label.pack).
Tạo thanh menu (Menu).
Tạo menu chính và thêm vào thanh menu (Menu và
menu_bar.add_cascade).
Thêm các mục vào menu chính và liên kết sự kiện chọn mục với
hàm thay đổi nội dung nhãn (main_menu.add_command).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một menu và một nhãn.
Khi người dùng chọn một mục từ menu, nội dung của nhãn sẽ thay
đổi để hiển thị mục đã chọn.
156 - Viết chương trình để thêm hộp
thoại thông báo vào cửa sổ GUI
Thuật toán:
Đầu vào:
Các sự kiện từ người dùng như nhấn nút.
Đầu ra:
Xóa nội dung của hộp thoại khi nút được nhấn.
def clear_textbox():
textbox.delete("1.0", tk.END)
messagebox.showinfo("Thông báo", "Nội dung đã được xóa")
Tóm tắt
Nhập thư viện Tkinter và module messagebox (import tkinter
as tk, from tkinter import messagebox).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề và kích thước tối thiểu cho cửa sổ (window.title và
window.minsize).
Tạo và hiển thị hộp thoại thông báo (tk.Text và textbox.pack).
Tạo và hiển thị nút bấm (tk.Button và clear_button.pack).
Liên kết sự kiện nhấn nút với hàm xóa nội dung hộp thoại
(command=clear_textbox).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một hộp thoại thông báo
và một nút bấm. Khi người dùng nhấn vào nút, nội dung của hộp
thoại sẽ được xóa và hiển thị một hộp thoại thông báo xác nhận
rằng nội dung đã được xóa.
157 - Viết chương trình để thêm hình
ảnh vào cửa sổ GUI
Thuật toán:
Đầu vào:
Đường dẫn tới ảnh được chọn bởi người dùng từ hộp thoại hệ
thống.
Đầu ra:
Hiển thị ảnh trong cửa sổ GUI.
Code Python
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
def open_image():
file_path = filedialog.askopenfilename(filetypes=[("Image
files", "*.jpg *.jpeg *.png *.bmp *.gif")])
if file_path:
load_image(file_path)
def load_image(file_path):
img = Image.open(file_path)
img = img.resize((400, 400), Image.LANCZOS) # Resize
image to fit the window
img_tk = ImageTk.PhotoImage(img)
if 'image_label' in globals():
image_label.config(image=img_tk)
image_label.image = img_tk
else:
global image_label
image_label = tk.Label(window, image=img_tk)
image_label.image = img_tk
image_label.pack()
Tóm tắt
Nhập thư viện Tkinter và Pillow (import tkinter as tk, from
tkinter import filedialog, from PIL import Image, ImageTk).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề và kích thước tối thiểu cho cửa sổ (window.title và
window.minsize).
Tạo nút bấm và liên kết sự kiện nhấn nút với hàm mở hộp thoại
chọn ảnh (tk.Button và open_button.pack).
Định nghĩa hàm mở hộp thoại chọn ảnh (open_image) và hàm tải
và hiển thị ảnh (load_image).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một nút bấm để mở hộp
thoại chọn ảnh của hệ thống và hiển thị ảnh đã chọn trong cửa sổ.
158 - Viết chương trình để thêm bảng
vào cửa sổ GUI
Thuật toán:
Đầu vào:
Các sự kiện từ người dùng như nhấn nút.
Đầu ra:
Thêm dữ liệu ngẫu nhiên vào bảng khi nhấn nút.
Code Python
import tkinter as tk
from tkinter import ttk
import random
def add_random_data():
data = [str(random.randint(1, 100)) for _ in range(3)]
tree.insert("", "end", values=data)
Tóm tắt
Nhập thư viện Tkinter và Pillow (import tkinter as tk, from
tkinter import ttk, import random).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề và kích thước tối thiểu cho cửa sổ (window.title và
window.minsize).
Tạo frame để chứa bảng và thanh cuộn (tk.Frame).
Tạo bảng (ttk.Treeview) và định nghĩa các cột.
Tạo thanh cuộn cho bảng (ttk.Scrollbar).
Tạo nút bấm và liên kết sự kiện nhấn nút với hàm thêm dữ liệu
ngẫu nhiên (tk.Button và add_button.pack).
Định nghĩa hàm thêm dữ liệu ngẫu nhiên (add_random_data).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một bảng và một nút bấm
để thêm dữ liệu ngẫu nhiên vào bảng. Khi dữ liệu trong bảng vượt
quá kích thước cửa sổ, thanh cuộn sẽ xuất hiện để cho phép người
dùng xem toàn bộ nội dung.
159 - Viết chương trình để thêm đồ thị
vào cửa sổ GUI
Thuật toán:
Đầu vào:
Dữ liệu giả về nhiệt độ và lượng mưa trong 12 tháng.
Đầu ra:
Hiển thị đồ thị về nhiệt độ và lượng mưa trong cửa sổ GUI.
# Thêm legend
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
Tóm tắt
Nhập thư viện Tkinter và Matplotlib (import tkinter as tk, from
tkinter import ttk, import matplotlib.pyplot as plt, from
matplotlib.backends.backend_tkagg import
FigureCanvasTkAgg).
Khai báo dữ liệu giả về nhiệt độ và lượng mưa trong 12 tháng.
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề và kích thước tối thiểu cho cửa sổ (window.title và
window.minsize).
Tạo figure và axes để vẽ đồ thị (plt.subplots).
Vẽ đồ thị nhiệt độ và lượng mưa (ax1.plot và ax2.plot).
Đặt nhãn cho trục x và y, thêm chú thích cho đồ thị
(ax1.set_xlabel, ax1.set_ylabel, ax2.set_ylabel, ax1.legend,
ax2.legend).
Tạo canvas để nhúng đồ thị vào Tkinter (FigureCanvasTkAgg).
Đóng gói và hiển thị canvas trong cửa sổ
(canvas.get_tk_widget().pack).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một cửa sổ GUI với một đồ thị hiển thị dữ liệu
giả về nhiệt độ trung bình và lượng mưa trong 12 tháng của một
năm.
160 - Viết chương trình để tạo ứng
dụng máy tính đơn giản với GUI
Thuật toán:
Đầu vào:
Các biểu thức toán học do người dùng nhập vào.
Đầu ra:
Kết quả của các phép toán.
def click_button(item):
global expression
expression += str(item)
input_text.set(expression)
def clear():
global expression
expression = ""
input_text.set("")
def calculate():
global expression
try:
result = str(eval(expression))
input_text.set(result)
expression = result
except Exception as e:
input_text.set("error")
expression = ""
expression = ""
input_text = tk.StringVar()
Tóm tắt
Nhập thư viện Tkinter (import tkinter as tk).
Tạo cửa sổ chính với tk.Tk().
Đặt tiêu đề và kích thước cho cửa sổ (window.title và
window.geometry).
Khởi tạo biến biểu thức và biến hiển thị (expression và
input_text).
Tạo khung và màn hình hiển thị (tk.Frame và tk.Entry).
Tạo khung và thêm các nút với các phép toán và số (tk.Button
và btns_frame.pack).
Định nghĩa hàm để xử lý sự kiện nhấn nút, xóa màn hình và tính
toán kết quả (click_button, clear, calculate).
Bắt đầu vòng lặp chính của Tkinter (window.mainloop()).
Chương trình này tạo một ứng dụng máy tính đơn giản với giao diện
người dùng cho phép thực hiện các phép toán cơ bản như cộng,
trừ, nhân, chia.
Chương 17 : Bài tập tổng hợp
161. Viết chương trình để quản lý danh sách học sinh.
162. Viết chương trình để quản lý thư viện sách.
163. Viết chương trình để quản lý cửa hàng bán lẻ.
164. Viết chương trình để quản lý kho hàng.
165. Viết chương trình để quản lý nhân viên.
166. Viết chương trình để quản lý lịch học.
167. Viết chương trình để quản lý điểm thi.
168. Viết chương trình để quản lý thông tin cá nhân.
169. Viết chương trình để quản lý thu chi cá nhân.
170. Viết chương trình để quản lý công việc hàng ngày.
161 - Viết chương trình để quản lý
danh sách học sinh
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý danh sách học sinh.
Đầu ra
Thông tin danh sách học sinh được hiển thị theo các yêu cầu từ
người dùng.
Code Python
Học sinh
class HocSinh:
def __init__(self, ten, tuoi, lop):
self.ten = ten
self.tuoi = tuoi
self.lop = lop
def __str__(self):
return f"Học sinh: {self.ten}, Tuổi: {self.tuoi},
Lớp: {self.lop}"
class QuanLyHocSinh:
def __init__(self):
self.danh_sach_hoc_sinh = []
def hien_thi_danh_sach(self):
for hoc_sinh in self.danh_sach_hoc_sinh:
print(hoc_sinh)
Menu chương trình
def menu():
qlhs = QuanLyHocSinh()
while True:
print("\n1. Thêm học sinh")
print("2. Xóa học sinh")
print("3. Hiển thị danh sách học sinh")
print("4. Thoát")
lua_chon = input("Chọn một tùy chọn: ")
if lua_chon == '1':
ten = input("Nhập tên học sinh: ")
tuoi = input("Nhập tuổi học sinh: ")
lop = input("Nhập lớp học sinh: ")
hoc_sinh = HocSinh(ten, tuoi, lop)
qlhs.them_hoc_sinh(hoc_sinh)
print("Đã thêm học sinh.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
Giải thích code
1. Định nghĩa lớp HocSinh:
__init__: Hàm khởi tạo với các tham số tên, tuổi và lớp.
__str__: Phương thức để hiển thị thông tin học sinh.
3. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý danh sách học sinh bằng Python sử dụng
hướng đối tượng để tạo lớp HọcSinh và QuanLyHocSinh, cung cấp
các chức năng thêm, xóa, và hiển thị danh sách học sinh qua giao
diện người dùng đơn giản.
162 - Viết chương trình để quản lý thư
viện sách
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý thư viện.
Đầu ra
Thông tin về sách và người mượn được hiển thị theo các yêu
cầu từ người dùng.
Code Python
Sách
class Sach:
def __init__(self, tieu_de, tac_gia):
self.tieu_de = tieu_de
self.tac_gia = tac_gia
self.da_muon = False
def __str__(self):
trang_thai = "Đã mượn" if self.da_muon else "Chưa
mượn"
return f"Sách: {self.tieu_de}, Tác giả:
{self.tac_gia}, Trạng thái: {trang_thai}"
def __str__(self):
danh_sach = ", ".join(sach.tieu_de for sach in
self.danh_sach_sach_muon)
return f"Người mượn: {self.ten}, Sách đã mượn:
{danh_sach}"
def hien_thi_danh_sach_sach(self):
for sach in self.danh_sach_sach:
print(sach)
def hien_thi_danh_sach_nguoi_muon(self):
for nguoi_muon in self.danh_sach_nguoi_muon:
print(nguoi_muon)
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tiêu đề, tác giả và
trạng thái mượn.
__str__: Phương thức để hiển thị thông tin sách.
4. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Chương trình quản lý thư viện sách bằng Python sử dụng hướng đối
tượng để tạo các lớp Sach, NguoiMuon và QuanLyThuVien, cung cấp
các chức năng thêm sách, thêm người mượn, mượn sách, trả sách
và hiển thị danh sách sách và người mượn qua giao diện người
dùng đơn giản.
163 - Viết chương trình để quản lý cửa
hàng bán lẻ
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý cửa hàng.
Đầu ra
Thông tin về hàng hóa và đơn hàng được hiển thị theo các yêu
cầu từ người dùng.
Code Python
Hàng hóa
class HangHoa:
def __init__(self, ten, gia, so_luong):
self.ten = ten
self.gia = gia
self.so_luong = so_luong
def __str__(self):
return f"Hàng hóa: {self.ten}, Giá: {self.gia}, Số
lượng tồn kho: {self.so_luong}"
Đơn hàng
class DonHang:
def __init__(self):
self.danh_sach_hang_hoa = []
self.tong_tien = 0
def __str__(self):
danh_sach = ", ".join(f"{hang_hoa.ten} (x{so_luong})"
for hang_hoa, so_luong in self.danh_sach_hang_hoa)
return f"Đơn hàng: {danh_sach}, Tổng tiền:
{self.tong_tien}"
def hien_thi_danh_sach_hang_hoa(self):
for hang_hoa in self.danh_sach_hang_hoa:
print(hang_hoa)
def hien_thi_danh_sach_don_hang(self):
for don_hang in self.danh_sach_don_hang:
print(don_hang)
if lua_chon == '1':
ten = input("Nhập tên hàng hóa: ")
gia = float(input("Nhập giá hàng hóa: "))
so_luong = int(input("Nhập số lượng tồn kho: "))
hang_hoa = HangHoa(ten, gia, so_luong)
qlch.them_hang_hoa(hang_hoa)
print("Đã thêm hàng hóa.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên, giá và số lượng
tồn kho.
__str__: Phương thức để hiển thị thông tin hàng hóa.
__init__: Hàm khởi tạo với danh sách hàng hóa và tổng
tiền.
them_hang_hoa: Thêm hàng hóa vào đơn hàng và cập nhật
số lượng và tổng tiền.
__str__: Phương thức để hiển thị thông tin đơn hàng.
3. Định nghĩa lớp QuanLyCuaHang:
__init__: Hàm khởi tạo để khởi tạo danh sách hàng hóa và
đơn hàng.
them_hang_hoa: Thêm hàng hóa vào danh sách.
tao_don_hang: Tạo đơn hàng mới dựa trên danh sách hàng
hóa cần mua.
hien_thi_danh_sach_hang_hoa: Hiển thị danh sách hàng hóa.
hien_thi_danh_sach_don_hang: Hiển thị danh sách đơn
hàng.
tim_hang_hoa: Tìm hàng hóa theo tên.
4. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý cửa hàng bán lẻ bằng Python sử dụng hướng
đối tượng để tạo các lớp HangHoa, DonHang và QuanLyCuaHang, cung
cấp các chức năng thêm hàng hóa, tạo đơn hàng, hiển thị danh
sách hàng hóa và đơn hàng qua giao diện người dùng đơn giản.
164 - Viết chương trình để quản lý kho
hàng
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý kho hàng.
Đầu ra
Thông tin về hàng hóa được hiển thị theo các yêu cầu từ người
dùng.
Code Python
Hàng hóa
class HangHoa:
def __init__(self, ten, gia, so_luong):
self.ten = ten
self.gia = gia
self.so_luong = so_luong
def __str__(self):
return f"Hàng hóa: {self.ten}, Giá: {self.gia}, Số
lượng tồn kho: {self.so_luong}"
Quản lý kho
class QuanLyKho:
def __init__(self):
self.danh_sach_hang_hoa = []
def hien_thi_danh_sach_hang_hoa(self):
for hang_hoa in self.danh_sach_hang_hoa:
print(hang_hoa)
if lua_chon == '1':
ten = input("Nhập tên hàng hóa: ")
gia = float(input("Nhập giá hàng hóa: "))
so_luong = int(input("Nhập số lượng tồn kho: "))
hang_hoa = HangHoa(ten, gia, so_luong)
qlk.them_hang_hoa(hang_hoa)
print("Đã thêm hàng hóa.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên, giá và số lượng
tồn kho.
__str__: Phương thức để hiển thị thông tin hàng hóa.
3. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý kho hàng bằng Python sử dụng hướng đối
tượng để tạo các lớp HangHoa và QuanLyKho, cung cấp các chức
năng thêm hàng hóa, nhập hàng, xuất hàng và hiển thị danh sách
hàng hóa qua giao diện người dùng đơn giản.
165 - Viết chương trình để quản lý
nhân viên
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý nhân viên và phòng ban.
Đầu ra
Thông tin về nhân viên và phòng ban được hiển thị theo các yêu
cầu từ người dùng.
Code Python
Nhân viên
class NhanVien:
def __init__(self, ten, tuoi, vi_tri):
self.ten = ten
self.tuoi = tuoi
self.vi_tri = vi_tri
self.phong_ban = None
def __str__(self):
phong_ban = self.phong_ban.ten if self.phong_ban else
"Chưa có"
return f"Nhân viên: {self.ten}, Tuổi: {self.tuoi}, Vị
trí: {self.vi_tri}, Phòng ban: {phong_ban}"
Phòng ban
class PhongBan:
def __init__(self, ten):
self.ten = ten
self.danh_sach_nhan_vien = []
def __str__(self):
nhan_vien_str = ', '.join(nv.ten for nv in
self.danh_sach_nhan_vien)
return f"Phòng ban: {self.ten}, Nhân viên:
{nhan_vien_str}"
Quản lý nhân sự
class QuanLyNhanSu:
def __init__(self):
self.danh_sach_nhan_vien = []
self.danh_sach_phong_ban = []
def hien_thi_danh_sach_nhan_vien(self):
for nhan_vien in self.danh_sach_nhan_vien:
print(nhan_vien)
def hien_thi_danh_sach_phong_ban(self):
for phong_ban in self.danh_sach_phong_ban:
print(phong_ban)
if lua_chon == '1':
ten = input("Nhập tên nhân viên: ")
tuoi = int(input("Nhập tuổi nhân viên: "))
vi_tri = input("Nhập vị trí công việc của nhân
viên: ")
nhan_vien = NhanVien(ten, tuoi, vi_tri)
qlns.them_nhan_vien(nhan_vien)
print("Đã thêm nhân viên.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên, tuổi, vị trí và
phòng ban (ban đầu là None).
__str__: Phương thức để hiển thị thông tin nhân viên, bao
gồm cả phòng ban (nếu có).
__init__: Hàm khởi tạo để khởi tạo danh sách nhân viên và
phòng ban.
them_nhan_vien: Thêm nhân viên vào danh sách.
them_phong_ban: Thêm phòng ban vào danh sách.
gan_nhan_vien_vao_phong_ban: Gán nhân viên vào phòng
ban, cập nhật thông tin cho nhân viên và phòng ban.
hien_thi_danh_sach_nhan_vien: Hiển thị danh sách nhân
viên.
hien_thi_danh_sach_phong_ban: Hiển thị danh sách phòng
ban.
tim_nhan_vien: Tìm nhân viên theo tên.
tim_phong_ban: Tìm phòng ban theo tên.
4. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý nhân viên bằng Python sử dụng hướng đối
tượng để tạo các lớp NhanVien, PhongBan và QuanLyNhanSu, cung cấp
các chức năng thêm nhân viên, thêm phòng ban, gán nhân viên vào
phòng ban, hiển thị danh sách nhân viên và phòng ban qua giao
diện người dùng đơn giản.
166 - Viết chương trình để quản lý lịch
học
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý lịch học.
Đầu ra
Thông tin về lịch học được hiển thị theo các yêu cầu từ người
dùng.
Code Python
Môn học
class MonHoc:
def __init__(self, ten, ma_mon_hoc):
self.ten = ten
self.ma_mon_hoc = ma_mon_hoc
def __str__(self):
return f"Môn học: {self.ten}, Mã môn học:
{self.ma_mon_hoc}"
Lớp học
class LopHoc:
def __init__(self, mon_hoc, thoi_gian, phong_hoc):
self.mon_hoc = mon_hoc
self.thoi_gian = thoi_gian
self.phong_hoc = phong_hoc
def __str__(self):
return f"Lớp học: {self.mon_hoc.ten}, Thời gian:
{self.thoi_gian}, Phòng học: {self.phong_hoc}"
Quản lý học sinh
class QuanLyLichHoc:
def __init__(self):
self.danh_sach_mon_hoc = []
self.danh_sach_lop_hoc = []
def hien_thi_lich_hoc(self):
for lop_hoc in self.danh_sach_lop_hoc:
print(lop_hoc)
if lua_chon == '1':
ten = input("Nhập tên môn học: ")
ma_mon_hoc = input("Nhập mã môn học: ")
mon_hoc = MonHoc(ten, ma_mon_hoc)
qllh.them_mon_hoc(mon_hoc)
print("Đã thêm môn học.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên môn học và mã
môn học.
__str__: Phương thức để hiển thị thông tin môn học.
2. Định nghĩa lớp LopHoc:
__init__: Hàm khởi tạo với các tham số môn học, thời gian
và phòng học.
__str__: Phương thức để hiển thị thông tin lớp học.
__init__: Hàm khởi tạo để khởi tạo danh sách môn học và
lớp học.
them_mon_hoc: Thêm môn học vào danh sách.
tao_lop_hoc: Tạo lớp học mới và thêm vào danh sách lớp
học.
hien_thi_lich_hoc: Hiển thị danh sách lớp học.
tim_mon_hoc: Tìm môn học theo mã môn học.
4. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý lịch học bằng Python sử dụng hướng đối
tượng để tạo các lớp MonHoc, LopHoc và QuanLyLichHoc, cung cấp
các chức năng thêm môn học, tạo lớp học, sắp xếp lịch học và hiển
thị lịch học qua giao diện người dùng đơn giản.
167 - Viết chương trình để quản lý
điểm thi
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý điểm thi.
Đầu ra
Thông tin về điểm thi của sinh viên theo từng kỳ thi được hiển thị
theo các yêu cầu từ người dùng.
Code Python
Sinh Viên
class SinhVien:
def __init__(self, ten, ma_sv):
self.ten = ten
self.ma_sv = ma_sv
def __str__(self):
return f"Sinh viên: {self.ten}, Mã sinh viên:
{self.ma_sv}"
Môn học
class MonHoc:
def __init__(self, ten, ma_mh):
self.ten = ten
self.ma_mh = ma_mh
def __str__(self):
return f"Môn học: {self.ten}, Mã môn học:
{self.ma_mh}"
Kỳ Thi
class KyThi:
def __init__(self, ten, ma_ky_thi):
self.ten = ten
self.ma_ky_thi = ma_ky_thi
def __str__(self):
return f"Kỳ thi: {self.ten}, Mã kỳ thi:
{self.ma_ky_thi}"
class DiemThi:
def __init__(self, sinh_vien, mon_hoc, ky_thi, diem):
self.sinh_vien = sinh_vien
self.mon_hoc = mon_hoc
self.ky_thi = ky_thi
self.diem = diem
def __str__(self):
return f"Sinh viên: {self.sinh_vien.ten}, Môn học:
{self.mon_hoc.ten}, Kỳ thi: {self.ky_thi.ten}, Điểm:
{self.diem}"
if lua_chon == '1':
ten = input("Nhập tên sinh viên: ")
ma_sv = input("Nhập mã sinh viên: ")
sinh_vien = SinhVien(ten, ma_sv)
qldt.them_sinh_vien(sinh_vien)
print("Đã thêm sinh viên.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên và mã sinh viên.
__str__: Phương thức để hiển thị thông tin sinh viên.
__init__: Hàm khởi tạo với các tham số tên môn học và mã
môn học.
__str__: Phương thức để hiển thị thông tin môn học.
__init__: Hàm khởi tạo với các tham số sinh viên, môn học,
kỳ thi và điểm.
__str__: Phương thức để hiển thị thông tin điểm thi.
6. Hàm menu:
Tạo đối tượng QuanLyDiemThi.
Vòng lặp để hiển thị menu và nhận lựa chọn từ người dùng.
Thêm sinh viên, thêm môn học, thêm kỳ thi, ghi điểm và hiển
thị điểm thi dựa trên lựa chọn của người dùng.
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý điểm thi bằng Python sử dụng hướng đối
tượng để tạo các lớp SinhVien, MonHoc, KyThi, DiemThi và
QuanLyDiemThi, cung cấp các chức năng thêm sinh viên, thêm môn
học, thêm kỳ thi, ghi điểm và hiển thị điểm thi qua giao diện người
dùng đơn giản.
168 - Viết chương trình để quản lý
thông tin cá nhân
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý thông tin cá nhân.
Đầu ra
Thông tin về cá nhân được hiển thị theo các yêu cầu từ người
dùng.
Code Python
def __str__(self):
return (f"Tên: {self.ten}, Tuổi: {self.tuoi}, Địa
chỉ: {self.dia_chi}, "
f"Số điện thoại: {self.so_dien_thoai}, Email:
{self.email}")
Quản lý thông tin cá nhân
class QuanLyThongTinCaNhan:
def __init__(self):
self.danh_sach_thong_tin = []
if lua_chon == '1':
ten = input("Nhập tên: ")
tuoi = int(input("Nhập tuổi: "))
dia_chi = input("Nhập địa chỉ: ")
so_dien_thoai = input("Nhập số điện thoại: ")
email = input("Nhập email: ")
thong_tin = ThongTinCaNhan(ten, tuoi, dia_chi,
so_dien_thoai, email)
qlttcn.them_thong_tin(thong_tin)
print("Đã thêm thông tin cá nhân.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các tham số tên, tuổi, địa chỉ, số
điện thoại và email.
cap_nhat: Phương thức để cập nhật thông tin cá nhân.
__str__: Phương thức để hiển thị thông tin cá nhân.
__init__: Hàm khởi tạo để khởi tạo danh sách thông tin cá
nhân.
them_thong_tin:Thêm thông tin cá nhân vào danh sách.
cap_nhat_thong_tin: Cập nhật thông tin cá nhân.
hien_thi_thong_tin: Hiển thị thông tin cá nhân.
3. Hàm menu:
Tóm tắt
Lớp: Định nghĩa và sử dụng các lớp trong Python.
Phương thức: Tạo và sử dụng các phương thức trong lớp.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý thu chi.
Đầu ra
Thông tin về thu chi của mỗi tháng được hiển thị theo yêu cầu từ
người dùng.
Code Python
Giao dịch
class GiaoDich:
def __init__(self, so_tien, loai, mo_ta):
self.so_tien = so_tien
self.loai = loai
self.mo_ta = mo_ta
def __str__(self):
return f"Số tiền: {self.so_tien}, Loại: {self.loai},
Mô tả: {self.mo_ta}"
Tháng
class Thang:
def __init__(self, thang):
self.thang = thang
self.danh_sach_giao_dich = []
def hien_thi_thu_chi(self):
print(f"----- Tháng {self.thang} -----")
for giao_dich in self.danh_sach_giao_dich:
print(giao_dich)
self.danh_sach_thang[thang].them_giao_dich(giao_dich)
return True
return False
if lua_chon == '1':
thang = input("Nhập tháng (vd: 01, 02, ..., 12):
")
if thang not in qltc.danh_sach_thang:
qltc.them_thang(thang)
loai_gd = input("Nhập loại giao dịch (thu/chi):
")
so_tien = float(input("Nhập số tiền: "))
mo_ta = input("Nhập mô tả: ")
giao_dich = GiaoDich(so_tien, loai_gd, mo_ta)
if qltc.them_giao_dich(thang, giao_dich):
print("Đã thêm thông tin thu chi.")
else:
print("Lỗi: Tháng không tồn tại.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các thuộc tính số tiền, loại giao
dịch (thu/chi) và mô tả.
__str__: Phương thức để hiển thị thông tin giao dịch.
__init__: Hàm khởi tạo để khởi tạo danh sách các tháng và
gán mỗi tháng một đối tượng Thang.
them_thang:Thêm một tháng mới vào danh sách.
them_giao_dich: Thêm một giao dịch vào danh sách thu chi
của tháng.
hien_thi_thu_chi_theo_thang: Hiển thị thông tin thu chi của
một tháng.
4. Hàm menu:
Tóm tắt
Lớp: Sử dụng lớp để tổ chức và quản lý dữ liệu.
Phương thức: Sử dụng phương thức để thực hiện các hoạt
động trên dữ liệu.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu và xử lý lựa chọn người dùng.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý thu chi cá nhân theo từng tháng bằng Python
sử dụng hướng đối tượng để tạo các lớp GiaoDich, Thang và
QuanLyThuChi, cung cấp các chức năng thêm thông tin thu chi và
hiển thị thông tin thu chi theo từng tháng qua giao diện người dùng.
170 - Viết chương trình để quản lý
công việc hàng ngày
Thuật toán
Đầu vào
Không có đầu vào cụ thể, chương trình sẽ nhận các lệnh từ
người dùng để quản lý công việc hàng ngày.
Đầu ra
Thông tin về công việc được hiển thị theo yêu cầu từ người
dùng.
Code Python
Công việc
class CongViec:
def __init__(self, ten, mo_ta, hoan_thanh=False):
self.ten = ten
self.mo_ta = mo_ta
self.hoan_thanh = hoan_thanh
def __str__(self):
trang_thai = "Hoàn thành" if self.hoan_thanh else
"Chưa hoàn thành"
return f"Tên công việc: {self.ten}, Mô tả:
{self.mo_ta}, Trạng thái: {trang_thai}"
def hien_thi_danh_sach_cong_viec(self):
if not self.danh_sach_cong_viec:
print("Không có công việc nào.")
else:
for cv in self.danh_sach_cong_viec:
print(cv)
if lua_chon == '1':
ten = input("Nhập tên công việc: ")
mo_ta = input("Nhập mô tả công việc: ")
cong_viec = CongViec(ten, mo_ta)
qlcv.them_cong_viec(cong_viec)
print("Đã thêm công việc mới.")
elif lua_chon == '2':
ten = input("Nhập tên công việc cần chỉnh sửa: ")
ten_moi = input("Nhập tên mới (hoặc nhấn Enter để
giữ nguyên): ")
mo_ta_moi = input("Nhập mô tả mới (hoặc nhấn
Enter để giữ nguyên): ")
hoan_thanh = input("Công việc đã hoàn thành?
(yes/no): ")
hoan_thanh = True if hoan_thanh.lower() == "yes"
else False
cap_nhat_thanh_cong =
qlcv.cap_nhat_cong_viec(ten, ten_moi=ten_moi,
mo_ta=mo_ta_moi, hoan_thanh=hoan_thanh)
if cap_nhat_thanh_cong:
print("Đã cập nhật công việc.")
else:
print("Không tìm thấy công việc.")
else:
print("Lựa chọn không hợp lệ. Vui lòng chọn
lại.")
if __name__ == "__main__":
menu()
__init__: Hàm khởi tạo với các thuộc tính như tên công
việc, mô tả và trạng thái hoàn thành.
cap_nhat: Phương thức để cập nhật thông tin công việc.
__str__: Phương thức để hiển thị thông tin công việc.
3. Hàm menu:
Tóm tắt
Lớp: Sử dụng lớp để tổ chức và quản lý dữ liệu.
Phương thức: Sử dụng phương thức để thực hiện các hoạt
động trên dữ liệu.
Vòng lặp và điều kiện: Sử dụng vòng lặp và câu lệnh điều kiện
để tạo menu và xử lý lựa chọn người dùng.
Nhập và xuất dữ liệu: Sử dụng input để nhận dữ liệu từ người
dùng và print để hiển thị thông tin.
Chương trình quản lý công việc hàng ngày bằng Python sử dụng
hướng đối tượng để tạo các lớp CongViec và QuanLyCongViec, cung
cấp các chức năng thêm công việc mới, chỉnh sửa công việc, xóa
công việc và hiển thị danh sách công việc thông qua giao diện người
dùng.
Chương 18 : Decorator
171. Viết chương trình để tạo một decorator đơn giản.
172. Viết chương trình để tạo một decorator chấp nhận đối số.
173. Viết chương trình để tạo một decorator với nhiều hàm trả về.
174. Viết chương trình để tạo một decorator gọi một hàm nhiều lần.
175. Viết chương trình để tạo một decorator sửa đổi giá trị trả về của
một hàm.
176. Viết chương trình để tạo một decorator kiểm tra thời gian thực
thi của một hàm.
177. Viết chương trình để tạo một decorator giới hạn số lần gọi một
hàm.
178. Viết chương trình để tạo một decorator chuyển đổi giá trị trả về
thành một kiểu dữ liệu khác.
179. Viết chương trình để tạo một decorator nhận một đối số từ bên
ngoài.
180. Viết chương trình để tạo một decorator sử dụng hàm generator.
171 - Viết chương trình Python để tạo
một decorator đơn giản
Decorator
Decorator trong Python là một cách mạnh mẽ để thay đổi hoặc mở
rộng hành vi của một hàm hoặc phương thức mà không cần thay đổi
mã nguồn của nó. Decorator thực chất là một hàm cao cấp, nghĩa là
nó là một hàm nhận vào một hàm khác làm đối số và trả về một hàm
mới đã được “trang trí” hoặc “bổ sung” một số chức năng.
Thuật toán
Đầu vào
Một hàm mà chúng ta muốn áp dụng decorator lên.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator.
Các bước thực hiện
1. Định nghĩa decorator.
2. Trong decorator, định nghĩa một hàm lồng bên trong để bổ sung
thêm chức năng cho hàm gốc.
3. Trả về hàm đã được bổ sung chức năng.
4. Áp dụng decorator lên một hàm cụ thể và kiểm tra kết quả.
Code Python
def my_decorator(func):
def wrapper():
print("Something is happening before the function is
called.")
func()
print("Something is happening after the function is
called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
Bổ sung
Để tạo nhiều decorator hoặc decorator phức tạp hơn, chúng ta
có thể thêm tham số cho decorator hoặc áp dụng nhiều
decorator lên một hàm.
Tóm tắt
Decorator là một hàm dùng để bổ sung thêm chức năng cho một
hàm khác mà không thay đổi mã nguồn của hàm đó.
Decorator được định nghĩa bằng cách tạo một hàm lồng bên
trong và trả về hàm này.
Sử dụng ký hiệu @decorator_name để áp dụng decorator lên một
hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator đơn
giản trong Python.
172 - Viết chương trình để tạo một
decorator chấp nhận đối số
Thuật toán
Đầu vào
Một hàm cần trang trí và các đối số cho decorator.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator dựa
trên các đối số cung cấp.
@repeat(3)
def say_hello():
print("Hello!")
*args là một cú pháp đặc biệt cho phép hàm nhận một số lượng
không xác định các đối số không có tên. Các đối số này được
truy cập dưới dạng một tuple.
**kwargs là một cú pháp đặc biệt cho phép hàm nhận một số
lượng không xác định các đối số có tên. Các đối số này được
truy cập dưới dạng một từ điển.
Ví dụ, nếu bạn gọi wrapper(1, 2, 3, a=4, b=5), thì trong hàm
wrapper, args sẽ là một tuple (1, 2, 3) và kwargs sẽ là một từ điển
{'a': 4, 'b': 5}.
Hàm wrapper thường được sử dụng trong các decorator, nơi nó bao
bọc hàm gốc và thêm một số hành vi bổ sung, trong khi vẫn cho
phép hàm gốc được gọi với bất kỳ đối số nào.
Bổ sung
Một ví dụ khác, để tạo một decorator chấp nhận đối số mà không sử
dụng vòng lặp. Dưới đây là một ví dụ về decorator nhận đối số và
không sử dụng vòng lặp:
def multiply_by(factor):
def multiply_decorator(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs) * factor
return wrapper
return multiply_decorator
@multiply_by(2)
def add_numbers(a, b):
return a + b
Tóm tắt
Tạo decorator có thể chấp nhận đối số bằng cách định nghĩa
một hàm decorator chính nhận đối số và trả về một decorator
phụ.
Decorator phụ định nghĩa một hàm lồng bên trong để thực hiện
chức năng bổ sung dựa trên đối số cung cấp.
Sử dụng ký hiệu @decorator_name(argument) để áp dụng
decorator có đối số lên một hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator
chấp nhận đối số để lặp lại việc gọi một hàm nhiều lần.
173 - Viết chương trình để tạo một
decorator với nhiều hàm trả về
Thuật toán:
Đầu vào: Một hàm và một đối số cho decorator.
Đầu ra: Một hàm mới được trả về từ decorator dựa trên đối số.
Các bước thực hiện:
1. Định nghĩa decorator nhận đối số.
2. Trong decorator, định nghĩa một hàm wrapper nhận hàm cần
trang trí.
3. Trong hàm wrapper, kiểm tra đối số và trả về hàm tương
ứng.
4. Áp dụng decorator lên hàm cần trang trí.
Code Python
def route(path):
def decorator(func):
def wrapper(*args, **kwargs):
if path == "/home":
return home(*args, **kwargs)
elif path == "/about":
return about(*args, **kwargs)
else:
return func(*args, **kwargs)
return wrapper
return decorator
def home(name):
return f"Welcome to the home page, {name}!"
def about(name):
return f"This is the about page. Nice to meet you,
{name}!"
@route("/home")
def greet(name):
return f"Hello, {name}!"
*args là một cú pháp đặc biệt cho phép hàm nhận một số lượng
không xác định các đối số không có tên. Các đối số này được
truy cập dưới dạng một tuple.
**kwargs là một cú pháp đặc biệt cho phép hàm nhận một số
lượng không xác định các đối số có tên. Các đối số này được
truy cập dưới dạng một từ điển.
Ví dụ, nếu bạn gọi wrapper(1, 2, 3, a=4, b=5), thì trong hàm
wrapper, args sẽ là một tuple (1, 2, 3) và kwargs sẽ là một từ điển
{'a': 4, 'b': 5}.
Hàm wrapper thường được sử dụng trong các decorator, nơi nó bao
bọc hàm gốc và thêm một số hành vi bổ sung, trong khi vẫn cho
phép hàm gốc được gọi với bất kỳ đối số nào.
Bổ sung
Cách tiếp cận này có thể được mở rộng để xử lý nhiều đối số
hơn hoặc để xử lý các hàm khác nhau dựa trên các điều kiện
khác nhau.
Tóm tắt:
Chương trình này minh họa cách sử dụng decorator trong
Python để thay đổi hành vi của một hàm dựa trên đối số của
decorator.
Chương trình này cũng minh họa cách sử dụng hàm wrapper
trong decorator để kiểm tra đối số và trả về hàm tương ứng.
Chương trình này cung cấp một ví dụ về cách sử dụng decorator
để thực hiện logic điều hướng đơn giản, một kỹ thuật thường
được sử dụng trong các ứng dụng web.
Chương trình này minh họa cách sử dụng decorator trong Python để
thay đổi hành vi của một hàm dựa trên đối số của decorator.
174 - Viết chương trình để tạo một
decorator gọi một hàm nhiều lần
Thuật toán
Đầu vào
Một hàm cần trang trí.
Số lần cần gọi hàm đó.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator để gọi
nhiều lần.
@repeat(3)
def say_hello():
print("Hello!")
Bổ sung
Có thể áp dụng decorator repeat với các số lần khác nhau để
gọi các hàm khác nhau nhiều lần.
Tóm tắt
Tạo decorator có thể gọi hàm nhiều lần bằng cách định nghĩa
một hàm decorator chính nhận đối số và trả về một decorator
phụ.
Decorator phụ định nghĩa một hàm lồng bên trong để thực hiện
việc gọi hàm nhiều lần dựa trên đối số cung cấp.
Sử dụng ký hiệu @decorator_name(argument) để áp dụng
decorator có đối số lên một hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator để
gọi một hàm nhiều lần, giúp bổ sung chức năng cho hàm một cách
linh hoạt.
175 - Viết chương trình để tạo một
decorator sửa đổi giá trị trả về của
một hàm
Thuật toán
Đầu vào
Một hàm cần trang trí.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator để sửa
đổi giá trị trả về.
@modify_return_value_decorator
def get_number():
return 5
Bổ sung
Có thể thay đổi logic sửa đổi giá trị trả về trong hàm wrapper để
thực hiện các thao tác khác như thêm một giá trị cố định, chuyển
đổi kiểu dữ liệu, hoặc các phép tính phức tạp hơn.
Tóm tắt
Tạo decorator để sửa đổi giá trị trả về của hàm bằng cách định
nghĩa một hàm decorator nhận vào hàm và trả về một hàm lồng
bên trong.
Hàm lồng bên trong thực hiện việc gọi hàm gốc, sửa đổi giá trị
trả về và trả về kết quả đã được sửa đổi.
Sử dụng ký hiệu @decorator_name để áp dụng decorator lên một
hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator để
sửa đổi giá trị trả về của một hàm, giúp bổ sung chức năng cho hàm
một cách linh hoạt.
176 - Viết chương trình để tạo một
decorator kiểm tra thời gian thực thi
của một hàm
Thuật toán
Đầu vào
Một hàm cần trang trí.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator để kiểm
tra thời gian thực thi.
Code Python
import time
def timing_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time() # Lấy thời gian bắt đầu
result = func(*args, **kwargs) # Gọi hàm gốc
end_time = time.time() # Lấy thời gian kết thúc
execution_time = end_time - start_time # Tính toán
thời gian thực thi
print(f"Function {func.__name__} took
{execution_time:.6f} seconds to execute")
return result
return wrapper
@timing_decorator
def example_function():
time.sleep(2) # Giả lập một công việc tốn thời gian
return "Function execution complete"
Tóm tắt
Sử dụng module time để đo thời gian thực thi của hàm.
Tạo decorator bằng cách định nghĩa một hàm nhận vào hàm và
trả về một hàm lồng bên trong.
Hàm lồng bên trong thực hiện việc đo thời gian thực thi của hàm
và in ra kết quả.
Sử dụng ký hiệu @decorator_name để áp dụng decorator lên một
hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator để
kiểm tra thời gian thực thi của một hàm, giúp theo dõi hiệu suất của
hàm một cách dễ dàng.
177 - Viết chương trình để tạo một
decorator giới hạn số lần gọi một hàm
Thuật toán
Đầu vào
Một hàm cần trang trí.
Số lần tối đa có thể gọi hàm đó.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator để giới
hạn số lần gọi.
Code Python
def limit_calls(max_calls):
def decorator(func):
func._call_count = 0 # Biến đếm số lần gọi hàm
return wrapper
return decorator
@limit_calls(3)
def example_function():
print("Function is called.")
_call_count không phải là một thuộc tính có sẵn của hàm trong
Python, nhưng Python cho phép bạn thêm các thuộc tính tùy
chỉnh vào hầu hết các đối tượng, bao gồm cả hàm. Điều này rất
hữu ích khi bạn muốn lưu trữ một số thông tin liên quan đến đối
tượng mà không cần tạo một đối tượng phức tạp hơn.
Trong trường hợp này, func._call_count được khởi tạo với giá
trị 0 khi decorator được áp dụng cho func. Sau đó, mỗi lần
wrapper được gọi, func._call_count tăng lên 1. Nếu
func._call_count đạt đến max_calls, wrapper sẽ ngừng gọi
func và in ra một thông báo.
Bạn có thể coi func._call_count như một biến toàn cục cho
hàm func. Tuy nhiên, nó không phải là một biến toàn cục trong
nghĩa truyền thống, vì nó không có phạm vi toàn cục - bạn không
thể truy cập func._call_count từ bất kỳ đâu trong chương trình
của bạn. Thay vào đó, nó là một thuộc tính của hàm func, và chỉ
có thể được truy cập thông qua func.
Tuy nhiên, giống như một biến toàn cục, func._call_count duy
trì trạng thái của nó giữa các lần gọi hàm, và thay đổi giá trị của
nó sẽ ảnh hưởng đến tất cả các lần gọi hàm sau đó. Điều này
giống như cách một biến toàn cục hoạt động.
Reset
Sau khi số lần gọi đã được đặt lại, chúng ta có thể gọi lại hàm
example_function một lần nữa mà không bị giới hạn bởi số lần gọi
trước đó.
Ví dụ:
# Đặt lại số lần gọi của hàm đã được giới hạn
example_function.reset()
# Wrapper function
def wrapper(*args, **kwargs):
if func._call_count >= max_calls:
print(f"Function {func.__name__} has reached
its call limit.")
return None
func._call_count += 1
return func(*args, **kwargs)
return decorator
Khi một hàm được gọi nhiều lần và đạt đến giới hạn số lần gọi,
decorator sẽ in ra thông báo “Function {func.name} has reached its
call limit.” và trả về None thay vì thực thi hàm gốc. Điều này giúp đảm
bảo rằng hàm chỉ được gọi một số lần nhất định.
Tuy nhiên, đôi khi chúng ta muốn đặt lại số lần gọi của hàm đã được
giới hạn để có thể gọi lại nó. Đó là lúc chúng ta sử dụng hàm reset.
Hàm reset được triển khai trong decorator và được gán cho thuộc
tính reset của hàm bọc (wrapper). Khi gọi
example_function.reset(), nó sẽ đặt lại số lần gọi của
example_function về 0.
Chương trình trên minh họa cách tạo và sử dụng một decorator để
giới hạn số lần gọi một hàm, giúp kiểm soát số lần thực thi của hàm
một cách dễ dàng.
178 - Viết chương trình để tạo một
decorator chuyển đổi giá trị trả về
thành một kiểu dữ liệu khác
Thuật toán
Đầu vào
Một hàm cần trang trí.
Kiểu dữ liệu cần chuyển đổi giá trị trả về.
Đầu ra
Một hàm đã được bổ sung thêm chức năng từ decorator để
chuyển đổi giá trị trả về.
@convert_return_type(str)
def example_function():
return 123
@convert_return_type(list)
def example_function_list():
return 'abc'
Bổ sung
Có thể áp dụng decorator convert_return_type với các kiểu dữ
liệu khác nhau để chuyển đổi giá trị trả về của các hàm khác
nhau.
Tóm tắt
Tạo decorator để chuyển đổi giá trị trả về của hàm bằng cách
định nghĩa một hàm nhận vào hàm và trả về một hàm lồng bên
trong.
Hàm lồng bên trong thực hiện việc chuyển đổi giá trị trả về của
hàm và trả về kết quả đã được chuyển đổi.
Sử dụng ký hiệu @decorator_name(argument) để áp dụng
decorator có đối số lên một hàm cụ thể.
Chương trình trên minh họa cách tạo và sử dụng một decorator để
chuyển đổi giá trị trả về của một hàm, giúp thay đổi kiểu dữ liệu của
kết quả một cách linh hoạt.
179 - Viết chương trình để tạo một
decorator nhận một đối số từ bên
ngoài
Thuật toán:
Đầu vào
Một hàm bất kỳ
Một đối số từ bên ngoài
Đầu ra
Hàm đã được modify bởi decorator
@multiply(3)
def add(a, b):
return a + b
Tóm tắt:
Decorator trong Python là một hàm nhận một hàm khác làm đối
số và trả về một hàm mới đã được modify.
Decorator có thể nhận đối số từ bên ngoài.
Decorator thường được sử dụng để thêm hoặc thay đổi hành vi
của hàm mà không cần sửa đổi code của hàm đó.
Chương trình này minh họa cách tạo một decorator nhận đối số từ
bên ngoài trong Python.
180 - Viết chương trình để tạo một
decorator sử dụng hàm generator
Generator là gì?
Generator trong Python là một loại iterator, nhưng bạn chỉ có thể lặp
qua chúng một lần. Điều này là do chúng không lưu trữ tất cả các
giá trị trong bộ nhớ, chúng tạo ra các giá trị theo yêu cầu.
Thuật toán:
Đầu vào
Một hàm bất kỳ
Đầu ra
Hàm đã được modify bởi decorator
Code Python
def generator_decorator(func):
def inner(*args, **kwargs):
yield from func(*args, **kwargs)
return inner
@generator_decorator
def count_up_to(n):
return (i for i in range(1, n+1))
Bổ sung
Không có cách giải khác.
Tóm tắt:
Generator trong Python là một loại iterator, nhưng bạn chỉ có thể
lặp qua chúng một lần.
Decorator trong Python là một hàm nhận một hàm khác làm đối
số và trả về một hàm mới đã được modify.
Decorator có thể sử dụng hàm generator để modify hàm.
Chương trình này minh họa cách tạo một decorator sử dụng hàm
generator trong Python.
Chương 19 : Iterator
181. Viết chương trình để tạo một iterator từ một list.
182. Viết chương trình để tạo một iterator từ một tuple.
183. Viết chương trình để tạo một iterator từ một chuỗi.
184. Viết chương trình để lặp qua một iterator.
185. Viết chương trình để sử dụng hàm next để truy cập các phần tử
của một iterator.
186. Viết chương trình để tạo một iterator tùy chỉnh.
187. Viết chương trình để sử dụng itertools để tạo ra một
permutation.
188. Viết chương trình để sử dụng itertools để tạo ra một
combination.
189. Viết chương trình để sử dụng itertools để tạo ra một product.
190. Viết chương trình để sử dụng itertools để tạo ra một
combinations_with_replacement.
181 - Viết chương trình để tạo một
iterator từ một list
Thuật toán:
Đầu vào: Một list bất kỳ.
Đầu ra: Một iterator từ list đầu vào.
Các bước thực hiện:
1. Nhận list đầu vào.
2. Tạo iterator từ list đầu vào bằng cách sử dụng hàm iter().
3. Sử dụng iterator để truy xuất từng phần tử trong list cho đến
khi hết phần tử.
Code Python
# Định nghĩa một danh sách
my_list = [1, 2, 3, 4, 5]
Tóm tắt:
list: Danh sách trong Python, một dạng collection.
iter(): Hàm tạo iterator từ một collection.
next(): Hàm lấy phần tử tiếp theo từ một iterator.
StopIteration: Ngoại lệ được ném ra khi không còn phần tử
nào trong iterator.
Vòng lặp while True và khối try-except để duyệt qua tất cả các
phần tử của iterator và xử lý ngoại lệ.
Chương trình này tạo một iterator từ một list và sử dụng nó để duyệt
qua và in ra các phần tử của list tuần tự cho đến khi hết phần tử.
182 - Viết chương trình để tạo một
iterator từ một tuple
Thuật toán:
Đầu vào: Một tuple bất kỳ.
Đầu ra: Từng phần tử của tuple được in ra.
Các bước thực hiện:
1. Nhận tuple đầu vào.
2. Tạo iterator từ tuple đầu vào bằng cách sử dụng hàm
iter().
3. Sử dụng vòng lặp for để duyệt qua các phần tử của iterator
và in ra từng phần tử.
Code Python
# Định nghĩa một tuple
my_tuple = (10, 20, 30, 40, 50)
# Sử dụng vòng lặp for để duyệt qua các phần tử của iterator
for element in my_iterator:
print(element)
Giải thích code
1. Định nghĩa một tuple:
my_tuple = (10, 20, 30, 40, 50): Tạo một tuple chứa các
phần tử từ 10 đến 50.
3. Sử dụng vòng lặp for để duyệt qua các phần tử của iterator:
Tóm tắt:
tuple:Tuple trong Python, một dạng collection bất biến.
iter(): Hàm tạo iterator từ một collection.
Vòng lặp for: Sử dụng để duyệt qua các phần tử của iterator
một cách dễ dàng.
Chương trình này tạo một iterator từ một tuple và sử dụng vòng lặp
for để duyệt qua và in ra các phần tử của tuple tuần tự.
183 - Viết chương trình để tạo một
iterator từ một chuỗi
Thuật toán:
Đầu vào: Một chuỗi bất kỳ.
Đầu ra: Từng ký tự của chuỗi được in ra.
Các bước thực hiện:
1. Nhận chuỗi đầu vào.
2. Tạo iterator từ chuỗi đầu vào bằng cách sử dụng hàm
iter().
3. Sử dụng vòng lặp for để duyệt qua các phần tử của iterator
và in ra từng ký tự.
Code Python
# Định nghĩa một chuỗi
my_string = "Hello, World!"
# Sử dụng vòng lặp for để duyệt qua các phần tử của iterator
for character in my_iterator:
print(character)
Giải thích code
1. Định nghĩa một chuỗi:
3. Sử dụng vòng lặp for để duyệt qua các phần tử của iterator:
Tóm tắt:
string: Chuỗi trong Python, một dạng collection các ký tự.
iter(): Hàm tạo iterator từ một collection.
Vòng lặp for: Sử dụng để duyệt qua các phần tử của iterator
một cách dễ dàng.
Chương trình này tạo một iterator từ một chuỗi và sử dụng vòng lặp
for để duyệt qua và in ra các ký tự của chuỗi tuần tự.
184 - Viết chương trình để lặp qua một
iterator
Thuật toán:
Đầu vào: Một collection bất kỳ (list, tuple, string, etc.).
Đầu ra: Các phần tử của collection được in ra tuần tự.
Các bước thực hiện:
1. Nhận collection đầu vào.
2. Tạo iterator từ collection đầu vào bằng cách sử dụng hàm
iter().
3. Sử dụng các phương pháp khác nhau để lặp qua các phần
tử của iterator và in ra từng phần tử.
Code Python
# Định nghĩa một danh sách
my_collection = [1, 2, 3, 4, 5]
Tóm tắt:
iter(): Hàm tạo iterator từ một collection.
for: Vòng lặp để duyệt qua các phần tử của iterator.
list comprehension: Cách viết tắt để tạo list mới từ các phần tử
của một iterator.
list(): Hàm chuyển đổi iterator thành list.
itertools.islice(): Hàm từ module itertools để lặp qua các
phần tử của iterator với điều kiện cắt (slice).
Chương trình này tạo một iterator từ một collection và sử dụng nhiều
phương pháp khác nhau để lặp qua và in ra các phần tử của
collection tuần tự.
185 - Viết chương trình để sử dụng
hàm next() để truy cập các phần tử
của một iterator
Thuật toán:
Đầu vào: Một collection bất kỳ (list, tuple, string, etc.).
Đầu ra: Các phần tử của collection được in ra tuần tự.
Các bước thực hiện:
1. Nhận collection đầu vào.
2. Tạo iterator từ collection đầu vào bằng cách sử dụng hàm
iter().
3. Sử dụng hàm next() để lặp qua các phần tử của iterator và
in ra từng phần tử cho đến khi hết phần tử.
Code Python
# Định nghĩa một danh sách
my_collection = [1, 2, 3, 4, 5]
# Sử dụng vòng lặp while và hàm next() để duyệt qua các phần
tử của iterator
while True:
try:
# Lấy phần tử tiếp theo từ iterator
element = next(my_iterator)
print(element)
except StopIteration:
# Nếu không còn phần tử nào trong iterator thì thoát
khỏi vòng lặp
break
Chương trình này tạo một iterator từ một danh sách và sử dụng hàm
next() để duyệt qua và in ra các phần tử của danh sách tuần tự cho
đến khi hết phần tử.
186 - Viết chương trình để tạo một
iterator tùy chỉnh
Thuật toán:
Đầu vào: Không có đầu vào cụ thể. Chương trình sẽ tự tạo dữ
liệu.
Đầu ra: Các phần tử của iterator được in ra tuần tự.
Các bước thực hiện:
1. Định nghĩa một lớp iterator tùy chỉnh.
2. Triển khai phương thức __iter__ trả về chính đối tượng
iterator.
3. Triển khai phương thức __next__ để trả về phần tử tiếp theo
và ném ra ngoại lệ StopIteration khi không còn phần tử
nào.
4. Tạo một đối tượng của lớp iterator tùy chỉnh và sử dụng
vòng lặp for để duyệt qua các phần tử của nó.
Code Python
class CustomIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.data):
result = self.data[self.index]
self.index += 1
return result
else:
raise StopIteration
# Duyệt qua các phần tử của iterator tùy chỉnh bằng vòng lặp
for
for element in my_iterator:
print(element)
my_data = [10, 20, 30, 40, 50]: Tạo một danh sách dữ
liệu.
my_iterator = CustomIterator(my_data): Tạo một đối
tượng của lớp CustomIterator với dữ liệu my_data.
6. Duyệt qua các phần tử của iterator tùy chỉnh bằng vòng lặp
for:
Tóm tắt:
class:Định nghĩa một lớp trong Python.
__init__: Phương thức khởi tạo đối tượng.
__iter__: Phương thức trả về chính đối tượng iterator.
__next__: Phương thức trả về phần tử tiếp theo và ném ra ngoại
lệ StopIteration.
StopIteration: Ngoại lệ được ném ra khi không còn phần tử
nào trong iterator.
Vòng lặp for: Sử dụng để duyệt qua các phần tử của iterator.
Chương trình này định nghĩa một lớp iterator tùy chỉnh để duyệt qua
các phần tử của một danh sách và in ra từng phần tử.
187 - Viết chương trình để sử dụng
itertools để tạo ra một permutation
Thuật toán:
Đầu vào: Một collection bất kỳ (list, tuple, string, etc.).
Đầu ra: Tất cả các hoán vị của collection được in ra.
Các bước thực hiện:
1. Nhận collection đầu vào.
2. Sử dụng hàm itertools.permutations() để tạo ra tất cả các
hoán vị của collection.
3. Sử dụng vòng lặp để duyệt qua các hoán vị và in ra từng
hoán vị.
Code Python
import itertools
my_list = [1, 2, 3]: Tạo một danh sách chứa các phần tử
1, 2, và 3.
permutations = itertools.permutations(my_list): Sử
dụng hàm itertools.permutations() để tạo ra tất cả các
hoán vị của danh sách my_list.
Tóm tắt:
import itertools: Import thư viện itertools để sử dụng các
hàm tạo iterator.
itertools.permutations(): Hàm tạo ra tất cả các hoán vị của
một collection.
Vòng lặp for: Sử dụng để duyệt qua các phần tử của iterator.
Chương trình này sử dụng thư viện itertools để tạo ra tất cả các
hoán vị của một danh sách và in ra từng hoán vị.
188 - Viết chương trình để sử dụng
itertools để tạo ra một combination
Thuật toán:
Đầu vào: Một collection bất kỳ (list, tuple, string, etc.) và một số
nguyên r xác định độ dài của tổ hợp.
Đầu ra: Tất cả các tổ hợp có độ dài r của collection được in ra.
Các bước thực hiện:
1. Nhận collection đầu vào và giá trị r.
2. Sử dụng hàm itertools.combinations() để tạo ra tất cả các
tổ hợp có độ dài r của collection.
3. Sử dụng vòng lặp để duyệt qua các tổ hợp và in ra từng tổ
hợp.
Code Python
import itertools
my_list = [1, 2, 3, 4]: Tạo một danh sách chứa các phần
tử 1, 2, 3, và 4.
Chương trình này sử dụng thư viện itertools để tạo ra tất cả các tổ
hợp có độ dài r của một danh sách và in ra từng tổ hợp.
189 - Viết chương trình để sử dụng
itertools để tạo ra một product
Thuật toán:
Đầu vào: Hai hoặc nhiều collection (list, tuple, string, etc.).
Đầu ra: Tất cả các kết hợp có thể có của các phần tử từ các
collection được in ra.
Các bước thực hiện:
1. Nhận các collection đầu vào.
2. Sử dụng hàm itertools.product() để tạo ra tất cả các kết
hợp có thể có từ các collection.
3. Sử dụng vòng lặp để duyệt qua các kết hợp và in ra từng kết
hợp.
Code Python
import itertools
list1 = [1, 2]: Tạo một danh sách chứa các phần tử 1 và
2.
list2 = ['a', 'b']: Tạo một danh sách chứa các phần tử
‘a’ và ‘b’.
list3 = ['x', 'y']: Tạo một danh sách chứa các phần tử
‘x’ và ‘y’.
Chương trình này sử dụng thư viện itertools để tạo ra tất cả các
kết hợp có thể có từ ba danh sách và in ra từng kết hợp.
190 - Viết chương trình để sử dụng
itertools để tạo ra một
combinations_with_replacement
Thuật toán:
Đầu vào: Một collection bất kỳ (list, tuple, string, etc.) và một số
nguyên r xác định độ dài của tổ hợp.
Đầu ra: Tất cả các tổ hợp có lặp lại có độ dài r của collection
được in ra.
Các bước thực hiện:
1. Nhận collection đầu vào và giá trị r.
2. Sử dụng hàm itertools.combinations_with_replacement()
để tạo ra tất cả các tổ hợp có lặp lại có độ dài r của
collection.
3. Sử dụng vòng lặp để duyệt qua các tổ hợp và in ra từng tổ
hợp.
Code Python
import itertools
my_list = [1, 2, 3]: Tạo một danh sách chứa các phần tử
1, 2, và 3.
combinations_with_replacement =
itertools.combinations_with_replacement(my_list, r):
Sử dụng hàm itertools.combinations_with_replacement()
để tạo ra tất cả các tổ hợp có lặp lại có độ dài r của danh
sách my_list.
5. Duyệt qua các combinations with replacement và in ra từng
tổ hợp:
Tóm tắt:
import itertools: Import thư viện itertools để sử dụng các
hàm tạo iterator.
itertools.combinations_with_replacement(): Hàm tạo ra tất cả
các tổ hợp có lặp lại có độ dài r của một collection.
Vòng lặp for: Sử dụng để duyệt qua các phần tử của iterator.
Chương trình này sử dụng thư viện itertools để tạo ra tất cả các tổ
hợp có lặp lại có độ dài r của một danh sách và in ra từng tổ hợp.
Chương 20 : Generator
191. Viết chương trình để tạo một generator sinh ra các số nguyên từ
1 đến n.
192. Viết chương trình để tạo một generator sinh ra các số Fibonacci.
193. Viết chương trình để tạo một generator sinh ra các số nguyên tố.
194. Viết chương trình để tạo một generator sinh ra các số chẵn.
195. Viết chương trình để tạo một generator sinh ra các số lẻ.
196. Viết chương trình để tạo một generator sinh ra các chuỗi từ một
danh sách các từ.
197. Viết chương trình để tạo một generator sinh ra các chuỗi hoàn
hảo.
198. Viết chương trình để tạo một generator sinh ra các số
Armstrong.
199. Viết chương trình để tạo một generator sinh ra các số hoàn hảo.
200. Viết chương trình để tạo một generator sinh ra các số chính
phương.
191 - Viết chương trình để tạo một
generator sinh ra các số nguyên từ 1
đến n
Generator
Trong Python, generator là một loại đặc biệt của iterator. Thay vì tạo
ra tất cả các giá trị ngay từ đầu và lưu chúng trong bộ nhớ như list,
generator tạo ra các giá trị một cách lười biếng, tức là chỉ khi cần.
Ví dụ về một generator:
def count_up_to(n):
count = 1
while count <= n:
yield count
count += 1
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def generate_numbers(n):
for i in range(1, n + 1):
yield i
# Sử dụng generator
n = 10 # Ví dụ với n = 10
for number in generate_numbers(n):
print(number)
Tóm tắt:
Định nghĩa hàm với từ khóa yield.
Sử dụng vòng lặp for để sinh ra các giá trị từ 1 đến n.
Generator giúp tiết kiệm bộ nhớ bằng cách không lưu trữ toàn
bộ giá trị trong bộ nhớ.
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Sử dụng generator
n = 10 # Ví dụ với n = 10
for number in fibonacci(n):
print(number)
Tóm tắt:
Định nghĩa hàm với từ khóa yield để tạo ra một generator.
Khởi tạo hai biến đầu tiên của dãy Fibonacci.
Sử dụng vòng lặp for để sinh ra n số Fibonacci và cập nhật giá
trị của a và b trong mỗi lần lặp.
Thuật toán:
Đầu vào:
Đầu ra:
def prime_numbers(n):
count = 0
num = 2
while count < n:
if is_prime(num):
yield num
count += 1
num += 1
# Sử dụng generator
n = 10 # Ví dụ với n = 10
for number in prime_numbers(n):
print(number)
Tóm tắt:
Định nghĩa hàm kiểm tra số nguyên tố.
Định nghĩa generator để sinh ra n số nguyên tố.
Sử dụng vòng lặp và kiểm tra số nguyên tố để sinh ra các giá trị.
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def even_numbers(n):
count = 0
num = 2
while count < n:
yield num
count += 1
num += 2
# Sử dụng generator
n = 10 # Ví dụ với n = 10
for number in even_numbers(n):
print(number)
Tóm tắt:
Định nghĩa hàm với từ khóa yield để tạo ra một generator.
Khởi tạo biến đếm số lượng số chẵn đã sinh ra và biến bắt đầu
từ số chẵn đầu tiên.
Sử dụng vòng lặp để sinh ra n số chẵn và cập nhật giá trị của số
chẵn trong mỗi lần lặp.
Chương trình trên tạo ra một generator để sinh ra n số chẵn đầu tiên
và in ra từng số một.
195 - Viết chương trình để tạo một
generator sinh ra các số lẻ
2. Là một iterator: Generator là một loại đặc biệt của iterator. Bạn
có thể sử dụng hàm next() để lấy ra từng giá trị từ generator, và
khi hết giá trị, nó sẽ ném ra ngoại lệ StopIteration. Bạn cũng có
thể lặp qua generator bằng vòng lặp for.
# Create a generator
numbers = count_up_to(5)
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def odd_numbers(n):
count = 0
num = 1
while count < n:
yield num
count += 1
num += 2
Tóm tắt:
Định nghĩa hàm với từ khóa yield để tạo ra một generator.
Khởi tạo biến đếm số lượng số lẻ đã sinh ra và biến bắt đầu từ
số lẻ đầu tiên.
Sử dụng vòng lặp để sinh ra n số lẻ và cập nhật giá trị của số lẻ
trong mỗi lần lặp.
Khởi tạo generator và duyệt qua các phần tử bằng next.
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def word_generator(word_list):
for word in word_list:
yield word
# Sử dụng generator
word_list = ["apple", "banana", "cherry", "date",
"elderberry"]
word_gen = word_generator(word_list)
Hàm này nhận một tham số đầu vào word_list, là một danh
sách các từ.
Sử dụng vòng lặp for để duyệt qua từng từ trong danh sách
word_list.
Trong mỗi lần lặp, yield trả về từ hiện tại.
Tóm tắt:
Định nghĩa hàm với từ khóa yield để tạo ra một generator.
Sử dụng vòng lặp for để duyệt qua từng từ trong danh sách và
trả về từng từ một.
Khởi tạo generator và duyệt qua các phần tử bằng next.
Chương trình trên tạo ra một generator để sinh ra từng từ trong
danh sách word_list và in ra từng từ một bằng cách sử dụng hàm
next.
197 - Viết chương trình để tạo một
generator sinh ra các chuỗi hoàn hảo
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def is_palindrome(s):
return s == s[::-1]
def perfect_strings(strings):
for s in strings:
if is_palindrome(s):
yield s
# Sử dụng generator
string_list = ["level", "world", "radar", "python", "madam",
"example"]
perfect_gen = perfect_strings(string_list)
Hàm này kiểm tra xem một chuỗi s có phải là chuỗi đối xứng
không.
Sử dụng cú pháp s[::-1] để đảo ngược chuỗi và so sánh
với chuỗi ban đầu.
Hàm này nhận một tham số đầu vào strings, là một danh
sách các chuỗi.
Sử dụng vòng lặp for để duyệt qua từng chuỗi trong danh
sách strings.
Trong mỗi lần lặp, kiểm tra xem chuỗi hiện tại có phải là
chuỗi đối xứng bằng cách gọi hàm is_palindrome(s).
Nếu đúng, yield trả về chuỗi đó.
Tóm tắt:
Định nghĩa hàm kiểm tra chuỗi đối xứng.
Định nghĩa generator để sinh ra các chuỗi đối xứng từ danh
sách.
Sử dụng vòng lặp để kiểm tra và trả về các chuỗi đối xứng.
Khởi tạo generator và duyệt qua các phần tử bằng next.
Chương trình trên tạo ra một generator để sinh ra các chuỗi đối
xứng từ danh sách string_list và in ra từng chuỗi một bằng cách
sử dụng hàm next.
198 - Viết chương trình để tạo một
generator sinh ra các số Armstrong
Ví dụ:
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def is_armstrong(num):
num_str = str(num)
power = len(num_str)
total = sum(int(digit) ** power for digit in num_str)
return total == num
def armstrong_numbers(n):
count = 0
num = 1
while count < n:
if is_armstrong(num):
yield num
count += 1
num += 1
# Sử dụng generator
n = 10 # Ví dụ với n = 10
armstrong_gen = armstrong_numbers(n)
Tóm tắt:
Định nghĩa hàm kiểm tra số Armstrong.
Định nghĩa generator để sinh ra n số Armstrong.
Sử dụng vòng lặp để kiểm tra và trả về các số Armstrong.
Khởi tạo generator và duyệt qua các phần tử bằng next.
Chương trình trên tạo ra một generator để sinh ra n số Armstrong
đầu tiên và in ra từng số một bằng cách sử dụng hàm next.
199 - Viết chương trình để tạo một
generator sinh ra các số hoàn hảo
Ví dụ:
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
def is_perfect(num):
if num < 2:
return False
divisors_sum = sum(i for i in range(1, num) if num % i ==
0)
return divisors_sum == num
def perfect_numbers(n):
count = 0
num = 2
while count < n:
if is_perfect(num):
yield num
count += 1
num += 1
# Sử dụng generator
n = 3 # Ví dụ với n = 3
perfect_gen = perfect_numbers(n)
Tóm tắt:
Định nghĩa hàm kiểm tra số hoàn hảo.
Định nghĩa generator để sinh ra n số hoàn hảo.
Sử dụng vòng lặp để kiểm tra và trả về các số hoàn hảo.
Khởi tạo generator và duyệt qua các phần tử bằng next.
Chương trình trên tạo ra một generator để sinh ra n số hoàn hảo đầu
tiên và in ra từng số một bằng cách sử dụng hàm next.
200 - Viết chương trình để tạo một
generator sinh ra các số chính
phương
Thuật toán:
Đầu vào
Một số nguyên n
Đầu ra
Một generator sinh ra các số chính phương từ 1 đến n
Code Python
def square_numbers(n):
for i in range(1, n+1):
yield i * i
# Use the generator
for number in square_numbers(5):
print(number) # Output: 1, 4, 9, 16, 25
Tóm tắt:
Generator trong Python là một loại đặc biệt của iterator. Thay vì
tạo ra tất cả các giá trị ngay từ đầu và lưu chúng trong bộ nhớ
như list, generator tạo ra các giá trị một cách lười biếng, tức là
chỉ khi cần.
Bạn có thể tạo một generator bằng cách sử dụng từ khóa yield
trong hàm.
Chương trình này minh họa cách tạo một generator sinh ra các số
chính phương từ 1 đến n trong Python.
Chương 21 : Vẽ đồ thị
201. Viết chương trình để vẽ đồ thị đường bằng Matplotlib.
202. Viết chương trình để vẽ đồ thị cột bằng Matplotlib.
203. Viết chương trình để vẽ đồ thị tròn bằng Matplotlib.
204. Viết chương trình để vẽ đồ thị tán xạ bằng Matplotlib.
205. Viết chương trình để vẽ đồ thị hộp bằng Matplotlib.
206. Viết chương trình để vẽ đồ thị thanh ngang bằng Matplotlib.
207. Viết chương trình để vẽ đồ thị đường cong bằng Matplotlib.
208. Viết chương trình để vẽ đồ thị 3D bằng Matplotlib.
209. Viết chương trình để vẽ đồ thị heatmap bằng Seaborn.
210. Viết chương trình để vẽ đồ thị histogram bằng Seaborn.
201 - Viết chương trình để vẽ đồ thị
đường bằng Matplotlib
Thuật toán:
Đầu vào:
Một danh sách các giá trị trục x.
Một danh sách các giá trị trục y tương ứng với giá trị trục x.
Đầu ra:
Một đồ thị đường thể hiện mối quan hệ giữa các giá trị x và
y.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các danh sách dữ liệu cho trục x và y.
3. Sử dụng Matplotlib để vẽ đồ thị đường dựa trên các danh
sách dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y, lưới).
5. Hiển thị đồ thị.
pyplot cung cấp một giao diện lập trình có các hàm giống với
MATLAB, giúp người dùng có thể chuyển đổi từ MATLAB sang
Python một cách dễ dàng hơn. Nó giữ một trạng thái nội bộ, trong
đó nó theo dõi các thứ như hình đang được vẽ hiện tại, trục đang
hoạt động, v.v., để làm cho việc vẽ trở nên dễ dàng hơn.
Tuy nhiên, nếu bạn đang sử dụng một môi trường như Jupyter
Notebook, bạn có thể sử dụng dòng lệnh %matplotlib inline để
hiển thị đồ thị ngay trong notebook mà không cần mở cửa sổ mới.
Code Python
import matplotlib.pyplot as plt
# Vẽ đồ thị đường
plt.plot(x, y, marker='o')
3. Vẽ đồ thị đường:
Bổ sung
Có thể thêm các tùy chỉnh khác như màu sắc, kiểu đường,
kích thước của dấu chấm, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib để vẽ đồ thị đường.
Khởi tạo danh sách dữ liệu cho trục x và y.
Vẽ đồ thị đường với các tùy chỉnh cơ bản như tiêu đề, nhãn trục,
và lưới.
Chương trình này giúp bạn tạo và hiển thị một đồ thị đường đơn
giản với dữ liệu tùy ý sử dụng Matplotlib.
202 - Viết chương trình để vẽ đồ thị
cột bằng Matplotlib
Thuật toán:
Đầu vào:
Một danh sách các giá trị trục x (tên các cột).
Một danh sách các giá trị trục y (giá trị của các cột).
Đầu ra:
Một đồ thị cột thể hiện mối quan hệ giữa các giá trị x và y.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các danh sách dữ liệu cho trục x và y.
3. Sử dụng Matplotlib để vẽ đồ thị cột dựa trên các danh sách
dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y, lưới).
5. Hiển thị đồ thị.
# Vẽ đồ thị cột
plt.bar(x, y, color='blue')
x = ['A', 'B', 'C', 'D', 'E']: Danh sách các giá trị trục x
(tên các cột).
y = [5, 7, 3, 8, 4]: Danh sách các giá trị trục y tương
ứng với các cột.
3. Vẽ đồ thị cột:
plt.bar(x, y, color='blue'): Vẽ đồ thị cột với dữ liệu từ
các danh sách x và y. Sử dụng màu xanh dương cho các
cột.
Bổ sung
Có thể thêm các tùy chỉnh khác như màu sắc khác, kiểu cột,
thêm chú thích, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib để vẽ đồ thị cột.
Khởi tạo danh sách dữ liệu cho trục x và y.
Vẽ đồ thị cột với các tùy chỉnh cơ bản như tiêu đề, nhãn trục, và
lưới.
Chương trình này giúp bạn tạo và hiển thị một đồ thị cột đơn giản
với dữ liệu tùy ý sử dụng Matplotlib.
203 - Viết chương trình để vẽ đồ thị
tròn bằng Matplotlib
Thuật toán:
Đầu vào:
Một danh sách các nhãn cho các phần của đồ thị tròn.
Một danh sách các giá trị tương ứng với các nhãn.
Đầu ra:
Một đồ thị tròn thể hiện tỉ lệ của các giá trị đầu vào.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các danh sách dữ liệu cho nhãn và giá trị.
3. Sử dụng Matplotlib để vẽ đồ thị tròn dựa trên các danh sách
dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, hiển thị phần trăm).
5. Hiển thị đồ thị.
# Vẽ đồ thị tròn
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=140)
# Thêm tiêu đề
plt.title('Đồ thị tròn đơn giản')
labels = ['A', 'B', 'C', 'D']: Danh sách các nhãn cho
các phần của đồ thị tròn.
sizes = [15, 30, 45, 10]: Danh sách các giá trị tương ứng
với các nhãn.
colors = ['gold', 'yellowgreen', 'lightcoral',
'lightskyblue']: Danh sách màu sắc cho các phần của đồ
thị tròn.
explode = (0.1, 0, 0, 0): Đẩy phần đầu tiên ra khỏi tâm
đồ thị để làm nổi bật.
3. Vẽ đồ thị tròn:
Bổ sung
Có thể thêm các tùy chỉnh khác như màu sắc khác, thêm
chú thích, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib để vẽ đồ thị tròn.
Khởi tạo danh sách dữ liệu cho nhãn và giá trị.
Vẽ đồ thị tròn với các tùy chỉnh cơ bản như tiêu đề, hiển thị phần
trăm, và bóng đổ.
Chương trình này giúp bạn tạo và hiển thị một đồ thị tròn đơn giản
với dữ liệu tùy ý sử dụng Matplotlib.
204 - Viết chương trình để vẽ đồ thị
tán xạ bằng Matplotlib
Đồ thị tán xạ thường được sử dụng để xác định mối quan hệ giữa
hai biến. Nếu các điểm dữ liệu tạo thành một hình dạng hoặc một
đường xu hướng rõ ràng, điều này có thể cho thấy một mối quan hệ
giữa hai biến.
Ví dụ, bạn có thể sử dụng đồ thị tán xạ để xem xét mối quan hệ giữa
tuổi và thu nhập, giữa chiều cao và cân nặng, hoặc giữa thời gian
học và điểm số, v.v.
Thuật toán:
Đầu vào:
Một danh sách các giá trị trục x.
Một danh sách các giá trị trục y tương ứng với giá trị trục x.
Đầu ra:
Một đồ thị tán xạ thể hiện mối quan hệ giữa các giá trị x và y.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các danh sách dữ liệu cho trục x và y.
3. Sử dụng Matplotlib để vẽ đồ thị tán xạ dựa trên các danh
sách dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y).
5. Hiển thị đồ thị.
Code Python
import matplotlib.pyplot as plt
# Vẽ đồ thị tán xạ
plt.scatter(x, y, s=sizes, c=colors, alpha=0.5)
Tóm tắt:
Sử dụng thư viện Matplotlib để vẽ đồ thị tán xạ.
Khởi tạo danh sách dữ liệu cho trục x và y.
Vẽ đồ thị tán xạ với các tùy chỉnh cơ bản như tiêu đề, nhãn trục,
kích thước và màu sắc điểm.
Chương trình này giúp bạn tạo và hiển thị một đồ thị tán xạ đơn giản
với dữ liệu tùy ý sử dụng Matplotlib.
205 - Viết chương trình để vẽ đồ thị
hộp bằng Matplotlib
Thuật toán:
Đầu vào:
Một danh sách các giá trị.
Đầu ra:
Một đồ thị hộp thể hiện phân bố dữ liệu.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo danh sách dữ liệu.
3. Sử dụng Matplotlib để vẽ đồ thị hộp dựa trên danh sách dữ
liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục).
5. Hiển thị đồ thị.
# Vẽ đồ thị hộp
plt.boxplot(data)
3. Vẽ đồ thị hộp:
Bổ sung
Có thể thêm các tùy chỉnh khác như màu sắc, hiển thị các
giá trị ngoại lệ, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib để vẽ đồ thị hộp.
Khởi tạo danh sách dữ liệu cho các nhóm.
Vẽ đồ thị hộp với các tùy chỉnh cơ bản như tiêu đề, nhãn trục.
Chương trình này giúp bạn tạo và hiển thị một đồ thị hộp đơn giản
với dữ liệu tùy ý sử dụng Matplotlib.
206 - Viết chương trình để vẽ đồ thị
thanh ngang bằng Matplotlib
Thuật toán:
Đầu vào:
Dữ liệu ngẫu nhiên cho các thanh của đồ thị.
Đầu ra:
Một đồ thị thanh ngang thể hiện giá trị ngẫu nhiên.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib và NumPy.
2. Tạo dữ liệu ngẫu nhiên cho đồ thị.
3. Sử dụng Matplotlib để vẽ đồ thị thanh ngang dựa trên dữ liệu
này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y).
5. Hiển thị đồ thị.
Bổ sung
Có thể thêm các tùy chỉnh khác như màu sắc khác, thay đổi
kiểu thanh, thêm chú thích, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib và NumPy để vẽ đồ thị thanh ngang.
Khởi tạo danh sách dữ liệu ngẫu nhiên cho các danh mục.
Vẽ đồ thị thanh ngang với các tùy chỉnh cơ bản như tiêu đề,
nhãn trục.
Chương trình này giúp bạn tạo và hiển thị một đồ thị thanh ngang
đơn giản với dữ liệu ngẫu nhiên sử dụng Matplotlib.
207 - Viết chương trình để vẽ đồ thị
đường cong bằng Matplotlib
Thuật toán:
Đầu vào:
Một danh sách các giá trị trục x.
Một danh sách các giá trị trục y tương ứng với giá trị trục x.
Đầu ra:
Một đồ thị đường cong thể hiện mối quan hệ giữa các giá trị
x và y.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các danh sách dữ liệu cho trục x và y.
3. Sử dụng Matplotlib để vẽ đồ thị đường cong dựa trên các
danh sách dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y).
5. Hiển thị đồ thị.
Bổ sung
Có thể thêm các tùy chỉnh khác như thay đổi màu sắc, kiểu
đường, thêm nhiều đường cong khác nhau, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib và NumPy để vẽ đồ thị đường cong.
Khởi tạo danh sách dữ liệu cho trục x và y.
Vẽ đồ thị đường cong với các tùy chỉnh cơ bản như tiêu đề,
nhãn trục, và chú thích.
Chương trình này giúp bạn tạo và hiển thị một đồ thị đường cong
đơn giản với dữ liệu tùy ý sử dụng Matplotlib.
208 - Viết chương trình để vẽ đồ thị
3D bằng Matplotlib
Thuật toán:
Đầu vào:
Ba bộ dữ liệu cho trục x, y, và z.
Đầu ra:
Một đồ thị 3D thể hiện mối quan hệ giữa các giá trị x, y và z.
Các bước thực hiện:
1. Cài đặt thư viện Matplotlib.
2. Khởi tạo các dữ liệu cho trục x, y và z.
3. Sử dụng Matplotlib để vẽ đồ thị 3D dựa trên các dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x, y và z).
5. Hiển thị đồ thị.
x2 = np.random.rand(100)
y2 = np.random.rand(100)
z2 = np.random.rand(100)
x3 = np.random.rand(100)
y3 = np.random.rand(100)
z3 = np.random.rand(100)
Bổ sung
Có thể thêm các tùy chỉnh khác như thay đổi màu sắc, kiểu
marker, v.v.
Tóm tắt:
Sử dụng thư viện Matplotlib và NumPy để vẽ đồ thị 3D.
Khởi tạo ba bộ dữ liệu ngẫu nhiên cho trục x, y và z.
Vẽ đồ thị 3D với các tùy chỉnh cơ bản như tiêu đề, nhãn trục và
chú thích.
Chương trình này giúp bạn tạo và hiển thị một đồ thị 3D đơn giản
với ba loại dữ liệu khác nhau sử dụng Matplotlib.
209 - Viết chương trình để vẽ đồ thị
heatmap bằng Seaborn
Heatmap thường được sử dụng để hiển thị mối quan hệ giữa hai
biến hoặc để hiển thị sự phân phối của dữ liệu trên một không gian
hai chiều. Chúng rất hữu ích khi bạn muốn hiểu mối quan hệ giữa
các biến hoặc khi bạn muốn hiển thị một lượng lớn dữ liệu một cách
trực quan.
Thuật toán:
Đầu vào:
Một ma trận (matrix) hoặc DataFrame chứa các giá trị cần
hiển thị.
Đầu ra:
Một đồ thị heatmap thể hiện phân bố giá trị trong ma trận.
Các bước thực hiện:
1. Cài đặt thư viện Seaborn và Matplotlib.
2. Khởi tạo ma trận dữ liệu hoặc DataFrame.
3. Sử dụng Seaborn để vẽ đồ thị heatmap dựa trên dữ liệu này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y).
5. Hiển thị đồ thị.
Code Python
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# Vẽ đồ thị heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(data, annot=True, cmap='viridis')
3. Vẽ đồ thị heatmap:
Tóm tắt:
Sử dụng thư viện Seaborn và Matplotlib để vẽ đồ thị heatmap.
Khởi tạo ma trận dữ liệu ngẫu nhiên.
Vẽ đồ thị heatmap với các tùy chỉnh cơ bản như tiêu đề, nhãn
trục.
Chương trình này giúp bạn tạo và hiển thị một đồ thị heatmap đơn
giản với dữ liệu ngẫu nhiên sử dụng Seaborn.
210 - Viết chương trình để vẽ đồ thị
histogram bằng Seaborn
Thuật toán:
Đầu vào:
Một danh sách hoặc mảng các giá trị.
Đầu ra:
Một đồ thị histogram thể hiện phân bố các giá trị.
Các bước thực hiện:
1. Cài đặt thư viện Seaborn và Matplotlib.
2. Khởi tạo dữ liệu ngẫu nhiên hoặc dữ liệu mẫu.
3. Sử dụng Seaborn để vẽ đồ thị histogram dựa trên dữ liệu
này.
4. Tùy chỉnh đồ thị (thêm tiêu đề, nhãn trục x và y).
5. Hiển thị đồ thị.
Code Python
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# Vẽ đồ thị histogram
plt.figure(figsize=(10, 6))
sns.histplot(data, bins=30, kde=True, color='blue')
3. Vẽ đồ thị histogram:
Tóm tắt:
Sử dụng thư viện Seaborn và Matplotlib để vẽ đồ thị histogram.
Khởi tạo dữ liệu ngẫu nhiên.
Vẽ đồ thị histogram với các tùy chỉnh cơ bản như tiêu đề, nhãn
trục, và đường mật độ hạt nhân.
Chương trình này giúp bạn tạo và hiển thị một đồ thị histogram đơn
giản với dữ liệu ngẫu nhiên sử dụng Seaborn.
Chương 22 : Bài tập với SQL
211. Viết chương trình để kết nối với cơ sở dữ liệu SQL.
212. Viết chương trình để tạo bảng trong cơ sở dữ liệu SQL.
213. Viết chương trình để chèn dữ liệu vào bảng trong cơ sở dữ liệu
SQL.
214. Viết chương trình để truy vấn dữ liệu từ bảng trong cơ sở dữ liệu
SQL.
215. Viết chương trình để cập nhật dữ liệu trong bảng trong cơ sở dữ
liệu SQL.
216. Viết chương trình để xóa dữ liệu trong bảng trong cơ sở dữ liệu
SQL.
217. Viết chương trình để tạo bảng quan hệ trong cơ sở dữ liệu SQL.
218. Viết chương trình để thực hiện join giữa hai bảng trong cơ sở dữ
liệu SQL.
219. Viết chương trình để thực hiện aggregate functions trong cơ sở
dữ liệu SQL.
220. Viết chương trình để thực hiện subquery trong cơ sở dữ liệu
SQL.
211 - Viết chương trình để kết nối với
cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Cơ sở dữ liệu SQLite (có thể là một file hoặc cơ sở dữ liệu
trong bộ nhớ).
Các lệnh SQL để thực hiện các thao tác trên cơ sở dữ liệu.
Đầu ra:
Kết quả của các lệnh SQL (ví dụ: dữ liệu được truy vấn từ cơ
sở dữ liệu).
Các bước thực hiện:
1. Cài đặt thư viện SQLite (nếu chưa có).
2. Kết nối tới cơ sở dữ liệu SQLite.
3. Tạo bảng mới trong cơ sở dữ liệu.
4. Chèn dữ liệu vào bảng.
5. Truy vấn dữ liệu từ bảng.
6. Đóng kết nối cơ sở dữ liệu.
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Chèn dữ liệu vào bảng bằng INSERT INTO.
Truy vấn dữ liệu bằng SELECT.
Đóng kết nối bằng conn.close().
Chương trình này kết nối tới cơ sở dữ liệu SQLite, tạo bảng, chèn
dữ liệu và truy vấn dữ liệu cơ bản, minh họa cách làm việc với cơ sở
dữ liệu SQLite trong Python.
212 - Viết chương trình để tạo bảng
trong cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Cơ sở dữ liệu SQLite.
Các lệnh SQL để tạo bảng và chèn dữ liệu ban đầu.
Đầu ra:
Kết quả của các lệnh SQL (ví dụ: dữ liệu được truy vấn từ cơ
sở dữ liệu).
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng mới nếu bảng chưa tồn tại.
3. Chèn dữ liệu ban đầu vào bảng.
4. Truy vấn dữ liệu từ bảng.
5. Đóng kết nối cơ sở dữ liệu.
# Tạo bảng mới có tên là "students" nếu bảng chưa tồn tại
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
)
''')
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Kiểm tra sự tồn tại của bảng bằng truy vấn sqlite_master.
Chèn dữ liệu vào bảng bằng INSERT INTO.
Truy vấn dữ liệu bằng SELECT.
Đóng kết nối bằng conn.close().
Chương trình này kết nối tới cơ sở dữ liệu SQLite, tạo bảng nếu
chưa tồn tại, chèn dữ liệu ban đầu và truy vấn dữ liệu từ bảng
“students”.
213 - Viết chương trình để chèn dữ
liệu vào bảng trong cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng (nếu chưa tồn tại) và chèn dữ
liệu.
Lựa chọn của người dùng từ menu.
Đầu ra:
Dữ liệu được lưu trữ trong bảng hoặc danh sách dữ liệu từ
cơ sở dữ liệu.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng mới nếu bảng chưa tồn tại.
3. Hiển thị menu cho người dùng lựa chọn:
Nhập dữ liệu mới.
Xem danh sách dữ liệu đã lưu.
4. Thực hiện các thao tác tương ứng theo lựa chọn của người
dùng.
5. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_table_if_not_exists(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
)
''')
def display_data(cursor):
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
for row in rows:
print(row)
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_table_if_not_exists(cursor)
while True:
print("Menu:")
print("1. Nhập dữ liệu mới")
print("2. Xem danh sách dữ liệu")
print("3. Thoát")
choice = input("Chọn một tùy chọn (1/2/3): ")
if choice == '1':
name = input("Nhập tên: ")
age = input("Nhập tuổi: ")
grade = input("Nhập xếp hạng: ")
insert_data(cursor, name, age, grade)
conn.commit()
print("Đã thêm dữ liệu thành công!")
elif choice == '2':
display_data(cursor)
elif choice == '3':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Chèn dữ liệu vào bảng bằng INSERT INTO.
Truy vấn dữ liệu bằng SELECT.
Menu cho người dùng với các lựa chọn để nhập dữ liệu mới
hoặc xem danh sách dữ liệu đã lưu.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một giao diện đơn giản để người dùng
có thể nhập dữ liệu mới vào bảng “students” hoặc xem danh sách
dữ liệu đã lưu trong cơ sở dữ liệu SQLite.
214 - Viết chương trình để truy vấn dữ
liệu từ bảng trong cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng (nếu chưa tồn tại) và truy vấn dữ
liệu.
Lựa chọn của người dùng từ menu.
Đầu ra:
Dữ liệu được truy vấn từ bảng dựa trên tiêu chí người dùng
chọn.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng mới nếu bảng chưa tồn tại.
3. Hiển thị menu cho người dùng lựa chọn tiêu chí truy vấn dữ
liệu:
Xem tất cả dữ liệu.
Xem dữ liệu theo tên.
Xem dữ liệu theo tuổi.
Xem dữ liệu theo xếp hạng.
Thoát chương trình.
4. Thực hiện các truy vấn dữ liệu tương ứng theo lựa chọn của
người dùng.
5. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_table_if_not_exists(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
)
''')
def display_all_data(cursor):
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
for row in rows:
print(row)
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_table_if_not_exists(cursor)
while True:
print("Menu:")
print("1. Xem tất cả dữ liệu")
print("2. Xem dữ liệu theo tên")
print("3. Xem dữ liệu theo tuổi")
print("4. Xem dữ liệu theo xếp hạng")
print("5. Thoát")
choice = input("Chọn một tùy chọn (1/2/3/4/5): ")
if choice == '1':
display_all_data(cursor)
elif choice == '2':
name = input("Nhập tên: ")
display_data_by_name(cursor, name)
elif choice == '3':
age = input("Nhập tuổi: ")
display_data_by_age(cursor, age)
elif choice == '4':
grade = input("Nhập xếp hạng: ")
display_data_by_grade(cursor, grade)
elif choice == '5':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Chương trình này cung cấp một giao diện đơn giản để người dùng
có thể truy vấn và xem dữ liệu từ bảng “students” trong cơ sở dữ
liệu SQLite theo nhiều tiêu chí khác nhau.
215 - Viết chương trình để cập nhật
dữ liệu trong bảng trong cơ sở dữ
liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng (nếu chưa tồn tại) và cập nhật dữ
liệu.
Lựa chọn của người dùng từ menu.
Đầu ra:
Dữ liệu được cập nhật trong bảng hoặc danh sách dữ liệu từ
cơ sở dữ liệu.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng mới nếu bảng chưa tồn tại.
3. Hiển thị menu cho người dùng lựa chọn:
Xem toàn bộ dữ liệu.
Cập nhật dữ liệu theo ID.
Thoát chương trình.
4. Thực hiện các thao tác tương ứng theo lựa chọn của người
dùng.
5. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_table_if_not_exists(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
)
''')
def display_all_data(cursor):
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
for row in rows:
print(row)
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_table_if_not_exists(cursor)
while True:
print("Menu:")
print("1. Xem toàn bộ dữ liệu")
print("2. Cập nhật dữ liệu theo ID")
print("3. Thoát")
choice = input("Chọn một tùy chọn (1/2/3): ")
if choice == '1':
display_all_data(cursor)
elif choice == '2':
student_id = input("Nhập ID của sinh viên cần cập
nhật: ")
name = input("Nhập tên mới: ")
age = input("Nhập tuổi mới: ")
grade = input("Nhập xếp hạng mới: ")
update_data_by_id(cursor, student_id, name, age,
grade)
conn.commit()
print("Dữ liệu đã được cập nhật thành công!")
elif choice == '3':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Truy vấn dữ liệu bằng SELECT.
Cập nhật dữ liệu bằng UPDATE.
Menu cho người dùng với các lựa chọn để xem toàn bộ dữ liệu
hoặc cập nhật dữ liệu theo ID.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một giao diện đơn giản để người dùng
có thể xem toàn bộ dữ liệu hoặc cập nhật dữ liệu trong bảng
“students” của cơ sở dữ liệu SQLite.
216 - Viết chương trình để xóa dữ liệu
trong bảng trong cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng (nếu chưa tồn tại) và xóa dữ liệu.
Lựa chọn của người dùng từ menu.
Đầu ra:
Dữ liệu được xóa khỏi bảng hoặc danh sách dữ liệu từ cơ
sở dữ liệu.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng mới nếu bảng chưa tồn tại.
3. Hiển thị menu cho người dùng lựa chọn:
Xem toàn bộ dữ liệu.
Xóa dữ liệu theo ID.
Xóa toàn bộ dữ liệu.
Thoát chương trình.
4. Thực hiện các thao tác tương ứng theo lựa chọn của người
dùng.
5. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_table_if_not_exists(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
)
''')
def display_all_data(cursor):
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
for row in rows:
print(row)
def delete_all_data(cursor):
cursor.execute('DELETE FROM students')
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_table_if_not_exists(cursor)
while True:
print("Menu:")
print("1. Xem toàn bộ dữ liệu")
print("2. Xóa dữ liệu theo ID")
print("3. Xóa toàn bộ dữ liệu")
print("4. Thoát")
choice = input("Chọn một tùy chọn (1/2/3/4): ")
if choice == '1':
display_all_data(cursor)
elif choice == '2':
student_id = input("Nhập ID của sinh viên cần
xóa: ")
delete_data_by_id(cursor, student_id)
conn.commit()
print(f"Dữ liệu có ID {student_id} đã được xóa
thành công!")
elif choice == '3':
delete_all_data(cursor)
conn.commit()
print("Toàn bộ dữ liệu đã được xóa thành công!")
elif choice == '4':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Truy vấn dữ liệu bằng SELECT.
Xóa dữ liệu bằng DELETE.
Menu cho người dùng với các lựa chọn để xem toàn bộ dữ liệu,
xóa dữ liệu theo ID hoặc xóa toàn bộ dữ liệu.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một giao diện đơn giản để người dùng
có thể xem toàn bộ dữ liệu, xóa dữ liệu theo ID hoặc xóa toàn bộ dữ
liệu trong bảng “students” của cơ sở dữ liệu SQLite.
217 - Viết chương trình để tạo bảng
quan hệ trong cơ sở dữ liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo các bảng Học Sinh, Lớp Học và Môn
Học.
Đầu ra:
Các bảng được tạo thành công trong cơ sở dữ liệu SQLite.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng Học Sinh (nếu chưa tồn tại).
3. Tạo bảng Lớp Học (nếu chưa tồn tại).
4. Tạo bảng Môn Học (nếu chưa tồn tại).
5. Đóng kết nối cơ sở dữ liệu.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_tables(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS Students (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
class_id INTEGER,
FOREIGN KEY (class_id) REFERENCES
Classes(class_id)
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS Classes (
class_id INTEGER PRIMARY KEY AUTOINCREMENT,
class_name TEXT NOT NULL
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS Subjects (
subject_id INTEGER PRIMARY KEY AUTOINCREMENT,
subject_name TEXT NOT NULL,
student_id INTEGER,
FOREIGN KEY (student_id) REFERENCES
Students(student_id)
)
''')
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_tables(cursor)
conn.commit()
conn.close()
print("Các bảng đã được tạo thành công trong cơ sở dữ
liệu!")
if __name__ == "__main__":
main()
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo các bảng mới với các mối quan hệ ngoại khóa bằng CREATE
TABLE IF NOT EXISTS.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một cách để tạo các bảng Học Sinh,
Lớp Học, và Môn Học trong cơ sở dữ liệu SQLite, cùng với các mối
quan hệ khóa ngoại giữa chúng.
218 - Viết chương trình để thực hiện
join giữa hai bảng trong cơ sở dữ liệu
SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng, chèn dữ liệu và thực hiện phép
join.
Lựa chọn của người dùng từ menu.
Đầu ra:
Dữ liệu từ các bảng hoặc kết quả phép join.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng Học Sinh và Lớp Học nếu chưa tồn tại.
3. Cung cấp menu để người dùng lựa chọn:
Xem dữ liệu từ bảng Học Sinh.
Xem dữ liệu từ bảng Lớp Học.
Xem dữ liệu từ phép join giữa hai bảng.
Thoát chương trình.
4. Thực hiện các thao tác tương ứng theo lựa chọn của người
dùng.
5. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_tables(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS Students (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
class_id INTEGER,
FOREIGN KEY (class_id) REFERENCES
Classes(class_id)
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS Classes (
class_id INTEGER PRIMARY KEY AUTOINCREMENT,
class_name TEXT NOT NULL
)
''')
def insert_sample_data(cursor):
# Thêm dữ liệu mẫu vào bảng Classes
cursor.execute('INSERT INTO Classes (class_name) VALUES
("Class A")')
cursor.execute('INSERT INTO Classes (class_name) VALUES
("Class B")')
def display_all_data_from_students(cursor):
cursor.execute('SELECT * FROM Students')
rows = cursor.fetchall()
for row in rows:
print(row)
def display_all_data_from_classes(cursor):
cursor.execute('SELECT * FROM Classes')
rows = cursor.fetchall()
for row in rows:
print(row)
def display_joined_data(cursor):
cursor.execute('''
SELECT Students.student_id, Students.name,
Students.age, Classes.class_name
FROM Students
JOIN Classes ON Students.class_id = Classes.class_id
''')
rows = cursor.fetchall()
for row in rows:
print(row)
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_tables(cursor)
insert_sample_data(cursor)
conn.commit()
while True:
print("Menu:")
print("1. Xem dữ liệu từ bảng Học Sinh")
print("2. Xem dữ liệu từ bảng Lớp Học")
print("3. Xem dữ liệu từ phép join giữa hai bảng")
print("4. Thoát")
choice = input("Chọn một tùy chọn (1/2/3/4): ")
if choice == '1':
display_all_data_from_students(cursor)
elif choice == '2':
display_all_data_from_classes(cursor)
elif choice == '3':
display_joined_data(cursor)
elif choice == '4':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo các bảng mới với các mối quan hệ ngoại khóa bằng CREATE
TABLE IF NOT EXISTS.
Chèn dữ liệu mẫu vào các bảng để có dữ liệu để hiển thị.
Truy vấn dữ liệu bằng SELECT.
Thực hiện phép join giữa các bảng bằng JOIN.
Menu cho người dùng với các lựa chọn để xem dữ liệu từ từng
bảng hoặc từ phép join giữa hai bảng.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một cách để tạo các bảng, chèn dữ liệu
mẫu, và hiển thị dữ liệu từ từng bảng hoặc từ phép join giữa hai
bảng trong cơ sở dữ liệu SQLite.
219 - Viết chương trình để thực hiện
aggregate functions trong cơ sở dữ
liệu SQL
Thuật toán:
Đầu vào:
Các lệnh SQL để tạo bảng, chèn dữ liệu và thực hiện các
hàm tổng hợp.
Lựa chọn của người dùng từ menu.
Đầu ra:
Kết quả của các hàm tổng hợp từ cơ sở dữ liệu.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Tạo bảng Học Sinh nếu chưa tồn tại.
3. Chèn dữ liệu mẫu vào bảng.
4. Cung cấp menu để người dùng lựa chọn:
Xem tổng số học sinh.
Xem tuổi trung bình của học sinh.
Xem tuổi lớn nhất của học sinh.
Xem tuổi nhỏ nhất của học sinh.
Thoát chương trình.
5. Thực hiện các thao tác tương ứng theo lựa chọn của người
dùng.
6. Đóng kết nối cơ sở dữ liệu.
Cài đặt thư viện
Không cần cài đặt thêm thư viện nào vì SQLite là một phần của thư
viện chuẩn trong Python.
Code Python
import sqlite3
def connect_to_db():
return sqlite3.connect('example.db')
def create_table(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS Students (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')
def insert_sample_data(cursor):
cursor.execute('INSERT INTO Students (name, age) VALUES
("Alice", 20)')
cursor.execute('INSERT INTO Students (name, age) VALUES
("Bob", 22)')
cursor.execute('INSERT INTO Students (name, age) VALUES
("Charlie", 23)')
cursor.execute('INSERT INTO Students (name, age) VALUES
("David", 21)')
cursor.execute('INSERT INTO Students (name, age) VALUES
("Eve", 22)')
def get_total_students(cursor):
cursor.execute('SELECT COUNT(*) FROM Students')
return cursor.fetchone()[0]
def get_average_age(cursor):
cursor.execute('SELECT AVG(age) FROM Students')
return cursor.fetchone()[0]
def get_max_age(cursor):
cursor.execute('SELECT MAX(age) FROM Students')
return cursor.fetchone()[0]
def get_min_age(cursor):
cursor.execute('SELECT MIN(age) FROM Students')
return cursor.fetchone()[0]
def main():
conn = connect_to_db()
cursor = conn.cursor()
create_table(cursor)
insert_sample_data(cursor)
conn.commit()
while True:
print("Menu:")
print("1. Xem tổng số học sinh")
print("2. Xem tuổi trung bình của học sinh")
print("3. Xem tuổi lớn nhất của học sinh")
print("4. Xem tuổi nhỏ nhất của học sinh")
print("5. Thoát")
choice = input("Chọn một tùy chọn (1/2/3/4/5): ")
if choice == '1':
total_students = get_total_students(cursor)
print(f"Tổng số học sinh: {total_students}")
elif choice == '2':
average_age = get_average_age(cursor)
print(f"Tuổi trung bình của học sinh:
{average_age:.2f}")
elif choice == '3':
max_age = get_max_age(cursor)
print(f"Tuổi lớn nhất của học sinh: {max_age}")
elif choice == '4':
min_age = get_min_age(cursor)
print(f"Tuổi nhỏ nhất của học sinh: {min_age}")
elif choice == '5':
break
else:
print("Lựa chọn không hợp lệ, vui lòng thử lại.")
conn.close()
if __name__ == "__main__":
main()
Bổ sung
Không có cách giải khác cho bài toán này.
Tóm tắt:
import sqlite3 để làm việc với SQLite.
Kết nối tới cơ sở dữ liệu bằng sqlite3.connect.
Tạo bảng mới bằng CREATE TABLE IF NOT EXISTS.
Chèn dữ liệu mẫu vào bảng để có dữ liệu để hiển thị.
Thực hiện các hàm tổng hợp như COUNT, AVG, MAX, MIN.
Menu cho người dùng với các lựa chọn để xem kết quả của các
hàm tổng hợp.
Đóng kết nối bằng conn.close().
Chương trình này cung cấp một cách để tạo bảng, chèn dữ liệu
mẫu, và hiển thị kết quả của các hàm tổng hợp từ bảng “Students”
trong cơ sở dữ liệu SQLite.
220 - Viết chương trình để thực hiện
subquery trong cơ sở dữ liệu SQL
Thuật toán
Đầu vào:
Cơ sở dữ liệu SQLite.
Menu cho phép người dùng chọn các truy vấn.
Đầu ra:
Kết quả của các truy vấn được hiển thị trên màn hình.
Các bước thực hiện:
1. Kết nối tới cơ sở dữ liệu SQLite.
2. Hiển thị menu cho phép người dùng chọn các truy vấn.
3. Thực hiện truy vấn dựa trên lựa chọn của người dùng.
4. Hiển thị kết quả của truy vấn hoặc truy vấn phụ.
Code Python
import sqlite3
def create_database():
# Tạo cơ sở dữ liệu SQLite và bảng mẫu
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
conn.commit()
conn.close()
def execute_query(query):
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute(query)
rows = cursor.fetchall()
conn.close()
return rows
def menu():
while True:
print("\nMenu:")
print("1. Xem tất cả nhân viên")
print("2. Xem tất cả phòng ban")
print("3. Xem nhân viên với mức lương cao nhất trong
từng phòng ban (subquery)")
print("4. Thoát")
choice = input("Chọn một tùy chọn: ")
if choice == '1':
query = "SELECT * FROM Employees"
rows = execute_query(query)
print("\nTất cả nhân viên:")
for row in rows:
print(row)
else:
print("Tùy chọn không hợp lệ, vui lòng chọn
lại.")
Hàm execute_query nhận một câu truy vấn SQL, thực hiện
nó và trả về kết quả.
Tóm tắt:
Kết nối SQLite: Sử dụng sqlite3.connect để kết nối và thao
tác với cơ sở dữ liệu SQLite.
Tạo bảng và chèn dữ liệu: Sử dụng câu lệnh SQL để tạo bảng
và chèn dữ liệu mẫu.
Thực hiện truy vấn: Sử dụng cursor.execute và fetchall để
thực hiện và lấy kết quả của các truy vấn SQL.
Menu điều hướng: Sử dụng vòng lặp và điều kiện để điều
hướng qua các tùy chọn của người dùng và thực hiện các truy
vấn tương ứng.
Thuật toán:
Đầu vào: Một tệp CSV chứa dữ liệu.
Đầu ra: Nội dung của tệp CSV được đọc và hiển thị.
Các bước thực hiện:
1. Mở tệp CSV.
2. Đọc nội dung tệp CSV.
3. Hiển thị nội dung tệp CSV.
Code Python
import csv
Bổ sung
Có thể sử dụng thư viện pandas để đọc tệp CSV và hiển thị dữ
liệu dưới dạng DataFrame.
Tóm tắt:
Sử dụng thư viện csv để đọc tệp CSV.
Sử dụng cú pháp with open để mở tệp một cách an toàn.
Sử dụng csv.reader để đọc nội dung tệp CSV.
Lặp qua từng dòng trong tệp CSV và in ra nội dung.
Chương trình đọc nội dung từ tệp CSV và hiển thị nội dung đó.
222 - Viết chương trình để ghi dữ liệu
vào tệp CSV
Thuật toán:
Đầu vào: Dữ liệu cần ghi vào tệp CSV.
Đầu ra: Một tệp CSV chứa dữ liệu đã được ghi.
Các bước thực hiện:
1. Mở (hoặc tạo mới) tệp CSV.
2. Ghi dữ liệu vào tệp CSV.
3. Đóng tệp CSV.
Code Python
import csv
Tóm tắt:
Sử dụng thư viện csv để ghi tệp CSV.
Sử dụng cú pháp with open để mở hoặc tạo mới tệp một cách
an toàn.
Sử dụng csv.writer để ghi nội dung vào tệp CSV.
Lặp qua từng dòng trong dữ liệu và ghi vào tệp CSV.
Chương trình tạo và ghi dữ liệu vào một tệp CSV mới.
223 - Viết chương trình để đọc dữ liệu
từ tệp Excel
Thuật toán:
Đầu vào: Một tệp Excel chứa dữ liệu.
Đầu ra: Nội dung của tệp Excel được đọc và hiển thị.
Các bước thực hiện:
1. Mở tệp Excel.
2. Lấy sheet cần đọc dữ liệu.
3. Đọc dữ liệu từ các ô trong sheet.
4. Hiển thị dữ liệu.
Nếu bạn chưa cài đặt thư viện openpyxl, bạn có thể cài đặt bằng
lệnh sau:
pip install openpyxl
Code Python
import openpyxl
# Mở tệp Excel
workbook = openpyxl.load_workbook(file_path)
Bổ sung
Có thể sử dụng thư viện pandas để đọc dữ liệu từ tệp Excel.
Tóm tắt:
Sử dụng thư viện openpyxl để đọc tệp Excel.
Mở tệp Excel và lấy workbook.
Chọn sheet cần đọc.
Sử dụng iter_rows để lặp qua từng dòng trong sheet và hiển thị
nội dung.
Chương trình mở và đọc nội dung từ tệp Excel và hiển thị dữ liệu
đó.
224 - Viết chương trình để ghi dữ liệu
vào tệp Excel
Thuật toán:
Đầu vào: Dữ liệu cần ghi vào tệp Excel.
Đầu ra: Một tệp Excel chứa dữ liệu đã được ghi.
Các bước thực hiện:
1. Tạo một workbook mới.
2. Thêm một sheet mới vào workbook.
3. Ghi dữ liệu vào các ô trong sheet.
4. Lưu workbook dưới dạng tệp Excel.
Nếu bạn chưa cài đặt thư viện openpyxl, bạn có thể cài đặt bằng
lệnh sau:
pip install openpyxl
Code Python
import openpyxl
# Dữ liệu cần ghi vào tệp Excel
data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 25, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
Bổ sung
Có thể sử dụng thư viện pandas kết hợp với openpyxl để ghi dữ liệu
vào tệp Excel.
Tóm tắt:
Sử dụng thư viện openpyxl để ghi tệp Excel.
Tạo workbook và sheet mới.
Sử dụng phương thức append để thêm dữ liệu vào sheet.
Lưu workbook vào tệp Excel.
Chương trình tạo và ghi dữ liệu vào một tệp Excel mới.
225 - Viết chương trình để đọc dữ liệu
từ tệp JSON
Thuật toán:
Đầu vào: Một tệp JSON chứa dữ liệu.
Đầu ra: Nội dung của tệp JSON được đọc và hiển thị.
Các bước thực hiện:
1. Mở tệp JSON.
2. Đọc dữ liệu từ tệp JSON.
3. Hiển thị dữ liệu.
Code Python
import json
Bổ sung
Có thể sử dụng thư viện pandas để đọc dữ liệu từ tệp JSON và hiển
thị dưới dạng DataFrame.
Tóm tắt:
Sử dụng thư viện json để đọc tệp JSON.
Mở tệp JSON trong chế độ đọc.
Sử dụng json.load để đọc nội dung từ tệp JSON.
Hiển thị dữ liệu được đọc từ tệp JSON.
Chương trình mở và đọc nội dung từ tệp JSON và hiển thị dữ liệu
đó.
226 - Viết chương trình để ghi dữ liệu
vào tệp JSON
Thuật toán:
Đầu vào: Dữ liệu học sinh cần ghi vào tệp JSON.
Đầu ra: Một tệp JSON chứa dữ liệu đã được ghi.
Các bước thực hiện:
1. Tạo dữ liệu học sinh.
2. Mở (hoặc tạo mới) tệp JSON.
3. Ghi dữ liệu vào tệp JSON.
4. Đóng tệp JSON.
Code Python
import json
Tóm tắt:
Sử dụng thư viện json để ghi tệp JSON.
Tạo dữ liệu học sinh dưới dạng danh sách các từ điển.
Mở hoặc tạo mới tệp JSON trong chế độ ghi.
Sử dụng json.dump để ghi nội dung vào tệp JSON với định dạng
UTF-8 và thụt lề 4 khoảng trắng.
Chương trình tạo và ghi dữ liệu danh sách học sinh vào một tệp
JSON mới.
227 - Viết chương trình để phân tích
dữ liệu từ tệp CSV
Thuật toán:
Đầu vào: Một tệp CSV chứa dữ liệu.
Đầu ra: Một danh sách các đối tượng được tạo từ dữ liệu trong
tệp CSV.
Các bước thực hiện:
1. Định nghĩa lớp tương ứng với dữ liệu trong tệp CSV.
2. Mở tệp CSV và đọc nội dung.
3. Tạo các đối tượng từ dữ liệu đọc được và thêm vào danh
sách.
4. Hiển thị danh sách các đối tượng.
def __repr__(self):
return f"Student(name={self.name}, age={self.age},
city={self.city})"
Tóm tắt:
Định nghĩa lớp Student với các thuộc tính name, age, và city.
Sử dụng thư viện csv để đọc tệp CSV.
Tạo danh sách các đối tượng Student từ dữ liệu trong tệp CSV.
Hiển thị danh sách các đối tượng Student.
Chương trình đọc dữ liệu từ tệp CSV và chuyển đổi dữ liệu đó thành
một danh sách các đối tượng Student.
228 - Viết chương trình để phân tích
dữ liệu từ tệp Excel
Thuật toán:
Đầu vào: Một tệp Excel chứa dữ liệu.
Đầu ra: Một danh sách các đối tượng được tạo từ dữ liệu trong
tệp Excel.
Các bước thực hiện:
1. Định nghĩa lớp tương ứng với dữ liệu trong tệp Excel.
2. Mở tệp Excel và đọc nội dung.
3. Tạo các đối tượng từ dữ liệu đọc được và thêm vào danh
sách.
4. Hiển thị danh sách các đối tượng.
Nếu bạn chưa cài đặt thư viện openpyxl, bạn có thể cài đặt bằng
lệnh sau:
pip install openpyxl
Code Python
def __repr__(self):
return f"Student(name={self.name}, age={self.age},
city={self.city})"
Tóm tắt:
Định nghĩa lớp Student với các thuộc tính name, age, và city.
Sử dụng thư viện openpyxl để đọc tệp Excel.
Mở tệp Excel và lấy workbook.
Sử dụng iter_rows để lặp qua từng dòng trong sheet, bắt đầu từ
dòng thứ 2 để bỏ qua dòng tiêu đề.
Tạo danh sách các đối tượng Student từ dữ liệu trong tệp Excel.
Hiển thị danh sách các đối tượng Student.
Chương trình đọc dữ liệu từ tệp Excel và chuyển đổi dữ liệu đó
thành một danh sách các đối tượng Student.
229 - Viết chương trình để phân tích
dữ liệu từ tệp JSON
Thuật toán:
Đầu vào: Một tệp JSON chứa dữ liệu.
Đầu ra: Một danh sách các đối tượng được tạo từ dữ liệu trong
tệp JSON.
Các bước thực hiện:
1. Định nghĩa lớp tương ứng với dữ liệu trong tệp JSON.
2. Mở tệp JSON và đọc nội dung.
3. Tạo các đối tượng từ dữ liệu đọc được và thêm vào danh
sách.
4. Hiển thị danh sách các đối tượng.
def __repr__(self):
return f"Student(name={self.name}, age={self.age},
city={self.city})"
Tóm tắt:
Định nghĩa lớp Student với các thuộc tính name, age, và city.
Sử dụng thư viện json để đọc tệp JSON.
Mở tệp JSON và đọc nội dung vào biến data.
Tạo danh sách các đối tượng Student từ dữ liệu trong tệp
JSON.
Hiển thị danh sách các đối tượng Student.
Chương trình đọc dữ liệu từ tệp JSON và chuyển đổi dữ liệu đó
thành một danh sách các đối tượng Student.
230 - Viết chương trình để tạo báo cáo
dữ liệu đơn giản
Thuật toán:
Đầu vào: Dữ liệu từ tệp CSV, JSON, hoặc Excel.
Đầu ra: Một báo cáo đơn giản dưới dạng văn bản.
Các bước thực hiện:
1. Đọc dữ liệu từ tệp.
2. Phân tích dữ liệu.
3. Tạo báo cáo từ dữ liệu phân tích được.
4. Hiển thị hoặc lưu báo cáo dưới dạng văn bản.
Nếu bạn chưa cài đặt các thư viện pandas và openpyxl, bạn có thể
cài đặt bằng lệnh sau:
pip install pandas openpyxl
Code Python
def read_csv(file_path):
return pd.read_csv(file_path)
def read_json(file_path):
with open(file_path, 'r', encoding='utf-8') as jsonfile:
data = json.load(jsonfile)
return pd.DataFrame(data)
def read_excel(file_path):
return pd.read_excel(file_path)
report = analyze_data(df)
report_text = create_report(report)
return report_text
Tóm tắt:
Đọc dữ liệu từ tệp CSV, JSON, hoặc Excel.
Phân tích dữ liệu và tạo báo cáo thống kê đơn giản.
Hiển thị báo cáo dưới dạng văn bản.
Chương trình đọc dữ liệu từ tệp, phân tích và tạo báo cáo thống kê
đơn giản dưới dạng văn bản.
Chương 24 : Thực hành lập
trình mạng cơ bản
231. Viết chương trình để tải xuống một tệp từ internet.
232. Viết chương trình để kiểm tra kết nối internet.
233. Viết chương trình để kiểm tra tốc độ internet.
234. Viết chương trình để gửi email.
235. Viết chương trình để nhận email.
236. Viết chương trình để phân giải tên miền.
237. Viết chương trình để tạo một máy chủ TCP đơn giản.
238. Viết chương trình để tạo một máy khách TCP đơn giản.
239. Viết chương trình để tạo một máy chủ UDP đơn giản.
240. Viết chương trình để tạo một máy khách UDP đơn giản.
231 - Viết chương trình để tải xuống
một tệp từ internet
Thuật toán
Đầu vào: URL của tệp cần tải xuống.
Đầu ra: Tệp được tải xuống và lưu vào thư mục cục bộ.
Các bước thực hiện:
1. Nhận URL của tệp từ người dùng.
2. Tạo tên tệp cục bộ để lưu tệp tải xuống.
3. Sử dụng thư viện requests để tải nội dung từ URL.
4. Ghi nội dung tải về vào tệp cục bộ.
5. Thông báo kết quả cho người dùng.
Code Python
import requests
Tham số:
url: URL của tệp cần tải xuống.
local_filename: Tên tệp cục bộ để lưu tệp tải xuống.
Tạo yêu cầu GET: Sử dụng requests.get(url,
stream=True) để tải nội dung từ URL.
Kiểm tra mã trạng thái: Sử dụng raise_for_status() để
kiểm tra phản hồi HTTP.
Ghi dữ liệu vào tệp cục bộ:
Mở tệp cục bộ bằng chế độ ghi nhị phân ('wb').
Ghi dữ liệu vào tệp theo từng khối (chunk) để tránh tiêu
tốn bộ nhớ.
Tóm tắt
Sử dụng thư viện requests để gửi yêu cầu HTTP và tải xuống
nội dung từ URL.
Sử dụng input() để nhận đầu vào từ người dùng.
Sử dụng khối try-except để xử lý ngoại lệ và đảm bảo chương
trình không bị dừng đột ngột.
Đọc và ghi dữ liệu bằng cách sử dụng with để đảm bảo tài
nguyên được giải phóng đúng cách.
Chương trình này tải xuống một tệp từ URL được cung cấp bởi
người dùng và lưu tệp đó vào hệ thống tệp cục bộ.
232 - Viết chương trình để kiểm tra kết
nối internet
Thuật toán
Đầu vào: Không có đầu vào từ người dùng.
Đầu ra: Thông báo cho biết máy tính có kết nối internet hay
không.
Các bước thực hiện:
1. Gửi yêu cầu HTTP GET đến một URL đáng tin cậy (ví dụ:
http://www.google.com).
2. Kiểm tra mã trạng thái của phản hồi để xác định xem kết nối
có thành công hay không.
3. Thông báo kết quả cho người dùng.
Code Python
import requests
def check_internet_connection():
url = "http://www.google.com"
timeout = 5
try:
# Gửi yêu cầu GET đến URL và thiết lập thời gian chờ
response = requests.get(url, timeout=timeout)
# Kiểm tra mã trạng thái của phản hồi
if response.status_code == 200:
print("Kết nối internet hoạt động bình thường.")
else:
print("Không thể kết nối internet.")
except requests.ConnectionError:
print("Không thể kết nối internet.")
except requests.Timeout:
print("Yêu cầu kết nối internet đã bị quá thời gian
chờ.")
Tóm tắt
Sử dụng thư viện requests để gửi yêu cầu HTTP và kiểm tra kết
nối internet.
Kiểm tra mã trạng thái của phản hồi để xác định xem kết nối có
thành công hay không.
Xử lý ngoại lệ để xác định các trường hợp không thể kết nối
hoặc bị quá thời gian chờ.
Thông báo kết quả cho người dùng dựa trên phản hồi từ máy
chủ.
Chương trình này kiểm tra xem máy tính có kết nối internet bằng
cách gửi yêu cầu đến http://www.google.com và xác định phản hồi.
233 - Viết chương trình để kiểm tra tốc
độ internet
Thuật toán
Đầu vào: Không có đầu vào từ người dùng.
Đầu ra: Tốc độ tải xuống (download speed), tốc độ tải lên
(upload speed) và độ trễ (ping).
Các bước thực hiện:
1. Sử dụng thư viện speedtest-cli để đo lường tốc độ internet.
2. Lấy kết quả của tốc độ tải xuống, tốc độ tải lên và độ trễ.
3. In kết quả ra màn hình.
Code Python
import speedtest
def check_internet_speed():
# Khởi tạo đối tượng Speedtest
st = speedtest.Speedtest()
# Chọn máy chủ tốt nhất dựa trên ping
st.get_best_server()
# Đo độ trễ (ping)
ping = st.results.ping
# In kết quả
print(f"Tốc độ tải xuống: {download_speed_mbps:.2f}
Mbps")
print(f"Tốc độ tải lên: {upload_speed_mbps:.2f} Mbps")
print(f"Độ trễ (ping): {ping:.2f} ms")
Tóm tắt
Sử dụng thư viện speedtest-cli để đo lường tốc độ internet.
Khởi tạo đối tượng Speedtest và chọn máy chủ tốt nhất dựa trên
độ trễ (ping).
Đo tốc độ tải xuống và tải lên, sau đó chuyển đổi từ bps sang
Mbps.
Lấy và in kết quả độ trễ (ping).
In kết quả tốc độ tải xuống, tải lên và độ trễ ra màn hình.
Chương trình này kiểm tra tốc độ internet bằng cách đo tốc độ tải
xuống, tải lên và độ trễ (ping), sau đó in kết quả ra màn hình.
234 - Viết chương trình để gửi email
Thuật toán
Đầu vào:
Đầu ra: Email được gửi đi thành công hoặc thông báo lỗi nếu
có.
1. Lấy thông tin đăng nhập của người gửi và thông tin email.
2. Kết nối đến máy chủ SMTP của nhà cung cấp dịch vụ email
(ví dụ: Gmail).
3. Đăng nhập vào tài khoản email của người gửi.
4. Tạo nội dung email.
5. Gửi email đến người nhận.
6. Kiểm tra và thông báo kết quả.
Cài đặt thư viện
Thư viện smtplib và email là thư viện chuẩn của Python nên không
cần cài đặt thêm. Tuy nhiên, để tạo nội dung email dễ dàng hơn,
chúng ta sẽ sử dụng các module MIMEMultipart và MIMEText từ thư
viện email.
Code Python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
try:
# Kết nối đến máy chủ SMTP của Gmail
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
# Gửi email
text = msg.as_string()
server.sendmail(sender_email, recipient_email, text)
Tham số:
sender_email: Địa chỉ email người gửi.
sender_password: Mật khẩu của tài khoản email người
gửi.
recipient_email: Địa chỉ email người nhận.
subject: Tiêu đề email.
body: Nội dung email.
Tạo đối tượng MIMEMultipart: Để gắn các thành phần
email (tiêu đề, người gửi, người nhận, nội dung).
Gắn nội dung email: Sử dụng MIMEText để định dạng nội
dung email dưới dạng văn bản thuần (plain text).
Kết nối và đăng nhập vào máy chủ SMTP: Sử dụng
smtplib.SMTP để kết nối đến máy chủ Gmail và starttls()
để bắt đầu phiên mã hóa TLS.
Gửi email: Sử dụng sendmail để gửi email.
Đóng kết nối: Sử dụng quit() để đóng kết nối đến máy chủ
SMTP.
Sử dụng input() để nhận địa chỉ email người gửi, mật khẩu,
địa chỉ email người nhận, tiêu đề và nội dung email từ người
dùng.
Gọi hàm với các tham số được nhập bởi người dùng để gửi
email.
1. Mật khẩu không chính xác: Đảm bảo bạn đã nhập đúng mật
khẩu cho tài khoản Gmail của mình.
2. Bảo mật hai yếu tố: Nếu bạn đã bật xác thực hai yếu tố cho tài
khoản Gmail của mình, bạn cần sử dụng một mật khẩu ứng
dụng thay vì mật khẩu thông thường của bạn để đăng nhập qua
SMTP.
3. Quyền truy cập của ứng dụng kém an toàn: Google có thể
chặn đăng nhập từ các ứng dụng mà nó coi là kém an toàn, bao
gồm cả các script hoặc ứng dụng sử dụng SMTP để gửi email.
Bạn có thể cần phải cho phép truy cập của ứng dụng kém an
toàn trong cài đặt bảo mật của tài khoản Google của mình. Tuy
nhiên, lưu ý rằng việc này có thể làm tăng rủi ro bảo mật cho tài
khoản của bạn.
Nếu bạn đã bật xác thực hai yếu tố: Truy cập vào tài khoản
Google của bạn, tìm phần mật khẩu ứng dụng (trong phần bảo
mật), và tạo một mật khẩu ứng dụng mới. Sử dụng mật khẩu
này thay vì mật khẩu thông thường của bạn trong script.
Nếu bạn chưa bật xác thực hai yếu tố và không muốn sử
dụng mật khẩu ứng dụng: Bạn cần phải cho phép truy cập của
ứng dụng kém an toàn. Điều này có thể được thực hiện trong
phần bảo mật của cài đặt tài khoản Google của bạn. Tuy nhiên,
hãy cân nhắc rủi ro bảo mật khi thực hiện điều này.
Sau khi thực hiện các bước trên, hãy thử lại việc gửi email bằng
script của bạn.
Tóm tắt
Sử dụng thư viện smtplib để kết nối đến máy chủ SMTP và gửi
email.
Sử dụng email.mime.multipart.MIMEMultipart và
email.mime.text.MIMEText để tạo và định dạng email.
Gửi email từ tài khoản email của người gửi đến tài khoản email
người nhận.
Nhận thông tin đăng nhập và thông tin email từ người dùng.
Chương trình này gửi email từ tài khoản của người gửi đến người
nhận bằng cách sử dụng giao thức SMTP và thông tin đăng nhập
email của người gửi.
235 - Viết chương trình để nhận email
Thuật toán
Đầu vào:
Đầu ra:
# Chuyển đổi danh sách email ID thành một danh sách các
số nguyên
email_ids = messages[0].split()
# Giới hạn số lượng email cần lấy (ví dụ: 10 email gần
nhất)
num_emails = 10
latest_email_ids = email_ids[-num_emails:]
from_ = msg.get("From")
date_ = msg.get("Date")
print(f"Subject: {subject}")
print(f"From: {from_}")
print(f"Date: {date_}")
print("="*50)
try:
# Lấy nội dung của phần hiện tại
body =
part.get_payload(decode=True).decode()
except:
pass
imaplib:Sử dụng để kết nối và tương tác với máy chủ IMAP.
email: Sử dụng để xử lý các nội dung email.
decode_header: Sử dụng để giải mã tiêu đề email.
Tham số:
email_user: Địa chỉ email của người dùng.
email_pass: Mật khẩu của tài khoản email.
Kết nối đến máy chủ IMAP: Sử dụng imaplib.IMAP4_SSL để
kết nối đến máy chủ IMAP của Gmail.
Đăng nhập vào tài khoản email: Sử dụng
mail.login(email_user, email_pass) để đăng nhập.
Chọn hộp thư đến: Sử dụng mail.select("inbox") để
chọn hộp thư đến.
Tìm kiếm tất cả các email: Sử dụng mail.search(None,
"ALL") để tìm kiếm tất cả các email trong hộp thư đến.
Duyệt qua danh sách email: Lấy danh sách các email ID và
duyệt qua các email gần nhất.
Lấy và giải mã thông tin từ email: Sử dụng
email.message_from_bytes để chuyển đổi dữ liệu email và
decode_header để giải mã tiêu đề.
Kiểm tra và in nội dung email: Kiểm tra nếu email có nhiều
phần (multi-part) và in nội dung phù hợp.
Đóng kết nối: Sử dụng mail.logout() để đóng kết nối với
máy chủ.
Gọi hàm với các tham số được nhập bởi người dùng để
nhận email.
Tóm tắt
Sử dụng thư viện imaplib để kết nối đến máy chủ IMAP và nhận
email.
Sử dụng thư viện email để xử lý và giải mã nội dung email.
Nhận thông tin đăng nhập từ người dùng và kết nối đến hộp thư
đến.
Truy xuất và in thông tin của các email gần nhất.
Chương trình này kết nối đến hộp thư đến của người dùng thông
qua giao thức IMAP, lấy và in thông tin của các email gần nhất.
236 - Viết chương trình để phân giải
tên miền
Thuật toán
Đầu vào: Tên miền cần phân giải.
Đầu ra: Địa chỉ IP tương ứng với tên miền đó.
Các bước thực hiện:
1. Nhận tên miền từ người dùng.
2. Sử dụng thư viện socket để phân giải tên miền thành địa chỉ
IP.
3. Trả về và in địa chỉ IP.
Code Python
import socket
def resolve_domain(domain):
try:
# Phân giải tên miền thành địa chỉ IP
ip_address = socket.gethostbyname(domain)
return ip_address
except socket.gaierror as e:
return f"Không thể phân giải tên miền: {e}"
Tham số:
domain: Tên miền cần phân giải.
Phân giải tên miền: Sử dụng
socket.gethostbyname(domain) để phân giải tên miền thành
địa chỉ IP.
Xử lý ngoại lệ: Sử dụng try-except để bắt và xử lý lỗi nếu
không thể phân giải tên miền.
Gọi hàm với tên miền được nhập bởi người dùng để phân
giải tên miền và in kết quả.
Tóm tắt
Sử dụng thư viện socket để phân giải tên miền thành địa chỉ IP.
Nhận tên miền từ người dùng và gọi hàm resolve_domain để
thực hiện phân giải.
Xử lý ngoại lệ khi không thể phân giải tên miền.
Chương trình này phân giải tên miền (DNS resolution) bằng cách
nhận tên miền từ người dùng và sử dụng thư viện socket để trả về
địa chỉ IP tương ứng.
237 - Viết chương trình để tạo một
máy chủ TCP đơn giản
Thuật toán
Đầu vào: Không có đầu vào từ người dùng.
Đầu ra: Máy chủ TCP chạy và lắng nghe các kết nối từ máy
khách.
Các bước thực hiện:
1. Tạo một socket TCP.
2. Gán socket đến một địa chỉ IP và một cổng.
3. Đặt socket ở trạng thái lắng nghe các kết nối đến.
4. Chấp nhận kết nối từ máy khách.
5. Nhận dữ liệu từ máy khách và phản hồi.
6. Đóng kết nối.
Code Python
import socket
# Đặt socket ở trạng thái lắng nghe các kết nối đến
server_socket.listen()
print(f"Máy chủ TCP đang lắng nghe tại {host}:{port}...")
while True:
# Chấp nhận kết nối từ máy khách
client_socket, client_address =
server_socket.accept()
print(f"Đã kết nối với {client_address}")
with client_socket:
while True:
# Nhận dữ liệu từ máy khách
data = client_socket.recv(1024)
if not data:
break
print(f"Nhận được từ {client_address}:
{data.decode()}")
Tóm tắt
Sử dụng thư viện socket để tạo một máy chủ TCP.
Tạo một socket TCP, gán nó đến một địa chỉ IP và cổng.
Đặt socket ở trạng thái lắng nghe và chấp nhận kết nối từ máy
khách.
Nhận dữ liệu từ máy khách và phản hồi lại.
In ra dữ liệu nhận được và thông tin kết nối.
Chương trình này tạo một máy chủ TCP đơn giản, lắng nghe các kết
nối từ máy khách, nhận và phản hồi lại các thông điệp từ máy
khách.
238 - Viết chương trình để tạo một
máy khách TCP đơn giản
Thuật toán
Đầu vào:
Đầu ra:
# Kết nối đến máy chủ với địa chỉ IP và cổng cụ thể
client_socket.connect((host, port))
print(f"Kết nối đến máy chủ {host}:{port}")
try:
# Gửi thông điệp đến máy chủ
client_socket.sendall(message.encode())
print(f"Đã gửi: {message}")
Tham số:
host: Địa chỉ IP của máy chủ (mặc định là 127.0.0.1).
port: Cổng của máy chủ (mặc định là 65432).
message: Thông điệp cần gửi đến máy chủ (mặc định là
“Hello, Server!”).
Tạo socket TCP: Sử dụng socket.socket(socket.AF_INET,
socket.SOCK_STREAM) để tạo socket TCP.
Kết nối đến máy chủ: Sử dụng
client_socket.connect((host, port)) để kết nối đến máy
chủ.
Gửi thông điệp: Sử dụng
client_socket.sendall(message.encode()) để gửi thông
điệp đến máy chủ.
Nhận phản hồi: Sử dụng client_socket.recv(1024) để
nhận phản hồi từ máy chủ.
Xử lý ngoại lệ: Sử dụng try-except để xử lý các lỗi xảy ra
trong quá trình gửi và nhận dữ liệu.
Đóng kết nối: Sử dụng client_socket.close() để đóng kết
nối đến máy chủ.
Tóm tắt
Sử dụng thư viện socket để tạo một máy khách TCP.
Tạo một socket TCP và kết nối đến máy chủ với địa chỉ IP và
cổng cụ thể.
Gửi thông điệp đến máy chủ và nhận phản hồi từ máy chủ.
Đóng kết nối sau khi nhận phản hồi.
Chương trình này tạo một máy khách TCP đơn giản, kết nối đến một
máy chủ TCP, gửi thông điệp và nhận phản hồi từ máy chủ, sau đó
đóng kết nối.
239 - Viết chương trình để tạo một
máy chủ UDP đơn giản
Thuật toán
Đầu vào: Không có đầu vào từ người dùng.
Đầu ra: Máy chủ UDP chạy và lắng nghe các gói tin từ máy
khách.
Các bước thực hiện:
1. Tạo một socket UDP.
2. Gán socket đến một địa chỉ IP và một cổng.
3. Đặt socket ở trạng thái lắng nghe các gói tin đến.
4. Nhận dữ liệu từ máy khách và phản hồi.
5. Lặp lại quá trình nhận và phản hồi cho đến khi dừng máy
chủ.
Code Python
import socket
while True:
# Nhận dữ liệu từ máy khách
data, client_address = server_socket.recvfrom(1024)
print(f"Nhận được từ {client_address}:
{data.decode()}")
Tham số:
host: Địa chỉ IP của máy chủ (mặc định là 127.0.0.1).
port: Cổng của máy chủ (mặc định là 65432).
Tạo socket UDP: Sử dụng socket.socket(socket.AF_INET,
socket.SOCK_DGRAM) để tạo socket UDP.
Gán socket đến địa chỉ IP và cổng: Sử dụng
server_socket.bind((host, port)).
Vòng lặp nhận và phản hồi dữ liệu:
Sử dụng server_socket.recvfrom(1024) để nhận dữ liệu
từ máy khách và lấy địa chỉ của máy khách.
In ra dữ liệu nhận được và địa chỉ máy khách.
Sử dụng server_socket.sendto(response.encode(),
client_address) để gửi phản hồi lại cho máy khách.
Tóm tắt
Sử dụng thư viện socket để tạo một máy chủ UDP.
Tạo một socket UDP và gán nó đến một địa chỉ IP và cổng cụ
thể.
Đặt socket ở trạng thái lắng nghe và nhận dữ liệu từ máy khách.
Gửi phản hồi lại cho máy khách sau khi nhận dữ liệu.
Lặp lại quá trình nhận và phản hồi dữ liệu.
Chương trình này tạo một máy chủ UDP đơn giản, lắng nghe các gói
tin từ máy khách, nhận và phản hồi lại các gói tin đó.
240 - Viết chương trình để tạo một
máy khách UDP đơn giản
Thuật toán
Đầu vào:
Đầu ra:
try:
# Gửi thông điệp đến máy chủ
client_socket.sendto(message.encode(), (host, port))
print(f"Đã gửi: {message} đến {host}:{port}")
Tham số:
host: Địa chỉ IP của máy chủ (mặc định là 127.0.0.1).
port: Cổng của máy chủ (mặc định là 65432).
message: Thông điệp cần gửi đến máy chủ (mặc định là
“Hello, Server!”).
Tạo socket UDP: Sử dụng socket.socket(socket.AF_INET,
socket.SOCK_DGRAM) để tạo socket UDP.
Gửi thông điệp: Sử dụng
client_socket.sendto(message.encode(), (host, port))
để gửi thông điệp đến máy chủ.
Nhận phản hồi: Sử dụng client_socket.recvfrom(1024) để
nhận phản hồi từ máy chủ.
Xử lý ngoại lệ: Sử dụng try-except để xử lý các lỗi xảy ra
trong quá trình gửi và nhận dữ liệu.
Đóng kết nối: Sử dụng client_socket.close() để đóng kết
nối đến máy chủ.
Gọi hàm với các tham số được nhập bởi người dùng để bắt
đầu máy khách UDP.
Tóm tắt
Sử dụng thư viện socket để tạo một máy khách UDP.
Tạo một socket UDP và gửi gói tin đến máy chủ với địa chỉ IP và
cổng cụ thể.
Nhận phản hồi từ máy chủ.
Đóng kết nối sau khi nhận phản hồi.
Chương trình này tạo một máy khách UDP đơn giản, gửi gói tin đến
máy chủ UDP và nhận phản hồi từ máy chủ, sau đó đóng kết nối.
Chương 25 : Bài tập với API cơ
bản
241. Viết chương trình để gửi yêu cầu GET đến API và lấy dữ liệu.
242. Viết chương trình để gửi yêu cầu POST đến API và lấy dữ liệu.
243. Viết chương trình để phân tích dữ liệu JSON từ API.
244. Viết chương trình để gửi yêu cầu PUT đến API và cập nhật dữ
liệu.
245. Viết chương trình để gửi yêu cầu DELETE đến API và xóa dữ
liệu.
246. Viết chương trình để xử lý lỗi khi gọi API.
247. Viết chương trình để kiểm tra trạng thái của API.
248. Viết chương trình để xác thực người dùng khi gọi API.
249. Viết chương trình để lấy dữ liệu thời tiết từ API.
250. Viết chương trình để lấy dữ liệu tỷ giá hối đoái từ API.
241 - Viết chương trình để gửi yêu cầu
GET đến API và lấy dữ liệu
Thuật toán
Đầu vào:
URL của API (endpoint)
Các thông tin cấu hình thêm nếu cần (headers, parameters)
Đầu ra:
Dữ liệu nhận được từ API (thường ở dạng JSON)
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API.
3. Gửi yêu cầu GET đến API.
4. Nhận và xử lý dữ liệu trả về từ API.
5. Hiển thị dữ liệu hoặc thực hiện các bước xử lý tiếp theo.
Code Python
import requests
Tóm tắt:
Import thư viện requests để gửi các yêu cầu HTTP.
Định nghĩa URL của API để xác định điểm đến của yêu cầu
GET.
Gửi yêu cầu GET và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Xử lý và hiển thị dữ liệu JSON nhận được từ API.
Chương trình này gửi một yêu cầu GET đến một API, nhận dữ liệu
JSON từ phản hồi và hiển thị dữ liệu nếu yêu cầu thành công.
242 - Viết chương trình để gửi yêu cầu
POST đến API và lấy dữ liệu
Thuật toán
Đầu vào:
URL của API (endpoint)
Dữ liệu gửi kèm theo yêu cầu POST (body data)
Các thông tin cấu hình thêm nếu cần (headers, parameters)
Đầu ra:
Dữ liệu nhận được từ API (thường ở dạng JSON)
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API và dữ liệu gửi kèm.
3. Gửi yêu cầu POST đến API.
4. Nhận và xử lý dữ liệu trả về từ API.
5. Hiển thị dữ liệu hoặc thực hiện các bước xử lý tiếp theo.
Code Python
import requests
Tóm tắt:
Import thư viện requests để gửi các yêu cầu HTTP.
Định nghĩa URL của API, dữ liệu gửi kèm theo yêu cầu POST
và tiêu đề HTTP.
Gửi yêu cầu POST và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Xử lý và hiển thị dữ liệu JSON nhận được từ API.
Chương trình này gửi một yêu cầu POST đến một API với dữ liệu
kèm theo, nhận dữ liệu JSON từ phản hồi và hiển thị dữ liệu nếu yêu
cầu thành công.
243 - Viết chương trình để phân tích
dữ liệu JSON từ API
Thuật toán
Đầu vào:
URL của API (endpoint)
Các thông tin cấu hình thêm nếu cần (headers, parameters)
Đầu ra:
Dữ liệu đã được phân tích và xử lý từ JSON
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API và các cấu hình khác.
3. Gửi yêu cầu GET đến API.
4. Nhận và xử lý dữ liệu JSON từ API.
5. Phân tích và xử lý dữ liệu JSON theo yêu cầu cụ thể.
6. Hiển thị kết quả phân tích.
# Bước 2: Định nghĩa URL của API và các cấu hình khác
api_url = "https://api.example.com/data"
headers = {
"Accept": "application/json"
}
Thuật toán
Đầu vào:
URL của API (endpoint)
Dữ liệu gửi kèm theo yêu cầu PUT (body data)
Các thông tin cấu hình thêm nếu cần (headers)
Đầu ra:
Phản hồi từ API sau khi cập nhật dữ liệu
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API và dữ liệu gửi kèm.
3. Gửi yêu cầu PUT đến API.
4. Nhận và xử lý phản hồi từ API.
5. Hiển thị kết quả phản hồi.
Code Python
import requests
# Bước 2: Định nghĩa URL của API và dữ liệu gửi kèm
api_url = "https://api.example.com/data/1"
payload = {
"key1": "new_value1",
"key2": "new_value2"
}
headers = {
"Content-Type": "application/json"
}
Tóm tắt:
Import thư viện requests để gửi các yêu cầu HTTP.
Định nghĩa URL của API, dữ liệu gửi kèm theo yêu cầu PUT và
tiêu đề HTTP.
Gửi yêu cầu PUT và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Hiển thị kết quả phản hồi hoặc thông báo lỗi.
Chương trình này gửi một yêu cầu PUT đến một API, cập nhật dữ
liệu trên server, nhận phản hồi từ API và hiển thị kết quả cập nhật
hoặc thông báo lỗi nếu yêu cầu không thành công.
245 - Viết chương trình để gửi yêu cầu
DELETE đến API và xóa dữ liệu
Thuật toán
Đầu vào:
URL của API (endpoint)
Các thông tin cấu hình thêm nếu cần (headers)
Đầu ra:
Phản hồi từ API sau khi xóa dữ liệu
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API.
3. Gửi yêu cầu DELETE đến API.
4. Nhận và xử lý phản hồi từ API.
5. Hiển thị kết quả phản hồi.
Code Python
import requests
Tóm tắt:
Import thư viện requests để gửi các yêu cầu HTTP.
Định nghĩa URL của API và cấu hình tiêu đề HTTP.
Gửi yêu cầu DELETE và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Hiển thị kết quả phản hồi hoặc thông báo lỗi.
Chương trình này gửi một yêu cầu DELETE đến một API, xóa dữ
liệu trên server, nhận phản hồi từ API và hiển thị kết quả xóa hoặc
thông báo lỗi nếu yêu cầu không thành công.
246 - Viết chương trình để xử lý lỗi khi
gọi API
Thuật toán
Đầu vào:
URL của API (endpoint)
Phương thức HTTP (GET, POST, PUT, DELETE)
Các thông tin cấu hình thêm nếu cần (headers, parameters,
data)
Đầu ra:
Phản hồi từ API hoặc thông báo lỗi chi tiết
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa hàm để gửi yêu cầu HTTP và xử lý lỗi.
3. Định nghĩa URL của API và các cấu hình khác.
4. Gửi yêu cầu đến API và xử lý phản hồi.
5. Hiển thị kết quả hoặc thông báo lỗi.
Code Python
import requests
from requests.exceptions import HTTPError, Timeout,
RequestException
# Bước 2: Định nghĩa hàm để gửi yêu cầu HTTP và xử lý lỗi
def send_request(method, url, **kwargs):
try:
if method.upper() == 'GET':
response = requests.get(url, **kwargs)
elif method.upper() == 'POST':
response = requests.post(url, **kwargs)
elif method.upper() == 'PUT':
response = requests.put(url, **kwargs)
elif method.upper() == 'DELETE':
response = requests.delete(url, **kwargs)
else:
raise ValueError("Phương thức HTTP không hợp lệ")
# Bước 3: Định nghĩa URL của API và các cấu hình khác
api_url = "https://api.example.com/data/1"
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
payload = {
"key1": "value1",
"key2": "value2"
}
Tóm tắt:
Import thư viện requests và các ngoại lệ để gửi yêu cầu
HTTP và xử lý lỗi.
Định nghĩa hàm send_request để gửi yêu cầu HTTP và xử lý
lỗi.
Định nghĩa URL của API, cấu hình tiêu đề HTTP và dữ liệu.
Gửi yêu cầu HTTP và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Hiển thị kết quả hoặc thông báo lỗi.
Chương trình này gửi một yêu cầu HTTP đến API, xử lý các lỗi có
thể xảy ra và hiển thị kết quả hoặc thông báo lỗi chi tiết.
247 - Viết chương trình để kiểm tra
trạng thái của API
Thuật toán
Đầu vào:
URL của API (endpoint)
Các thông tin cấu hình thêm nếu cần (headers)
Đầu ra:
Trạng thái của API (hoạt động bình thường hoặc gặp sự cố)
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa URL của API.
3. Gửi yêu cầu GET đến API.
4. Nhận và kiểm tra mã trạng thái HTTP từ phản hồi.
5. Hiển thị trạng thái của API.
Code Python
import requests
from requests.exceptions import HTTPError, Timeout,
RequestException
# Bước 4: Gửi yêu cầu đến API và kiểm tra trạng thái
result = check_api_status(api_url, headers=headers)
# Bước 5: Hiển thị trạng thái của API
print(result)
Tóm tắt:
Import thư viện requests và các ngoại lệ để gửi yêu cầu
HTTP và xử lý lỗi.
Định nghĩa URL của API và cấu hình tiêu đề HTTP.
Định nghĩa hàm check_api_status để gửi yêu cầu GET và xử
lý lỗi.
Gửi yêu cầu GET và nhận phản hồi từ API.
Kiểm tra mã trạng thái của phản hồi để xác định xem API có
hoạt động bình thường không.
Hiển thị trạng thái của API hoặc thông báo lỗi.
Chương trình này gửi một yêu cầu GET đến API, kiểm tra mã trạng
thái HTTP để xác định xem API có hoạt động bình thường không, và
hiển thị trạng thái của API hoặc thông báo lỗi chi tiết nếu có sự cố.
248 - Viết chương trình để xác thực
người dùng khi gọi API
Thuật toán
Đầu vào:
URL của API (endpoint)
Phương thức HTTP (GET, POST, PUT, DELETE)
Thông tin xác thực (ví dụ: token, username/password)
Các thông tin cấu hình thêm nếu cần (headers, parameters,
data)
Đầu ra:
Phản hồi từ API hoặc thông báo lỗi chi tiết
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa hàm để gửi yêu cầu HTTP và xác thực người
dùng.
3. Định nghĩa URL của API, thông tin xác thực và các cấu hình
khác.
4. Gửi yêu cầu đến API và xử lý phản hồi.
5. Hiển thị kết quả hoặc thông báo lỗi.
Thư viện sử dụng
import requests
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
from requests.exceptions import HTTPError, Timeout,
RequestException
Code Python
import requests
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
from requests.exceptions import HTTPError, Timeout,
RequestException
# Bước 2: Định nghĩa hàm để gửi yêu cầu HTTP và xác thực
người dùng
def send_authenticated_request(method, url, auth=None,
**kwargs):
try:
if method.upper() == 'GET':
response = requests.get(url, auth=auth, **kwargs)
elif method.upper() == 'POST':
response = requests.post(url, auth=auth,
**kwargs)
elif method.upper() == 'PUT':
response = requests.put(url, auth=auth, **kwargs)
elif method.upper() == 'DELETE':
response = requests.delete(url, auth=auth,
**kwargs)
else:
raise ValueError("Phương thức HTTP không hợp lệ")
# Bước 3: Định nghĩa URL của API, thông tin xác thực và các
cấu hình khác
api_url = "https://api.example.com/data"
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
payload = {
"key1": "value1",
"key2": "value2"
}
# Xác thực cơ bản (Basic Authentication)
auth = HTTPBasicAuth('username', 'password')
Thuật toán
Đầu vào:
URL của API (endpoint)
Thông tin xác thực (nếu có)
Danh sách các thành phố lớn ở Việt Nam
Đầu ra:
Dữ liệu thời tiết của các thành phố
Các bước thực hiện:
1. Import các thư viện cần thiết.
2. Định nghĩa hàm để gửi yêu cầu HTTP đến API và lấy dữ liệu
thời tiết.
3. Định nghĩa URL của API và các cấu hình khác.
4. Gửi yêu cầu đến API cho mỗi thành phố và xử lý phản hồi.
5. Hiển thị kết quả.
# Bước 2: Định nghĩa hàm để gửi yêu cầu HTTP đến API và lấy
dữ liệu thời tiết
def get_weather(city_name, api_key):
base_url =
"http://api.openweathermap.org/data/2.5/weather"
params = {
'q': city_name,
'appid': api_key,
'units': 'metric',
'lang': 'vi'
}
try:
response = requests.get(base_url, params=params)
response.raise_for_status()
return response.json()
except requests.exceptions.HTTPError as http_err:
return {"error": f"HTTP error occurred: {http_err}"}
except requests.exceptions.RequestException as req_err:
return {"error": f"Request error occurred:
{req_err}"}
# Bước 3: Định nghĩa URL của API và các cấu hình khác
api_key = "your_api_key_here" # Thay thế bằng API key của
bạn
cities = ["Hanoi", "Ho Chi Minh City", "Da Nang", "Hue", "Can
Tho"]
# Bước 4: Gửi yêu cầu đến API cho mỗi thành phố và xử lý phản
hồi
for city in cities:
weather_data = get_weather(city, api_key)
if 'error' in weather_data:
print(f"Lỗi khi lấy dữ liệu thời tiết cho {city}:
{weather_data['error']}")
else:
print(f"Thời tiết tại {city}:")
print(f"Nhiệt độ: {weather_data['main']['temp']}°C")
print(f"Mô tả: {weather_data['weather'][0]
['description']}")
print("-----------")
Tóm tắt:
Import thư viện requests để gửi các yêu cầu HTTP.
Định nghĩa hàm get_weather để gửi yêu cầu HTTP và lấy dữ
liệu thời tiết.
Định nghĩa API key và danh sách các thành phố để lấy dữ
liệu thời tiết.
Gửi yêu cầu HTTP và nhận phản hồi từ API cho mỗi thành
phố.
Kiểm tra mã trạng thái của phản hồi để xác định xem yêu cầu
có thành công không.
Hiển thị kết quả hoặc thông báo lỗi.
Chương trình này gửi các yêu cầu HTTP đến API OpenWeatherMap
để lấy dữ liệu thời tiết của các thành phố lớn ở Việt Nam, xử lý các
lỗi có thể xảy ra, và hiển thị kết quả hoặc thông báo lỗi chi tiết nếu
có sự cố.
250 - Viết chương trình để lấy dữ liệu
tỷ giá hối đoái từ API
Thuật toán:
Đầu vào:
URL của API cung cấp tỷ giá hối đoái (ví dụ:
https://api.exchangerate-api.com/v4/latest/USD).
Một cặp tiền tệ (ví dụ: từ USD sang VND) cần lấy tỷ giá.
Đầu ra:
Tỷ giá hối đoái từ loại tiền tệ cơ sở sang loại tiền tệ đích.
Code Python
import requests
try:
# Gửi yêu cầu HTTP GET đến API
response = requests.get(api_url)
# Kiểm tra nếu yêu cầu thành công (mã trạng thái 200)
if response.status_code == 200:
# Phân tích dữ liệu JSON nhận được từ API
data = response.json()
if exchange_rate:
# Hiển thị tỷ giá hối đoái
print(f"Tỷ giá hối đoái từ {base_currency} sang
{target_currency} là: {exchange_rate}")
else:
print(f"Không tìm thấy tỷ giá hối đoái cho
{target_currency}.")
else:
print(f"Không thể lấy dữ liệu từ API. Mã trạng thái
HTTP: {response.status_code}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Bổ sung
Không có các cách giải khác phức tạp hơn cách trên vì cách tiếp
cận này đã đơn giản và trực quan.
Tóm tắt:
Sử dụng thư viện requests để gửi yêu cầu HTTP GET.
Phân tích cú pháp JSON để trích xuất dữ liệu.
Sử dụng cấu trúc điều kiện để kiểm tra và xử lý dữ liệu.
Sử dụng cấu trúc try-except để xử lý lỗi.
Chương trình lấy dữ liệu tỷ giá hối đoái từ API và hiển thị tỷ giá hối
đoái từ USD sang một loại tiền tệ khác, xử lý các trường hợp lỗi
trong quá trình lấy dữ liệu.
Chương 26 : Bài tập với web
scraping cơ bản
251. Viết chương trình để tải xuống trang web.
252. Viết chương trình để trích xuất tiêu đề của trang web.
253. Viết chương trình để trích xuất tất cả các liên kết từ trang web.
254. Viết chương trình để trích xuất tất cả các hình ảnh từ trang web.
255. Viết chương trình để trích xuất nội dung của một bài viết từ trang
web.
256. Viết chương trình để trích xuất tất cả các đoạn văn từ trang web.
257. Viết chương trình để trích xuất tất cả các bảng từ trang web.
258. Viết chương trình để trích xuất tất cả các tiêu đề từ trang web.
259. Viết chương trình để trích xuất tất cả các đoạn mã nguồn từ
trang web.
260. Viết chương trình để trích xuất tất cả các thẻ meta từ trang web.
251 - Viết chương trình để tải xuống
trang web
Web scraping là kỹ thuật tự động thu thập thông tin từ các trang
web. Trong trường hợp này, chương trình sẽ gửi yêu cầu tới một
URL, nhận về nội dung HTML và có thể trích xuất một số thông tin
cụ thể từ đó.
Thuật toán:
Đầu vào:
URL của trang web cần tải xuống.
(Tuỳ chọn) Các thông tin cụ thể cần trích xuất từ trang web, ví dụ
như tiêu đề (title), tất cả các liên kết (links), hoặc các đoạn văn
bản (paragraphs).
Đầu ra:
Nội dung HTML của trang web, có thể được lưu vào một tệp
hoặc in ra màn hình.
(Tuỳ chọn) Các thông tin cụ thể được trích xuất từ trang web.
Các bước thực hiện:
1. Nhập liệu: Người dùng nhập URL của trang web cần tải xuống.
2. Gửi yêu cầu HTTP: Sử dụng thư viện requests để gửi yêu cầu
GET tới URL đó.
3. Xử lý phản hồi: Kiểm tra nếu yêu cầu thành công (mã trạng thái
HTTP 200).
4. Lưu nội dung HTML: Lưu nội dung HTML của trang web vào
một tệp hoặc in ra màn hình.
5. Phân tích và trích xuất dữ liệu: Sử dụng BeautifulSoup để
phân tích cú pháp HTML và trích xuất thông tin cụ thể nếu cần.
Code Python
import requests
from bs4 import BeautifulSoup
try:
# Gửi yêu cầu HTTP GET đến URL
response = requests.get(url)
# Kiểm tra nếu yêu cầu thành công (mã trạng thái 200)
if response.status_code == 200:
# Lưu nội dung HTML vào tệp
with open(output_file, "w", encoding='utf-8') as
file:
file.write(response.text)
print(f"Nội dung HTML của trang web đã được lưu vào
tệp '{output_file}'.")
else:
print(f"Không thể tải xuống trang web. Mã trạng thái
HTTP: {response.status_code}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
Tóm tắt:
Sử dụng thư viện requests để gửi yêu cầu HTTP GET.
Sử dụng thư viện BeautifulSoup để phân tích cú pháp HTML.
Sử dụng phương thức open() và write() để lưu nội dung HTML
vào tệp.
Sử dụng các phương thức của BeautifulSoup để trích xuất
thông tin cụ thể từ HTML.
Sử dụng cấu trúc try-except để xử lý lỗi.
Chương trình này tải xuống nội dung HTML của một trang web từ
URL được cung cấp bởi người dùng, phân tích cú pháp HTML để
trích xuất tiêu đề trang, các liên kết, và các đoạn văn bản, sau đó
hiển thị hoặc lưu các thông tin này.
252 - Viết chương trình để trích xuất
tiêu đề của trang web
Thuật toán:
Đầu vào:
Đầu ra:
def extract_title(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
# Trả về tiêu đề
return title
else:
return None
URL của trang web cần trích xuất tiêu đề: Khai báo URL
của trang web.
Gọi hàm extract_title và in tiêu đề:
Gọi hàm extract_title với URL đã khai báo.
Kiểm tra và in tiêu đề nếu có, ngược lại in thông báo lỗi.
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.title.string: Trích xuất tiêu đề trang web từ thẻ <title>.
Chương trình này trích xuất và in tiêu đề của một trang web từ URL
cung cấp bằng cách sử dụng thư viện requests để gửi yêu cầu
HTTP và BeautifulSoup để phân tích cú pháp HTML.
253 - Viết chương trình để trích xuất
tất cả các liên kết từ trang web
Thuật toán:
Đầu vào:
URL của trang web cần trích xuất các liên kết (nhập từ người
dùng).
Đầu ra:
def extract_links(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_links(url):
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all(‘a’, href=True): Tìm tất cả các thẻ <a> có thuộc
tính href.
links.append(link[‘href’]): Thêm giá trị của thuộc tính href vào
danh sách links.
Chương trình này trích xuất và in tất cả các liên kết từ một trang web
mà người dùng nhập vào bằng cách sử dụng thư viện requests để
gửi yêu cầu HTTP và BeautifulSoup để phân tích cú pháp HTML.
254 - Viết chương trình để trích xuất
tất cả các hình ảnh từ trang web
Thuật toán:
Đầu vào:
URL của trang web cần trích xuất các hình ảnh (nhập từ
người dùng).
Đầu ra:
Danh sách các URLs của các hình ảnh từ trang web.
def extract_images(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_images(url):
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all(‘img’, src=True): Tìm tất cả các thẻ <img> có
thuộc tính src.
images.append(img[‘src’]): Thêm giá trị của thuộc tính src vào
danh sách images.
Chương trình này trích xuất và in tất cả các URLs của các hình ảnh
từ một trang web mà người dùng nhập vào bằng cách sử dụng thư
viện requests để gửi yêu cầu HTTP và BeautifulSoup để phân tích
cú pháp HTML.
255 - Viết chương trình để trích xuất
nội dung của một bài viết từ trang
web
Thuật toán:
Đầu vào:
URL của trang web chứa bài viết (nhập từ người dùng).
Đầu ra:
def extract_article_content(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
if article_content:
# Trả về nội dung bài viết dưới dạng chuỗi
return article_content.get_text(separator='\n')
else:
return None
else:
return None
2. Hàm extract_article_content(url):
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find(‘div’, class_=‘article-content’): Tìm thẻ <div> với
class article-content.
article_content.get_text(separator=‘’): Trích xuất nội dung văn
bản từ thẻ và trả về dưới dạng chuỗi.
Chương trình này trích xuất và in nội dung của một bài viết từ một
trang web mà người dùng nhập vào bằng cách sử dụng thư viện
requests để gửi yêu cầu HTTP và BeautifulSoup để phân tích cú
pháp HTML.
256 - Viết chương trình để trích xuất
tất cả các đoạn văn từ trang web
Thuật toán:
Đầu vào:
URL của trang web chứa các đoạn văn (nhập từ người
dùng).
Đầu ra:
def extract_paragraphs(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_paragraphs(url):
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all(‘p’): Tìm tất cả các thẻ <p>.
p.get_text(): Trích xuất nội dung văn bản từ thẻ <p> và thêm vào
danh sách paragraphs.
Chương trình này trích xuất và in tất cả các đoạn văn từ một trang
web mà người dùng nhập vào bằng cách sử dụng thư viện requests
để gửi yêu cầu HTTP và BeautifulSoup để phân tích cú pháp HTML.
257 - Viết chương trình để trích xuất
tất cả các bảng từ trang web
Thuật toán:
Đầu vào:
URL của trang web chứa các bảng (nhập từ người dùng).
Đầu ra:
def extract_tables(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
requests: Thư viện này dùng để gửi các yêu cầu HTTP.
beautifulsoup4: Thư viện này dùng để phân tích cú pháp
HTML và trích xuất dữ liệu từ đó.
pandas: Thư viện này dùng để xử lý dữ liệu và chuyển đổi
bảng HTML thành DataFrame.
2. Hàm extract_tables(url):
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
import pandas as pd: Thư viện để xử lý dữ liệu và chuyển đổi
bảng HTML thành DataFrame.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all(‘table’): Tìm tất cả các thẻ <table>.
pd.read_html(str(table))[0]: Chuyển đổi bảng HTML thành
DataFrame.
Chương trình này trích xuất và in tất cả các bảng từ một trang web
mà người dùng nhập vào bằng cách sử dụng thư viện requests để
gửi yêu cầu HTTP, BeautifulSoup để phân tích cú pháp HTML, và
pandas để chuyển đổi bảng HTML thành DataFrame.
258 - Viết chương trình để trích xuất
tất cả các tiêu đề từ trang web
Thuật toán:
Đầu vào:
URL của trang web chứa các tiêu đề (nhập từ người dùng).
Đầu ra:
def extract_headings(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_headings(url):
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all([‘h1’, ‘h2’, ‘h3’, ‘h4’, ‘h5’, ‘h6’]): Tìm tất cả các
thẻ tiêu đề từ <h1> đến <h6>.
heading.get_text().strip(): Trích xuất nội dung văn bản từ thẻ
tiêu đề và loại bỏ khoảng trắng đầu cuối.
Chương trình này trích xuất và in tất cả các tiêu đề từ một trang web
mà người dùng nhập vào bằng cách sử dụng thư viện requests để
gửi yêu cầu HTTP và BeautifulSoup để phân tích cú pháp HTML.
259 - Viết chương trình để trích xuất
tất cả các đoạn mã nguồn từ trang
web
Thuật toán:
Đầu vào:
Đầu ra:
Code Python
import requests
from bs4 import BeautifulSoup
def extract_code_snippets(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_code_snippets(url):
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all([‘code’, ‘pre’]): Tìm tất cả các thẻ <code> và
<pre>.
code.get_text(): Trích xuất nội dung văn bản từ các thẻ <code>
và <pre>.
Chương trình này trích xuất và in tất cả các đoạn mã nguồn từ một
trang web mà người dùng nhập vào bằng cách sử dụng thư viện
requests để gửi yêu cầu HTTP và BeautifulSoup để phân tích cú
pháp HTML.
260 - Viết chương trình để trích xuất
tất cả các thẻ meta từ trang web
Thuật toán:
Đầu vào:
URL của trang web chứa các thẻ meta (nhập từ người
dùng).
Đầu ra:
def extract_meta_tags(url):
# Gửi yêu cầu HTTP tới URL
response = requests.get(url)
2. Hàm extract_meta_tags(url):
Bổ sung
Không có bổ sung.
Tóm tắt:
import requests: Thư viện để gửi các yêu cầu HTTP.
from bs4 import BeautifulSoup: Thư viện để phân tích cú pháp
HTML.
requests.get(url): Gửi yêu cầu HTTP GET tới URL.
response.status_code: Kiểm tra mã trạng thái phản hồi HTTP.
BeautifulSoup(response.content, ‘html.parser’): Phân tích nội
dung HTML của phản hồi.
soup.find_all(‘meta’): Tìm tất cả các thẻ <meta>.
meta.attrs: Trích xuất thuộc tính của các thẻ <meta>.
Chương trình này trích xuất và in tất cả các thẻ meta từ một trang
web mà người dùng nhập vào bằng cách sử dụng thư viện requests
để gửi yêu cầu HTTP và BeautifulSoup để phân tích cú pháp HTML.
Chương 27 : Bài toán ma trận
cơ bản
261. Viết chương trình để tính tổng của hai ma trận.
262. Viết chương trình để tính hiệu của hai ma trận.
263. Viết chương trình để tính tích của hai ma trận.
264. Viết chương trình để tính định thức của một ma trận.
265. Viết chương trình để tính ma trận nghịch đảo của một ma trận.
266. Viết chương trình để tính ma trận chuyển vị của một ma trận.
267. Viết chương trình để tính hạng của một ma trận.
268. Viết chương trình để kiểm tra một ma trận có phải là ma trận
đơn vị không.
269. Viết chương trình để kiểm tra một ma trận có phải là ma trận đối
xứng không.
270. Viết chương trình để kiểm tra một ma trận có phải là ma trận tam
giác trên không.
261 - Viết chương trình để tính tổng
của hai ma trận
Thuật toán:
Đầu vào:
Hai ma trận (mảng hai chiều) có cùng kích thước.
Đầu ra:
Ma trận tổng (mảng hai chiều) cũng có cùng kích thước với hai
ma trận đầu vào.
return result_matrix
matrix2 = [
[9, 8, 7],
[6, 5, 4],
[3, 2, 1]
]
Tóm tắt:
Hàm add_matrices dùng để cộng hai ma trận có cùng kích
thước.
Sử dụng vòng lặp để truy cập và cộng các phần tử tương ứng
của hai ma trận.
Kiểm tra kích thước của hai ma trận trước khi thực hiện phép
cộng.
Chương trình thực hiện phép cộng hai ma trận cùng kích thước và
trả về ma trận kết quả.
262 - Viết chương trình để tính hiệu
của hai ma trận
Thuật toán:
Đầu vào: Hai ma trận A và B cùng kích thước m x n.
Đầu ra: Ma trận C kích thước m x n với mỗi phần tử C[i][j] =
A[i][j] - B[i][j].
Các bước thực hiện:
1. Kiểm tra kích thước của hai ma trận để đảm bảo chúng cùng
kích thước.
2. Tạo một ma trận mới C cùng kích thước.
3. Duyệt qua từng phần tử của ma trận và tính hiệu của các
phần tử tương ứng từ hai ma trận đầu vào.
4. Trả về ma trận C đã tính toán được.
Code Python
def subtract_matrices(A, B):
# Kiểm tra kích thước ma trận
if len(A) != len(B) or len(A[0]) != len(B[0]):
raise ValueError("Hai ma trận phải có cùng kích
thước")
return C
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
B = [
[9, 8, 7],
[6, 5, 4],
[3, 2, 1]
]
result = subtract_matrices(A, B)
for row in result:
print(row)
Kiểm tra nếu số hàng và số cột của hai ma trận không bằng
nhau thì báo lỗi.
Tạo ma trận mới C với cùng kích thước với các phần tử ban
đầu là 0.
3. Tính hiệu của từng phần tử:
4. In kết quả:
Tóm tắt:
Khai báo hàm và kiểm tra kích thước ma trận
Khởi tạo ma trận kết quả với kích thước tương tự ma trận đầu
vào
Sử dụng vòng lặp để tính hiệu của các phần tử tương ứng
In ma trận kết quả
Chương trình tính hiệu của hai ma trận cùng kích thước và trả về
ma trận kết quả.
263 - Viết chương trình để tính tích
của hai ma trận
Thuật toán:
Đầu vào: Hai ma trận A (kích thước m x n) và B (kích thước n x
p).
Đầu ra: Ma trận C kích thước m x p với mỗi phần tử C[i][j] =
\sum_{k=1}^{n} A[i][k] x B[k][j].
Các bước thực hiện:
1. Kiểm tra kích thước của hai ma trận để đảm bảo số cột của
ma trận A bằng số hàng của ma trận B.
2. Tạo một ma trận mới C với kích thước m x p với các phần tử
ban đầu là 0.
3. Duyệt qua từng hàng của ma trận A và từng cột của ma trận
B để tính tích từng phần tử.
4. Trả về ma trận C đã tính toán được.
# Khởi tạo ma trận kết quả với kích thước (số hàng của A)
x (số cột của B)
m = len(A)
n = len(A[0])
p = len(B[0])
C = [[0 for _ in range(p)] for _ in range(m)]
return C
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6]
]
B = [
[7, 8],
[9, 10],
[11, 12]
]
result = multiply_matrices(A, B)
for row in result:
print(row)
Giải thích code
1. Kiểm tra kích thước ma trận:
Kiểm tra nếu số cột của ma trận A không bằng số hàng của
ma trận B thì báo lỗi.
Tạo ma trận mới C với kích thước m x p với các phần tử ban
đầu là 0.
Duyệt qua từng hàng của ma trận A và từng cột của ma trận
B.
Tính tích của các phần tử tương ứng và cộng vào ma trận C.
4. In kết quả:
Tóm tắt:
Khai báo hàm và kiểm tra kích thước ma trận
Khởi tạo ma trận kết quả với kích thước tương ứng
Sử dụng vòng lặp để tính tích các phần tử tương ứng
In ma trận kết quả
Chương trình tính tích của hai ma trận và trả về ma trận kết quả.
264 - Viết chương trình để tính định
thức của một ma trận
Thuật toán:
Đầu vào: Một ma trận vuông A kích thước n x n.
Đầu ra: Một giá trị số là định thức của ma trận A.
Các bước thực hiện:
1. Kiểm tra ma trận có vuông không (số hàng bằng số cột).
2. Sử dụng phương pháp đệ quy để tính định thức (cho các ma
trận kích thước nhỏ).
3. Sử dụng phương pháp khai triển theo hàng (cho các ma trận
kích thước lớn hơn).
Code Python
import numpy as np
def calculate_determinant(matrix):
# Kiểm tra ma trận có vuông không
if len(matrix) != len(matrix[0]):
raise ValueError("Ma trận phải là ma trận vuông")
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = calculate_determinant(A)
print(f"Định thức của ma trận là: {result}")
Kiểm tra nếu số hàng không bằng số cột thì báo lỗi.
3. In kết quả:
Bổ sung
Ngoài phương pháp sử dụng numpy, chúng ta có thể viết một hàm đệ
quy để tính định thức cho các ma trận nhỏ. Dưới đây là ví dụ cho
phương pháp này:
Code Python bổ sung
def get_matrix_minor(matrix, i, j):
return [row[:j] + row[j+1:] for row in (matrix[:i] +
matrix[i+1:])]
def calculate_determinant_recursive(matrix):
# Kiểm tra ma trận có vuông không
if len(matrix) != len(matrix[0]):
raise ValueError("Ma trận phải là ma trận vuông")
determinant = 0
for c in range(len(matrix)):
determinant += ((-1)**c) * matrix[0][c] *
calculate_determinant_recursive(get_matrix_minor(matrix, 0,
c))
return determinant
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result_recursive = calculate_determinant_recursive(A)
print(f"Định thức của ma trận (phương pháp đệ quy) là:
{result_recursive}")
Tóm tắt:
Kiểm tra ma trận có vuông không
Sử dụng numpy để tính định thức
Sử dụng phương pháp đệ quy để tính định thức cho ma trận nhỏ
In định thức của ma trận
Chương trình tính định thức của một ma trận vuông và trả về giá trị
định thức.
265 - Viết chương trình để tính ma
trận nghịch đảo của một ma trận
Thuật toán:
Đầu vào: Một ma trận vuông A kích thước n x n.
Đầu ra: Ma trận nghịch đảo A^{-1} của ma trận A hoặc thông
báo rằng ma trận không khả nghịch nếu định thức của nó bằng
0.
Các bước thực hiện:
1. Kiểm tra ma trận có vuông không (số hàng bằng số cột).
2. Tính định thức của ma trận.
3. Nếu định thức bằng 0, kết luận ma trận không khả nghịch.
4. Nếu định thức khác 0, sử dụng phương pháp Gauss-Jordan
hoặc thư viện numpy để tính ma trận nghịch đảo.
Code Python
import numpy as np
def invert_matrix(matrix):
# Kiểm tra ma trận có vuông không
if len(matrix) != len(matrix[0]):
raise ValueError("Ma trận phải là ma trận vuông")
# Ví dụ sử dụng
A = [
[1, 2, 3],
[0, 1, 4],
[5, 6, 0]
]
result = invert_matrix(A)
print("Ma trận nghịch đảo là:")
print(result)
Kiểm tra nếu số hàng không bằng số cột thì báo lỗi.
4. In kết quả:
Bổ sung
Ngoài phương pháp sử dụng numpy, chúng ta có thể sử dụng
phương pháp Gauss-Jordan để tính ma trận nghịch đảo. Dưới đây
là ví dụ cho phương pháp này:
# Ví dụ sử dụng
A = [
[1, 2, 3],
[0, 1, 4],
[5, 6, 0]
]
result_gj = gauss_jordan_inverse(A)
print("Ma trận nghịch đảo (phương pháp Gauss-Jordan) là:")
for row in result_gj:
print(row)
Tóm tắt:
Kiểm tra ma trận có vuông không
Tính định thức của ma trận
Sử dụng numpy để tính ma trận nghịch đảo nếu định thức khác 0
Sử dụng phương pháp Gauss-Jordan để tính ma trận nghịch
đảo
In ma trận nghịch đảo
Chương trình tính ma trận nghịch đảo của một ma trận vuông và trả
về ma trận nghịch đảo hoặc thông báo nếu ma trận không khả
nghịch.
266 - Viết chương trình để tính ma
trận chuyển vị của một ma trận
Thuật toán:
Đầu vào: Một ma trận A kích thước m x n.
Đầu ra: Ma trận chuyển vị A^T kích thước n x m.
Các bước thực hiện:
1. Tạo một ma trận mới với số hàng và số cột đảo ngược so
với ma trận gốc.
2. Duyệt qua từng phần tử của ma trận gốc và gán giá trị vào vị
trí tương ứng trong ma trận chuyển vị.
3. Trả về ma trận chuyển vị.
Code Python
def transpose_matrix(matrix):
# Lấy kích thước của ma trận gốc
rows = len(matrix)
cols = len(matrix[0])
# Tạo ma trận mới với số hàng và số cột đảo ngược
transpose = [[0 for _ in range(rows)] for _ in
range(cols)]
return transpose
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6]
]
result = transpose_matrix(A)
print("Ma trận chuyển vị là:")
for row in result:
print(row)
Duyệt qua từng phần tử của ma trận gốc và gán giá trị vào vị
trí tương ứng trong ma trận chuyển vị.
4. In kết quả:
In ma trận chuyển vị ra màn hình.
Bổ sung
Có thể sử dụng thư viện numpy để tính ma trận chuyển vị một cách
ngắn gọn và hiệu quả hơn.
def transpose_matrix_numpy(matrix):
return np.transpose(matrix)
# Ví dụ sử dụng
A = [
[1, 2, 3],
[4, 5, 6]
]
result_numpy = transpose_matrix_numpy(A)
print("Ma trận chuyển vị (sử dụng numpy) là:")
print(result_numpy)
Tóm tắt:
Xác định kích thước của ma trận gốc
Tạo ma trận mới với số hàng và số cột đảo ngược
Duyệt qua từng phần tử của ma trận gốc và gán giá trị vào ma
trận chuyển vị
In ma trận chuyển vị
Thuật toán:
Đầu vào: Một ma trận A kích thước m x n.
Đầu ra: Hạng của ma trận A.
Các bước thực hiện:
1. Sử dụng phương pháp loại bỏ Gauss để đưa ma trận về
dạng bậc thang hàng.
2. Đếm số hàng khác không trong ma trận dạng bậc thang
hàng.
3. Trả về số hàng khác không, đó chính là hạng của ma trận.
Code Python
import numpy as np
def rank_of_matrix(matrix):
# Chuyển ma trận thành dạng numpy array
np_matrix = np.array(matrix)
# Sử dụng numpy để tính hạng của ma trận
rank = np.linalg.matrix_rank(np_matrix)
return rank
# Ví dụ sử dụng
A = [
[10, 20, 10],
[-20, -30, 10],
[30, 50, 0]
]
result = rank_of_matrix(A)
print(f"Hạng của ma trận là: {result}")
3. In kết quả:
Bổ sung
Có thể tính hạng của ma trận mà không cần dùng thư viện numpy
bằng cách sử dụng phương pháp loại bỏ Gauss.
Code Python bổ sung
def gauss_jordan_rank(matrix):
# Copy ma trận để tránh thay đổi ma trận gốc
M = [row[:] for row in matrix]
m = len(M)
n = len(M[0])
rank = 0
return rank
# Ví dụ sử dụng
A = [
[10, 20, 10],
[-20, -30, 10],
[30, 50, 0]
]
result_gj = gauss_jordan_rank(A)
print(f"Hạng của ma trận (phương pháp Gauss-Jordan) là:
{result_gj}")
Tóm tắt:
Chuyển ma trận thành dạng numpy array
Sử dụng numpy để tính hạng của ma trận
In hạng của ma trận
Chương trình tính hạng của một ma trận và trả về hạng của ma trận.
268 - Viết chương trình để kiểm tra
một ma trận có phải là ma trận đơn vị
không
Thuật toán:
Đầu vào: Một ma trận A kích thước n x n.
Đầu ra: Một giá trị boolean cho biết ma trận có phải là ma trận
đơn vị hay không.
Các bước thực hiện:
1. Kiểm tra ma trận có vuông không (số hàng bằng số cột).
2. Duyệt qua từng phần tử của ma trận:
Nếu phần tử nằm trên đường chéo chính và khác 1, trả
về False.
Nếu phần tử không nằm trên đường chéo chính và khác
0, trả về False.
3. Nếu tất cả các điều kiện trên đều thỏa mãn, trả về True.
Code Python
def is_identity_matrix(matrix):
# Kiểm tra ma trận có vuông không
n = len(matrix)
for row in matrix:
if len(row) != n:
return False
return True
# Ví dụ sử dụng
A = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
]
B = [
[1, 0, 0],
[0, 0, 0],
[0, 0, 1]
]
Duyệt qua từng hàng của ma trận để kiểm tra xem độ dài
của mỗi hàng có bằng số hàng không.
2. Kiểm tra các phần tử của ma trận:
Nếu tất cả các điều kiện đều thỏa mãn, trả về True.
Tóm tắt:
Kiểm tra ma trận có vuông không
Duyệt qua từng phần tử của ma trận để kiểm tra các điều kiện
của ma trận đơn vị
Trả về True nếu tất cả các điều kiện đều thỏa mãn, ngược lại trả
về False
Chương trình kiểm tra xem một ma trận có phải là ma trận đơn vị
hay không và trả về giá trị boolean tương ứng.
269 - Viết chương trình để kiểm tra
một ma trận có phải là ma trận đối
xứng không
Thuật toán:
Đầu vào: Một ma trận A kích thước n x n.
Đầu ra: Một giá trị boolean cho biết ma trận có phải là ma trận
đối xứng hay không.
Các bước thực hiện:
1. Kiểm tra ma trận có vuông không (số hàng bằng số cột).
2. Duyệt qua từng phần tử của ma trận:
Nếu phần tử a(i)(j) khác phần tử a(j)(i), trả về False.
3. Nếu tất cả các điều kiện trên đều thỏa mãn, trả về True.
Code Python
def is_symmetric_matrix(matrix):
# Kiểm tra ma trận có vuông không
n = len(matrix)
for row in matrix:
if len(row) != n:
return False
return True
# Ví dụ sử dụng
A = [
[1, 2, 3],
[2, 4, 5],
[3, 5, 6]
]
B = [
[1, 2, 3],
[2, 4, 5],
[3, 6, 6]
]
Duyệt qua từng hàng của ma trận để kiểm tra xem độ dài
của mỗi hàng có bằng số hàng không.
Tóm tắt:
Kiểm tra ma trận có vuông không
Duyệt qua từng phần tử của ma trận để kiểm tra tính đối xứng
Trả về True nếu tất cả các điều kiện đều thỏa mãn, ngược lại trả
về False
Chương trình kiểm tra xem một ma trận có phải là ma trận đối xứng
hay không và trả về giá trị boolean tương ứng.
270 - Viết chương trình để kiểm tra
một ma trận có phải là ma trận tam
giác trên không
Thuật toán:
Đầu vào: Một ma trận A kích thước n x n.
Đầu ra: Một giá trị boolean cho biết ma trận có phải là ma trận
tam giác trên hay không.
Các bước thực hiện:
1. Kiểm tra ma trận có vuông không (số hàng bằng số cột).
2. Duyệt qua từng phần tử dưới đường chéo chính:
Nếu có phần tử nào khác 0, trả về False.
3. Nếu tất cả các điều kiện trên đều thỏa mãn, trả về True.
Code Python
def is_upper_triangular(matrix):
# Kiểm tra ma trận có vuông không
n = len(matrix)
for row in matrix:
if len(row) != n:
return False
return True
# Ví dụ sử dụng
A = [
[1, 2, 3],
[0, 4, 5],
[0, 0, 6]
]
B = [
[1, 2, 3],
[0, 4, 5],
[7, 0, 6]
]
Duyệt qua từng hàng của ma trận để kiểm tra xem độ dài
của mỗi hàng có bằng số hàng không.
Tóm tắt:
Kiểm tra ma trận có vuông không
Duyệt qua từng phần tử dưới đường chéo chính để kiểm tra tính
tam giác trên
Trả về True nếu tất cả các điều kiện đều thỏa mãn, ngược lại trả
về False
Chương trình kiểm tra xem một ma trận có phải là ma trận tam giác
trên hay không và trả về giá trị boolean tương ứng.
Chương 28 : Bài tập về lập trình
đồ họa cơ bản
271. Viết chương trình để vẽ hình vuông bằng Turtle.
272. Viết chương trình để vẽ hình tam giác bằng Turtle.
273. Viết chương trình để vẽ hình tròn bằng Turtle.
274. Viết chương trình để vẽ hình ngôi sao bằng Turtle.
275. Viết chương trình để vẽ hình lục giác bằng Turtle.
276. Viết chương trình để vẽ hình ngũ giác bằng Turtle.
277. Viết chương trình để vẽ đường tròn lồng vào nhau bằng Turtle.
278. Viết chương trình để vẽ các đường thẳng song song bằng Turtle.
279. Viết chương trình để vẽ các hình chữ nhật lồng vào nhau bằng
Turtle.
280. Viết chương trình để vẽ hoa bằng Turtle.
271 - Viết chương trình để vẽ hình
vuông bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình vuông được vẽ trên màn hình.
Code Python
import turtle
# Vẽ hình vuông
for _ in range(4):
square_turtle.forward(100) # Di chuyển về phía trước 100
đơn vị
square_turtle.right(90) # Quay 90 độ sang phải
4. Vẽ hình vuông
Sử dụng vòng lặp for _ in range(4) để lặp bốn lần, mỗi lần
thực hiện hai hành động:
square_turtle.forward(100): Di chuyển Turtle về phía
trước 100 đơn vị.
square_turtle.right(90): Quay Turtle 90 độ về bên
phải.
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình vuông bằng cách di chuyển Turtle theo các cạnh và
quay 90 độ.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình vuông đơn giản trên màn hình.
272 - Viết chương trình để vẽ hình tam
giác bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình tam giác đều được vẽ trên màn hình.
Code Python
import turtle
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình tam giác đều bằng cách di chuyển Turtle theo các cạnh
và quay 120 độ.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình tam giác đều đơn giản trên màn hình.
273 - Viết chương trình để vẽ hình
tròn bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình tròn được vẽ trên màn hình.
4. Vẽ hình tròn
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình tròn bằng phương thức circle() của đối tượng Turtle.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình tròn đơn giản trên màn hình.
Bổ sung
Cách này minh họa việc tạo ra một hình tròn thông qua việc chia nhỏ
nó thành nhiều đoạn thẳng nhỏ, mỗi đoạn được vẽ với một góc quay
rất nhỏ.
274 - Viết chương trình để vẽ hình
ngôi sao bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình ngôi sao được vẽ trên màn hình.
Code Python
import turtle
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình ngôi sao bằng cách di chuyển Turtle theo các cạnh và
quay 144 độ.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình ngôi sao đơn giản trên màn hình.
Bổ sung
# Tạo hàm vẽ ngôi sao với tham số cho kích thước và vị trí
def draw_star(size, x, y):
star_turtle.penup() # Nhấc bút để di chuyển không
vẽ
star_turtle.goto(x, y) # Di chuyển đến vị trí (x, y)
star_turtle.pendown() # Hạ bút để bắt đầu vẽ
for _ in range(5):
star_turtle.forward(size) # Di chuyển về phía trước
với độ dài kích thước 'size'
star_turtle.right(144) # Quay 144 độ sang phải
Tóm tắt:
Hàm draw_star: Tạo hàm để vẽ ngôi sao với kích thước và vị trí
tùy chọn.
penup và pendown: Sử dụng để điều khiển bút vẽ của Turtle, cho
phép di chuyển mà không vẽ lên màn hình.
goto(x, y): Di chuyển Turtle đến vị trí (x, y) trên màn hình.
Chương trình bổ sung giúp bạn tạo ra các ngôi sao ở các vị trí và
kích thước khác nhau bằng cách sử dụng hàm trong Python và các
lệnh điều khiển nâng cao của Turtle.
275 - Viết chương trình để vẽ hình lục
giác bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình lục giác đều được vẽ trên màn hình.
Code Python
import turtle
Sử dụng vòng lặp for _ in range(6) để lặp sáu lần, mỗi lần
thực hiện hai hành động:
hexagon_turtle.forward(100): Di chuyển Turtle về phía
trước 100 đơn vị. Độ dài này xác định kích thước của lục
giác.
hexagon_turtle.left(60): Quay Turtle 60 độ về bên trái.
Góc này xác định hình dạng của lục giác đều. Để vẽ lục
giác đều, góc quay là 60 độ (360 độ chia cho số cạnh
của lục giác, tức là 360/6 = 60).
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình lục giác đều bằng cách di chuyển Turtle theo các cạnh
và quay 60 độ.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình lục giác đều đơn giản trên màn hình.
276 - Viết chương trình để vẽ hình ngũ
giác bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Một hình ngũ giác đều được vẽ trên màn hình.
Code Python
import turtle
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ hình ngũ giác đều bằng cách di chuyển Turtle theo các cạnh
và quay 72 độ.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Chương trình trên giúp bạn sử dụng thư viện Turtle trong Python để
vẽ một hình ngũ giác đều đơn giản trên màn hình.
Bổ sung
Chúng ta có thể tạo hàm để vẽ hình ngũ giác với các kích thước và
vị trí tùy chọn. Đây là cách triển khai:
import turtle
# Tạo hàm vẽ ngũ giác với tham số cho kích thước và vị trí
def draw_pentagon(size, x, y):
pentagon_turtle.penup() # Nhấc bút để di chuyển
không vẽ
pentagon_turtle.goto(x, y) # Di chuyển đến vị trí (x,
y)
pentagon_turtle.pendown() # Hạ bút để bắt đầu vẽ
for _ in range(5):
pentagon_turtle.forward(size) # Di chuyển về phía
trước với độ dài kích thước 'size'
pentagon_turtle.left(72) # Quay 72 độ sang trái
# Vẽ các hình ngũ giác với kích thước và vị trí khác nhau
draw_pentagon(100, 0, 0) # Vẽ ngũ giác tại vị trí
trung tâm (0, 0) với kích thước 100
draw_pentagon(50, -200, 100) # Vẽ ngũ giác nhỏ hơn tại vị
trí (-200, 100) với kích thước 50
draw_pentagon(75, 200, -150) # Vẽ ngũ giác tại vị trí
(200, -150) với kích thước 75
Tóm tắt:
Hàm draw_pentagon: Tạo hàm để vẽ ngũ giác với kích thước và
vị trí tùy chọn.
penup và pendown: Sử dụng để điều khiển bút vẽ của Turtle, cho
phép di chuyển mà không vẽ lên màn hình.
goto(x, y): Di chuyển Turtle đến vị trí (x, y) trên màn hình.
Chương trình bổ sung giúp bạn tạo ra các hình ngũ giác ở các vị trí
và kích thước khác nhau bằng cách sử dụng hàm trong Python và
các lệnh điều khiển nâng cao của Turtle.
277 - Viết chương trình để vẽ đường
tròn lồng vào nhau bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Các đường tròn lồng vào nhau được vẽ trên màn hình.
Code Python
import turtle
# Khoảng cách giữa các tâm của các đường tròn lồng vào nhau
distance_between_circles = 30
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ các đường tròn lồng vào nhau bằng cách thay đổi bán kính
và vị trí của mỗi đường tròn.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Bổ sung
Chúng ta có thể mở rộng chương trình để tạo ra các hiệu ứng thú vị
hơn, chẳng hạn như vẽ các đường tròn với màu sắc khác nhau. Đây
là cách triển khai:
import turtle
# Khoảng cách giữa các tâm của các đường tròn lồng vào nhau
distance_between_circles = 20
Tóm tắt:
Thêm màu sắc: Sử dụng danh sách màu sắc để vẽ các đường
tròn với các màu khác nhau.
color: Sử dụng phương thức color của Turtle để thay đổi màu
sắc của bút vẽ.
Chương trình mở rộng này giúp bạn tạo ra các đường tròn lồng vào
nhau với màu sắc khác nhau, tạo ra một hiệu ứng thị giác sinh động
và thú vị.
278 - Viết chương trình để vẽ các
đường thẳng song song bằng Turtle
Thuật toán
Đầu vào:
Không có đầu vào từ người dùng cho bài toán cơ bản này.
Đầu ra:
Các đường thẳng song song được vẽ trên màn hình.
Code Python
import turtle
screen.mainloop(): Giữ màn hình hiển thị cho đến khi người
dùng đóng cửa sổ.
Tóm tắt:
Import thư viện Turtle.
Tạo màn hình và đối tượng Turtle.
Vẽ các đường thẳng song song bằng cách di chuyển Turtle đến
vị trí bắt đầu của mỗi đường thẳng và vẽ đường thẳng theo
hướng ngang.
Ẩn đối tượng Turtle và giữ màn hình mở để xem kết quả.
Bổ sung
Chúng ta có thể tạo các hiệu ứng khác nhau như thay đổi hướng vẽ
các đường thẳng hoặc thêm màu sắc khác nhau. Dưới đây là một
số cách mở rộng:
Tóm tắt:
Vẽ các đường thẳng dọc: Thay đổi hướng của Turtle để vẽ các
đường thẳng dọc thay vì ngang.
Thêm màu sắc: Sử dụng danh sách màu sắc để vẽ các đường
thẳng với màu sắc khác nhau.
Chương trình bổ sung này giúp bạn tạo ra các đường thẳng song
song theo nhiều cách khác nhau, tăng tính sinh động và đa dạng
cho hình vẽ.
279 - Viết chương trình để vẽ các hình
chữ nhật lồng vào nhau bằng Turtle
Thuật toán:
Đầu vào
Kích thước ban đầu của hình chữ nhật (chiều dài và chiều rộng).
Số lượng hình chữ nhật cần vẽ.
Độ giảm kích thước sau mỗi lần vẽ (nếu có).
Đầu ra
Hình ảnh các hình chữ nhật lồng vào nhau được vẽ bởi Turtle.
width = initial_width
height = initial_height
for _ in range(num_rectangles):
draw_rectangle(t, width, height)
width -= decrement
height -= decrement
t.penup()
t.goto(t.xcor() + decrement / 2, t.ycor() - decrement
/ 2)
t.pendown()
screen.mainloop()
# Tham số đầu vào: Kích thước ban đầu, số lượng hình chữ
nhật, độ giảm kích thước
nested_rectangles(200, 100, 10, 10)
Chương trình tạo ra một hình ảnh các hình chữ nhật lồng vào nhau
với Turtle, giúp hiểu rõ cách sử dụng vòng lặp và điều chỉnh vị trí vẽ
trong Python.
280 - Viết chương trình để vẽ hoa
bằng Turtle
Thuật toán:
Đầu vào
Kích thước của cánh hoa (độ dài bán kính).
Số lượng cánh hoa.
Đầu ra
Hình ảnh bông hoa được vẽ bởi Turtle.
Code Python
import turtle
def draw_petal(t, radius):
t.circle(radius, 60) # Vẽ cung tròn 60 độ
t.left(120) # Quay trái 120 độ để vẽ cánh đối
xứng
t.circle(radius, 60)
t.left(120) # Quay trái 120 độ để trở lại vị
trí ban đầu
for _ in range(num_petals):
draw_petal(t, radius)
t.left(360 / num_petals) # Quay trái để chuẩn bị vẽ
cánh hoa tiếp theo
# Tham số đầu vào: Số lượng cánh hoa và bán kính của cánh
draw_flower(12, 100)
Tóm tắt:
Sử dụng thư viện turtle để vẽ các hình.
Định nghĩa hàm để vẽ cánh hoa.
Sử dụng vòng lặp để vẽ nhiều cánh hoa và xoay Turtle để phân
bố đều các cánh.
Điều chỉnh tốc độ vẽ và ẩn con trỏ sau khi vẽ xong.
Chương trình tạo ra một hình ảnh bông hoa với các cánh hoa phân
bố đều quanh tâm, sử dụng các hàm cơ bản và vòng lặp trong thư
viện Turtle của Python.
Chương 29 : Khoa học dữ liệu
cơ bản
281. Viết chương trình để tính trung bình, median và mode của một
danh sách số.
282. Viết chương trình để tính phương sai và độ lệch chuẩn của một
danh sách số.
283. Viết chương trình để vẽ biểu đồ phân phối của một danh sách
số.
284. Viết chương trình để vẽ biểu đồ boxplot của một danh sách số.
285. Viết chương trình để vẽ biểu đồ scatterplot của hai danh sách
số.
286. Viết chương trình để tính ma trận tương quan của hai danh sách
số.
287. Viết chương trình để thực hiện phân tích hồi quy đơn giản.
288. Viết chương trình để thực hiện phân tích hồi quy đa biến.
289. Viết chương trình để phân tích dữ liệu sử dụng Pandas.
290. Viết chương trình để phân tích dữ liệu sử dụng Numpy.
281 - Viết chương trình để tính trung
bình, median và mode của một danh
sách số
Thuật toán:
Đầu vào: Một danh sách các số nguyên hoặc số thực.
Đầu ra: Ba giá trị: trung bình, trung vị và giá trị thường gặp nhất
của danh sách.
Các bước thực hiện:
1. Nhập danh sách các số.
2. Tính giá trị trung bình bằng cách chia tổng các phần tử cho
số lượng phần tử.
3. Sắp xếp danh sách và tính giá trị trung vị.
4. Tính giá trị thường gặp nhất bằng cách đếm tần suất xuất
hiện của các phần tử trong danh sách.
Code Python
import statistics
def calculate_statistics(numbers):
mean = statistics.mean(numbers)
median = statistics.median(numbers)
try:
mode = statistics.mode(numbers)
except statistics.StatisticsError:
mode = "No unique mode"
# Ví dụ sử dụng
numbers = [1, 2, 2, 3, 4]
mean, median, mode = calculate_statistics(numbers)
print("Mean:", mean)
print("Median:", median)
print("Mode:", mode)
Bổ sung
Cách giải khác có thể là tự viết hàm tính trung bình, trung vị và
mode thay vì sử dụng thư viện statistics.
Tóm tắt:
Sử dụng thư viện statistics để tính các giá trị thống kê cơ bản.
Sử dụng hàm mean() để tính trung bình.
Sử dụng hàm median() để tính trung vị.
Sử dụng hàm mode() để tính giá trị thường gặp nhất.
Sử dụng khối try-except để xử lý trường hợp không có mode
duy nhất.
Chương trình tính toán và in ra giá trị trung bình, trung vị và giá trị
thường gặp nhất của một danh sách số.
282 - Viết chương trình để tính
phương sai và độ lệch chuẩn của một
danh sách số
Thuật toán:
Đầu vào: Một danh sách các số nguyên hoặc số thực.
Đầu ra: Hai giá trị: phương sai và độ lệch chuẩn của danh sách.
Các bước thực hiện:
1. Nhập danh sách các số.
2. Tính phương sai bằng cách sử dụng công thức phương sai.
3. Tính độ lệch chuẩn bằng cách lấy căn bậc hai của phương
sai.
Code Python
import statistics
def calculate_variance_and_std_dev(numbers):
variance = statistics.variance(numbers)
std_dev = statistics.stdev(numbers)
# Ví dụ sử dụng
numbers = [1, 2, 2, 3, 4]
variance, std_dev = calculate_variance_and_std_dev(numbers)
print("Variance:", variance)
print("Standard Deviation:", std_dev)
Tóm tắt:
Sử dụng thư viện statistics để tính phương sai và độ lệch
chuẩn.
Sử dụng hàm variance() để tính phương sai.
Sử dụng hàm stdev() để tính độ lệch chuẩn.
Thuật toán:
Đầu vào: Một danh sách các số nguyên hoặc số thực.
Đầu ra: Một biểu đồ phân phối của các số trong danh sách.
Các bước thực hiện:
1. Nhập danh sách các số.
2. Sử dụng thư viện matplotlib để tạo và hiển thị biểu đồ phân
phối.
Code Python
import matplotlib.pyplot as plt
import seaborn as sns
def plot_distribution(numbers):
sns.histplot(numbers, kde=True)
plt.title('Distribution Plot')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
# Ví dụ sử dụng
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6, 7, 8]
plot_distribution(numbers)
Tóm tắt:
Sử dụng thư viện matplotlib và seaborn để vẽ biểu đồ.
Sử dụng sns.histplot() để vẽ histogram và KDE.
Sử dụng các hàm plt.title(), plt.xlabel(), và plt.ylabel()
để thêm tiêu đề và nhãn cho biểu đồ.
Sử dụng plt.show() để hiển thị biểu đồ.
Chương trình vẽ và hiển thị biểu đồ phân phối của một danh sách
số.
284 - Viết chương trình để vẽ biểu đồ
boxplot của một danh sách số
Thuật toán:
Đầu vào: Một danh sách các số nguyên hoặc số thực.
Đầu ra: Một biểu đồ boxplot của các số trong danh sách.
Các bước thực hiện:
1. Nhập danh sách các số.
2. Sử dụng thư viện matplotlib và seaborn để tạo và hiển thị
biểu đồ boxplot.
Code Python
import matplotlib.pyplot as plt
import seaborn as sns
def plot_boxplot(numbers):
sns.boxplot(data=numbers)
plt.title('Boxplot')
plt.xlabel('Value')
plt.show()
# Ví dụ sử dụng
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6, 7, 8]
plot_boxplot(numbers)
Tóm tắt:
Sử dụng thư viện matplotlib và seaborn để vẽ biểu đồ.
Sử dụng sns.boxplot() để vẽ boxplot.
Sử dụng các hàm plt.title() và plt.xlabel() để thêm tiêu đề
và nhãn cho biểu đồ.
Sử dụng plt.show() để hiển thị biểu đồ.
Chương trình vẽ và hiển thị biểu đồ boxplot của một danh sách số.
285 - Viết chương trình để vẽ biểu đồ
scatterplot của hai danh sách số
Thuật toán:
Đầu vào: Hai danh sách các số nguyên hoặc số thực.
Đầu ra: Một biểu đồ scatterplot của các số trong hai danh sách.
Các bước thực hiện:
1. Nhập hai danh sách các số.
2. Sử dụng thư viện matplotlib để tạo và hiển thị biểu đồ
scatterplot.
Code Python
import matplotlib.pyplot as plt
import seaborn as sns
# Ví dụ sử dụng
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [2, 3, 5, 7, 11, 13, 17, 19, 23]
plot_scatterplot(x, y)
Chương trình vẽ và hiển thị biểu đồ scatterplot của hai danh sách
số.
286 - Viết chương trình để tính ma
trận tương quan của hai danh sách số
Thuật toán:
Đầu vào: Hai danh sách các số nguyên hoặc số thực.
Đầu ra: Ma trận tương quan của hai danh sách.
Các bước thực hiện:
1. Nhập hai danh sách các số.
2. Sử dụng thư viện NumPy hoặc Pandas để tính ma trận
tương quan.
3. In hoặc hiển thị ma trận tương quan.
Code Python
import numpy as np
import pandas as pd
def calculate_correlation_matrix(x, y):
data = {'X': x, 'Y': y}
df = pd.DataFrame(data)
correlation_matrix = df.corr()
return correlation_matrix
# Ví dụ sử dụng
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [2, 3, 5, 7, 11, 13, 17, 19, 23]
correlation_matrix = calculate_correlation_matrix(x, y)
print(correlation_matrix)
Chương trình tính toán và in ma trận tương quan của hai danh sách
số.
287 - Viết chương trình để thực hiện
phân tích hồi quy đơn giản
Thuật toán:
Đầu vào: Hai danh sách các số nguyên hoặc số thực, đại diện
cho biến độc lập và biến phụ thuộc.
Đầu ra: Hệ số hồi quy (slope và intercept), phương trình hồi quy,
và đánh giá hiệu suất của mô hình (R-squared).
Các bước thực hiện:
1. Nhập hai danh sách các số.
2. Sử dụng thư viện scikit-learn để thực hiện phân tích hồi quy.
3. Hiển thị hệ số hồi quy, phương trình hồi quy, và đánh giá
hiệu suất của mô hình.
# Ví dụ sử dụng
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [2, 3, 5, 7, 11, 13, 17, 19, 23]
slope, intercept, r_squared = simple_linear_regression(x, y)
print(f"Slope: {slope}")
print(f"Intercept: {intercept}")
print(f"R-squared: {r_squared}")
# Vẽ biểu đồ
plt.scatter(x, y, color='blue', label='Data points')
plt.plot(x, np.array(x) * slope + intercept, color='red',
label='Regression line')
plt.xlabel('X values')
plt.ylabel('Y values')
plt.title('Simple Linear Regression')
plt.legend()
plt.show()
Tóm tắt:
Sử dụng thư viện numpy và scikit-learn để thực hiện hồi quy
tuyến tính đơn giản.
Chuyển đổi dữ liệu đầu vào thành mảng numpy và reshape.
Khởi tạo và huấn luyện mô hình hồi quy tuyến tính bằng
LinearRegression().
Lấy hệ số hồi quy, intercept và tính toán R-squared.
Vẽ biểu đồ scatterplot của dữ liệu và đường hồi quy.
Chương trình thực hiện phân tích hồi quy tuyến tính đơn giản và vẽ
biểu đồ.
288 - Viết chương trình để thực hiện
phân tích hồi quy đa biến
Thuật toán:
Đầu vào: Một danh sách các danh sách số (biến độc lập) và một
danh sách các số (biến phụ thuộc).
Đầu ra: Hệ số hồi quy (coefficients), phương trình hồi quy, và
đánh giá hiệu suất của mô hình (R-squared).
Các bước thực hiện:
1. Nhập danh sách các danh sách số và danh sách biến phụ
thuộc.
2. Sử dụng thư viện scikit-learn để thực hiện phân tích hồi quy.
3. Hiển thị hệ số hồi quy, phương trình hồi quy, và đánh giá
hiệu suất của mô hình.
# Ví dụ sử dụng
X = [
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6],
[5, 6, 7],
[6, 7, 8],
[7, 8, 9],
[8, 9, 10],
[9, 10, 11]
]
y = [2, 3, 5, 7, 11, 13, 17, 19, 23]
Chương trình thực hiện phân tích hồi quy đa biến và hiển thị các hệ
số hồi quy, intercept và đánh giá hiệu suất của mô hình.
289 - Viết chương trình để phân tích
dữ liệu sử dụng Pandas
Thuật toán:
Đầu vào: Một tệp dữ liệu (ví dụ: CSV).
Đầu ra: Các phân tích cơ bản như thống kê mô tả, xử lý dữ liệu
thiếu, và các phép toán nhóm (grouping).
Các bước thực hiện:
1. Nhập tệp dữ liệu vào DataFrame.
2. Hiển thị thông tin cơ bản và thống kê mô tả của dữ liệu.
3. Xử lý dữ liệu thiếu (nếu có).
4. Thực hiện các phép toán nhóm và tổng hợp dữ liệu.
Code Python
Giả sử bạn có một tệp CSV với tên data.csv. Dưới đây là chương
trình phân tích dữ liệu sử dụng Pandas.
import pandas as pd
def load_data(file_path):
"""Load data from a CSV file into a Pandas DataFrame."""
df = pd.read_csv(file_path)
return df
def display_basic_info(df):
"""Display basic information and descriptive statistics
of the DataFrame."""
print("DataFrame Information:")
print(df.info())
print("\nDescriptive Statistics:")
print(df.describe())
def handle_missing_data(df):
"""Handle missing data by filling them with the mean of
each column."""
df_filled = df.fillna(df.mean())
return df_filled
# Load data
file_path = 'data.csv' # Đường dẫn tới tệp CSV của bạn
df = load_data(file_path)
Tóm tắt:
Sử dụng thư viện pandas để thao tác và phân tích dữ liệu.
Đọc dữ liệu từ tệp CSV vào DataFrame bằng pd.read_csv().
Hiển thị thông tin cơ bản và thống kê mô tả của dữ liệu.
Xử lý dữ liệu thiếu bằng cách thay thế giá trị thiếu với giá trị
trung bình của từng cột.
Nhóm và tổng hợp dữ liệu theo một cột và tính giá trị trung bình
của một cột khác.
Chương trình phân tích dữ liệu sử dụng Pandas, hiển thị thông tin
cơ bản, xử lý dữ liệu thiếu, và thực hiện các phép toán nhóm và
tổng hợp dữ liệu.
290 - Viết chương trình để phân tích
dữ liệu sử dụng Numpy
Thuật toán:
Đầu vào: Một danh sách hoặc mảng các số.
Đầu ra: Các phân tích cơ bản như giá trị trung bình, phương sai,
độ lệch chuẩn, và các phép toán khác.
Các bước thực hiện:
1. Nhập dữ liệu vào một mảng NumPy.
2. Tính toán các thống kê cơ bản (giá trị trung bình, phương
sai, độ lệch chuẩn, v.v.).
3. Hiển thị kết quả của các phép toán.
Code Python
import numpy as np
def analyze_data(data):
# Chuyển đổi dữ liệu đầu vào thành mảng numpy
data = np.array(data)
return {
"mean": mean,
"variance": variance,
"std_deviation": std_deviation,
"median": median,
"min_value": min_value,
"max_value": max_value,
"sum_value": sum_value
}
# Ví dụ sử dụng
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
statistics = analyze_data(data)
Tóm tắt:
Sử dụng thư viện numpy để thao tác và phân tích dữ liệu.
Chuyển đổi dữ liệu đầu vào thành mảng numpy.
Tính toán các giá trị thống kê cơ bản như giá trị trung bình,
phương sai, độ lệch chuẩn, giá trị trung vị, giá trị nhỏ nhất, giá trị
lớn nhất, và tổng của các phần tử trong mảng.
Trả về kết quả dưới dạng từ điển và in các giá trị thống kê.
Chương trình phân tích dữ liệu sử dụng NumPy để tính toán các giá
trị thống kê cơ bản và hiển thị kết quả.
Chương 30 : Xử lý ảnh
291. Viết chương trình để đọc một ảnh từ file.
292. Viết chương trình để hiển thị một ảnh.
293. Viết chương trình để lưu một ảnh vào file.
294. Viết chương trình để chuyển đổi ảnh màu thành ảnh xám.
295. Viết chương trình để làm mờ ảnh.
296. Viết chương trình để phát hiện cạnh trong ảnh.
297. Viết chương trình để lọc ảnh.
298. Viết chương trình để thay đổi kích thước ảnh.
299. Viết chương trình để cắt ảnh.
300. Viết chương trình để xoay ảnh.
291 - Viết chương trình để đọc một
ảnh từ file
Thuật toán
Đầu vào: - Đường dẫn tới file ảnh (có thể là ảnh bất kỳ: PNG, JPG,
JPEG, etc.)
Đầu ra: - Hiển thị ảnh đã đọc lên màn hình hoặc có thể lưu ảnh đã
đọc vào biến để xử lý thêm.
Các bước thực hiện: 1. Cài đặt thư viện cần thiết để đọc và hiển thị
ảnh. 2. Nhập đường dẫn tới file ảnh. 3. Sử dụng thư viện để đọc ảnh
từ file. 4. Hiển thị ảnh đã đọc lên màn hình.
Bổ sung
Một cách khác để đọc và hiển thị ảnh là sử dụng thư viện PIL
(Pillow).
from PIL import Image # Thư viện Pillow để xử lý ảnh
Tóm tắt
import cv2: Sử dụng thư viện OpenCV để xử lý ảnh.
cv2.imread(): Đọc ảnh từ file.
cv2.imshow(): Hiển thị ảnh trên màn hình.
cv2.waitKey(): Đợi người dùng nhấn phím bất kỳ để tiếp tục.
cv2.destroyAllWindows(): Đóng tất cả các cửa sổ hiển thị.
Chương trình này giúp bạn đọc và hiển thị ảnh từ file sử dụng thư
viện OpenCV trong Python.
292 - Viết chương trình để hiển thị
một ảnh
Để hiển thị một ảnh trong Python, chúng ta có thể sử dụng các thư
viện phổ biến như OpenCV, PIL (Pillow) hoặc matplotlib. Trong phần
này, tôi sẽ trình bày cách sử dụng hai thư viện thông dụng là
OpenCV và matplotlib để hiển thị một ảnh.
Thuật toán
Đầu vào: - Đường dẫn tới file ảnh.
Các bước thực hiện: 1. Chọn thư viện phù hợp để hiển thị ảnh. 2.
Nhập đường dẫn tới file ảnh. 3. Đọc ảnh từ file. 4. Hiển thị ảnh sử
dụng thư viện đã chọn.
OpenCV:
pip install opencv-python
Matplotlib:
pip install matplotlib
Code Python
Bổ sung
Cách 3: Sử dụng PIL (Pillow):
from PIL import Image # Thư viện Pillow để xử lý ảnh
Thuật toán
Đầu vào: - Một ảnh đã được nạp vào bộ nhớ (hoặc đọc từ file trước
đó). - Đường dẫn và tên file nơi ảnh sẽ được lưu.
Đầu ra: - Ảnh được lưu vào file với đường dẫn đã chỉ định.
Các bước thực hiện: 1. Chọn thư viện phù hợp để lưu ảnh. 2. Nạp
hoặc tạo ảnh trong bộ nhớ. 3. Xác định đường dẫn và tên file để lưu
ảnh. 4. Sử dụng thư viện đã chọn để lưu ảnh vào file.
OpenCV:
pip install opencv-python
Pillow:
pip install pillow
Code Python
try:
# Đọc ảnh từ file
image = Image.open(input_image_path)
Bổ sung
Cách 3: Sử dụng matplotlib:
import matplotlib.pyplot as plt # Thư viện Matplotlib để
hiển thị và lưu ảnh
import matplotlib.image as mpimg # Thư viện hỗ trợ đọc
ảnh từ file
Tóm tắt
import cv2: Sử dụng OpenCV để xử lý và lưu ảnh.
cv2.imread(): Đọc ảnh từ file với OpenCV.
cv2.imwrite(): Lưu ảnh vào file với OpenCV.
from PIL import Image: Sử dụng Pillow để xử lý và lưu ảnh.
Image.open(): Đọc ảnh từ file với Pillow.
Image.save(): Lưu ảnh vào file với Pillow.
import matplotlib.pyplot: Sử dụng Matplotlib để hiển thị và lưu
ảnh.
mpimg.imread(): Đọc ảnh từ file với Matplotlib.
plt.imsave(): Lưu ảnh vào file với Matplotlib.
Chương trình này giúp bạn lưu một ảnh vào file sử dụng các thư
viện phổ biến trong Python như OpenCV, Pillow và Matplotlib.
294 - Viết chương trình để chuyển đổi
ảnh màu thành ảnh xám
Chuyển đổi một ảnh màu thành ảnh xám là một bước cơ bản và
quan trọng trong xử lý ảnh. Việc này giúp giảm kích thước dữ liệu và
đơn giản hóa quá trình phân tích mà vẫn giữ lại được các thông tin
cần thiết của ảnh.
Thuật toán
Đầu vào: - Đường dẫn tới file ảnh màu cần chuyển đổi.
Đầu ra: - Ảnh xám được lưu vào file hoặc hiển thị trên màn hình.
Các bước thực hiện: 1. Chọn thư viện phù hợp để đọc và chuyển
đổi ảnh. 2. Nhập đường dẫn tới file ảnh màu. 3. Đọc ảnh màu từ file.
4. Chuyển đổi ảnh màu thành ảnh xám. 5. Hiển thị hoặc lưu ảnh
xám.
OpenCV:
pip install opencv-python
Pillow:
pip install pillow
Code Python
Dưới đây là các cách thực hiện chuyển đổi ảnh màu thành ảnh xám
sử dụng OpenCV và Pillow.
try:
# Đọc ảnh màu từ file
image = Image.open(image_path)
Bổ sung
Cách 3: Sử dụng matplotlib để hiển thị ảnh xám:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# Đường dẫn tới file ảnh màu
image_path = 'path/to/your/color_image.jpg'
Tóm tắt
import cv2: Sử dụng OpenCV để xử lý và chuyển đổi ảnh.
cv2.imread(): Đọc ảnh từ file với OpenCV.
cv2.cvtColor(): Chuyển đổi ảnh màu sang ảnh xám với
OpenCV.
cv2.imshow(): Hiển thị ảnh trên màn hình với OpenCV.
cv2.imwrite(): Lưu ảnh vào file với OpenCV.
from PIL import Image: Sử dụng Pillow để xử lý và chuyển đổi
ảnh.
Image.open(): Đọc ảnh từ file với Pillow.
Image.convert(): Chuyển đổi ảnh màu sang ảnh xám với Pillow.
Image.show(): Hiển thị ảnh trên màn hình với Pillow.
Image.save(): Lưu ảnh vào file với Pillow.
import matplotlib.pyplot: Sử dụng Matplotlib để hiển thị ảnh.
mpimg.imread(): Đọc ảnh từ file với Matplotlib.
plt.imshow(): Hiển thị ảnh với Matplotlib.
Chương trình này giúp bạn chuyển đổi một ảnh màu thành ảnh xám
sử dụng các thư viện phổ biến trong Python như OpenCV, Pillow và
Matplotlib.
295 - Viết chương trình để làm mờ
ảnh
Để làm mờ một ảnh trong Python, chúng ta có thể sử dụng các thư
viện phổ biến như OpenCV hoặc Pillow. Việc làm mờ ảnh (blurring)
là một trong những kỹ thuật cơ bản trong xử lý ảnh, giúp giảm nhiễu
và tạo hiệu ứng mờ trên ảnh.
Thuật toán
Đầu vào: - Đường dẫn tới file ảnh cần làm mờ. - Thông số độ mờ
(tùy chọn).
Đầu ra: - Ảnh đã được làm mờ được lưu vào file hoặc hiển thị trên
màn hình.
Các bước thực hiện: 1. Chọn thư viện phù hợp để đọc và làm mờ
ảnh. 2. Nhập đường dẫn tới file ảnh. 3. Đọc ảnh từ file. 4. Chọn
phương pháp làm mờ. 5. Áp dụng phương pháp làm mờ lên ảnh. 6.
Hiển thị hoặc lưu ảnh đã làm mờ.
Pillow:
pip install pillow
Code Python
Dưới đây là các cách thực hiện làm mờ ảnh sử dụng OpenCV và
Pillow.
try:
# Đọc ảnh từ file
image = Image.open(image_path)
Bổ sung
Cách 3: Sử dụng OpenCV với các loại làm mờ khác nhau:
import cv2
# Làm mờ Gaussian
gaussian_blurred = cv2.GaussianBlur(image, (15, 15),
0)
cv2.waitKey(0)
cv2.destroyAllWindows()
print("Displayed all blurred versions successfully.")
else:
print("Failed to load image. Check the input path and
file format.")
Tóm tắt
import cv2: Sử dụng OpenCV để xử lý và làm mờ ảnh.
cv2.imread(): Đọc ảnh từ file với OpenCV.
cv2.GaussianBlur(): Áp dụng bộ lọc Gaussian Blur với
OpenCV.
cv2.imshow(): Hiển thị ảnh trên màn hình với OpenCV.
cv2.imwrite(): Lưu ảnh vào file với OpenCV.
from PIL import Image, ImageFilter: Sử dụng Pillow để xử lý
và làm mờ ảnh.
Image.open(): Đọc ảnh từ file với Pillow.
Image.filter(): Áp dụng bộ lọc Gaussian Blur với Pillow.
Image.show(): Hiển thị ảnh trên màn hình với Pillow.
Image.save(): Lưu ảnh vào file với Pillow.
Chương trình này giúp bạn làm mờ một ảnh sử dụng các thư viện
phổ biến trong Python như OpenCV và Pillow.
296 - Viết chương trình để phát hiện
cạnh trong ảnh
Phát hiện cạnh là một kỹ thuật quan trọng trong xử lý ảnh, giúp làm
nổi bật các biên, đường viền của đối tượng trong ảnh. Một trong
những phương pháp phổ biến nhất để phát hiện cạnh là sử dụng bộ
lọc Sobel hoặc phương pháp Canny.
Thuật toán
Đầu vào: - Đường dẫn tới file ảnh cần phát hiện cạnh.
Đầu ra: - Ảnh với các cạnh được phát hiện được lưu vào file hoặc
hiển thị trên màn hình.
Các bước thực hiện: 1. Chọn thư viện phù hợp để đọc và phát
hiện cạnh trong ảnh. 2. Nhập đường dẫn tới file ảnh. 3. Đọc ảnh từ
file. 4. Chuyển đổi ảnh màu sang ảnh xám để đơn giản hóa xử lý. 5.
Áp dụng bộ lọc phát hiện cạnh (Sobel hoặc Canny). 6. Hiển thị hoặc
lưu ảnh đã phát hiện cạnh.
OpenCV:
pip install opencv-python
Code Python
Dưới đây là các cách thực hiện phát hiện cạnh sử dụng OpenCV với
phương pháp Sobel và Canny.
Bổ sung
Cách 3: Sử dụng phương pháp Laplacian với OpenCV:
import cv2
Tóm tắt
import cv2: Sử dụng OpenCV để xử lý và phát hiện cạnh trong
ảnh.
cv2.imread(): Đọc ảnh từ file với OpenCV.
cv2.cvtColor(): Chuyển đổi ảnh màu sang ảnh xám.
cv2.Canny(): Áp dụng bộ lọc Canny để phát hiện cạnh.
cv2.Sobel(): Áp dụng bộ lọc Sobel để phát hiện cạnh theo
hướng x và y.
cv2.Laplacian(): Áp dụng bộ lọc Laplacian để phát hiện cạnh.
cv2.imshow(): Hiển thị ảnh trên màn hình với OpenCV.
cv2.imwrite(): Lưu ảnh vào file với OpenCV.
import numpy as np: Sử dụng NumPy để xử lý ma trận.
Chương trình này giúp bạn phát hiện cạnh trong ảnh sử dụng các
phương pháp khác nhau như Canny, Sobel và Laplacian với
OpenCV.
297 - Viết chương trình để lọc ảnh
Thuật toán
Đầu vào:
Một ảnh đầu vào (có thể là file ảnh hoặc mảng ảnh)
Loại bộ lọc cần áp dụng (ví dụ: Gaussian blur, Sharpening,
Grayscale, etc.)
Đầu ra:
Ảnh đã được áp dụng bộ lọc tương ứng
Các bước thực hiện:
1. Chọn thư viện phù hợp để đọc và áp dụng bộ lọc ảnh.
2. Nhập đường dẫn tới file ảnh hoặc tải ảnh vào chương trình.
3. Đọc ảnh từ file.
4. Áp dụng bộ lọc tương ứng lên ảnh.
5. Hiển thị hoặc lưu ảnh đã được lọc.
plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 2)
plt.title('Gaussian Blur')
plt.imshow(cv2.cvtColor(blurred_image,
cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 3)
plt.title('Sharpened Image')
plt.imshow(cv2.cvtColor(sharpened_image,
cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 4)
plt.title('Grayscale Image')
plt.imshow(gray_image, cmap='gray')
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
Bổ sung
Sử dụng thư viện Pillow (PIL):
from PIL import Image, ImageFilter
import matplotlib.pyplot as plt
plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(image)
plt.subplot(2, 2, 2)
plt.title('Gaussian Blur')
plt.imshow(blurred_image)
plt.subplot(2, 2, 3)
plt.title('Sharpened Image')
plt.imshow(sharpened_image)
plt.subplot(2, 2, 4)
plt.title('Grayscale Image')
plt.imshow(gray_image, cmap='gray')
plt.show()
Tóm tắt
Sử dụng thư viện OpenCV để xử lý ảnh.
Đọc ảnh bằng cv2.imread.
Áp dụng các bộ lọc khác nhau (Gaussian Blur, Sharpening,
Grayscale).
Hiển thị kết quả bằng matplotlib.pyplot.
Kiểm tra xem ảnh đã được đọc thành công hay chưa.
Sử dụng bộ lọc Gaussian Blur để làm mờ ảnh.
Sử dụng kernel để làm sắc nét ảnh.
Chuyển đổi ảnh sang màu xám.
Chương trình này thực hiện việc lọc ảnh bằng cách sử dụng các bộ
lọc thông dụng và hiển thị kết quả qua hình ảnh.
298 - Viết chương trình để thay đổi
kích thước ảnh
Thuật toán
Đầu vào:
Đường dẫn tới file ảnh cần thay đổi kích thước.
Kích thước mới (chiều rộng và chiều cao) hoặc tỷ lệ thay đổi
kích thước.
Đầu ra:
Ảnh đã được thay đổi kích thước.
Các bước thực hiện:
1. Chọn thư viện phù hợp để đọc và thay đổi kích thước ảnh.
2. Nhập đường dẫn tới file ảnh.
3. Đọc ảnh từ file.
4. Thay đổi kích thước ảnh theo kích thước mới hoặc tỷ lệ.
5. Hiển thị hoặc lưu ảnh đã thay đổi kích thước.
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 2, 2)
plt.title('Resized Image')
plt.imshow(cv2.cvtColor(resized_image,
cv2.COLOR_BGR2RGB))
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
Giải thích code
1. Đọc ảnh từ file:
cv2.imread('path_to_image.jpg'): Đọc ảnh từ đường dẫn
file.
2. Kiểm tra xem ảnh đã được đọc thành công chưa:
if image is not None: Kiểm tra nếu ảnh được đọc thành
công, nếu không thông báo lỗi.
3. Kích thước mới:
new_width và new_height: Xác định chiều rộng và chiều cao
mới cho ảnh.
4. Thay đổi kích thước ảnh:
cv2.resize(image, (new_width, new_height)): Thay đổi
kích thước ảnh theo kích thước mới.
5. Hiển thị ảnh:
Sử dụng matplotlib.pyplot để hiển thị ảnh gốc và ảnh đã
được thay đổi kích thước.
Bổ sung
Thay đổi kích thước theo tỷ lệ:
import cv2
from matplotlib import pyplot as plt
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 2, 2)
plt.title('Resized Image')
plt.imshow(cv2.cvtColor(resized_image,
cv2.COLOR_BGR2RGB))
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
Tóm tắt
Sử dụng thư viện OpenCV để xử lý ảnh.
Đọc ảnh bằng cv2.imread.
Kiểm tra xem ảnh đã được đọc thành công hay chưa.
Sử dụng hàm cv2.resize để thay đổi kích thước ảnh.
Hiển thị kết quả bằng matplotlib.pyplot.
Đặt kích thước mới hoặc tỷ lệ thay đổi kích thước.
Chương trình này giúp bạn thay đổi kích thước ảnh theo kích thước
cụ thể hoặc theo tỷ lệ và hiển thị kết quả qua hình ảnh.
299 - Viết chương trình để cắt ảnh
Thuật toán
Đầu vào:
Đường dẫn tới file ảnh cần cắt.
Đầu ra:
Ảnh đã được cắt thành các hình vuông, tam giác và hình
tròn.
Các bước thực hiện:
1. Chọn thư viện phù hợp để đọc và xử lý ảnh.
2. Nhập đường dẫn tới file ảnh.
3. Đọc ảnh từ file.
4. Xác định vị trí và kích thước của hình vuông, tam giác và
hình tròn.
5. Cắt ảnh theo các hình dạng đã xác định.
6. Hiển thị hoặc lưu ảnh đã cắt.
plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 2)
plt.title('Square')
plt.imshow(cv2.cvtColor(square, cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 3)
plt.title('Circle')
plt.imshow(cv2.cvtColor(circle, cv2.COLOR_BGR2RGB))
plt.subplot(2, 2, 4)
plt.title('Triangle')
plt.imshow(cv2.cvtColor(triangle, cv2.COLOR_BGR2RGB))
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
Tóm tắt
Sử dụng thư viện OpenCV để xử lý ảnh.
Đọc ảnh bằng cv2.imread.
Kiểm tra xem ảnh đã được đọc thành công hay chưa.
Cắt ảnh thành các hình vuông, tam giác và hình tròn bằng cách
sử dụng mặt nạ.
Hiển thị kết quả bằng matplotlib.pyplot.
Tạo mặt nạ cho các hình dạng khác nhau (vuông, tròn, tam
giác).
Áp dụng mặt nạ lên ảnh để cắt ảnh theo hình dạng tương ứng.
Chương trình này giúp bạn cắt ảnh thành các hình vuông, tam giác
và hình tròn và hiển thị kết quả qua hình ảnh.
300 - Viết chương trình để xoay ảnh
Thuật toán
Đầu vào:
Đường dẫn tới file ảnh cần xoay.
Đầu ra:
Ảnh đã được xoay với các góc 30, 60, 90 và 180 độ.
Các bước thực hiện:
1. Chọn thư viện phù hợp để đọc và xử lý ảnh.
2. Nhập đường dẫn tới file ảnh.
3. Đọc ảnh từ file.
4. Xoay ảnh theo các góc 30, 60, 90 và 180 độ.
5. Hiển thị hoặc lưu ảnh đã xoay.
plt.subplot(2, 3, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
2. Code Python:
from PIL import Image
from matplotlib import pyplot as plt
plt.subplot(2, 3, 1)
plt.title('Original Image')
plt.imshow(image)
for i, angle in enumerate(angles):
plt.subplot(2, 3, i+2)
plt.title(f'Rotated {angle} degrees')
plt.imshow(rotated_images[i])
plt.show()
else:
print("Failed to load image. Check the input path and
file format.")
Tóm tắt
Sử dụng thư viện OpenCV:
Đọc ảnh bằng cv2.imread.
Kiểm tra xem ảnh đã được đọc thành công hay chưa.
Sử dụng hàm cv2.getRotationMatrix2D và cv2.warpAffine
để xoay ảnh.
Hiển thị kết quả bằng matplotlib.pyplot.
Sử dụng thư viện Pillow:
Đọc ảnh bằng Image.open.
Kiểm tra xem ảnh đã được đọc thành công hay chưa.
Sử dụng hàm image.rotate để xoay ảnh.
Hiển thị kết quả bằng matplotlib.pyplot.
Chương trình này giúp bạn xoay ảnh theo các góc cho trước và hiển
thị kết quả qua hình ảnh.
Lời Chào Tạm Biệt
Cảm ơn bạn đã dành thời gian hoàn thành cuốn sách “300 Bài
Code Thiếu Nhi bằng Python”. Hy vọng rằng bạn đã tìm thấy niềm
vui và học được nhiều điều bổ ích từ các bài tập trong cuốn sách
này.
Học hỏi: Không ngừng tìm hiểu và cập nhật kiến thức mới.
Thực hành: Áp dụng những gì đã học vào các dự án thực tế.
Chia sẻ: Chia sẻ kiến thức và kinh nghiệm với cộng đồng.
Liên Hệ
Nếu bạn có bất kỳ câu hỏi hay đóng góp nào, đừng ngần ngại liên
hệ với tôi:
Website: fxstudio.dev
Email: contacts@fxstudio.dev
GitHub: Python_300_kids Repository
Một lần nữa, cảm ơn bạn đã đồng hành cùng cuốn sách này. Chúc
bạn thành công và hạnh phúc trên con đường lập trình!
Trân trọng,
Fx Studio