├── code ├── 071_080 │ ├── source.txt │ ├── destination.txt │ ├── 076.py │ ├── example.txt │ ├── 077.py │ ├── 078.py │ ├── 071.py │ ├── 073.py │ ├── 072.py │ ├── 079.py │ ├── 074.py │ ├── Readme.md │ ├── 075.py │ └── 080.py ├── 000.py ├── 091_100 │ ├── 093.py │ ├── 094.py │ ├── 092.py │ ├── 095.py │ ├── 097.py │ ├── 099.py │ ├── 098.py │ ├── 091.py │ ├── 100.py │ ├── Readme.md │ └── 096.py ├── 291_300 │ ├── img.jpeg │ ├── img2.jpeg │ ├── img_gray.jpeg │ ├── img_edges.jpeg │ ├── img_output.jpeg │ ├── img_blurred.jpeg │ ├── 292.py │ ├── Readme.md │ ├── 291.py │ ├── 293.py │ ├── 294.py │ ├── 298.py │ └── 300.py ├── 211_220 │ ├── example.db │ ├── example2.db │ ├── example3.db │ ├── example4.db │ └── Readme.md ├── 221_230 │ ├── example.xlsx │ ├── students.csv │ ├── abc.csv │ ├── 225.py │ ├── students.json │ ├── 221.py │ ├── 223.py │ ├── 222.py │ ├── 226.py │ ├── 224.py │ ├── Readme.md │ ├── 229.py │ ├── 228.py │ └── 227.py ├── 281_290 │ ├── data.csv │ ├── 284.py │ ├── 289_2.py │ ├── 283.py │ ├── 282.py │ ├── 285.py │ ├── 286.py │ ├── 281.py │ ├── Readme.md │ └── 290.py ├── 151_160 │ ├── 151.py │ ├── 152.py │ ├── 153.py │ ├── 154.py │ ├── 156.py │ ├── Readme.md │ └── 155.py ├── 001_010 │ ├── 002_1.py │ ├── 001_1.py │ ├── 006.py │ ├── 002_2.py │ ├── 010.py │ ├── 007.py │ ├── 009.py │ ├── 001_2.py │ ├── 003.py │ ├── 004.py │ ├── 008.py │ └── Readme.md ├── 021_030 │ ├── 021.py │ ├── 022.py │ ├── 023.py │ ├── 027.py │ ├── 028.py │ ├── 025.py │ ├── 029.py │ ├── 026.py │ ├── Readme.md │ └── 024.py ├── 051_060 │ ├── 055.py │ ├── 059.py │ ├── 060.py │ ├── 056.py │ ├── 057.py │ ├── 058.py │ ├── 051.py │ ├── 053.py │ ├── 054.py │ ├── 052.py │ └── Readme.md ├── 061_070 │ ├── 064.py │ ├── 063.py │ ├── 061.py │ ├── 066.py │ ├── 067.py │ ├── 065.py │ ├── 068.py │ ├── 070.py │ ├── 062.py │ ├── Readme.md │ └── 069.py ├── 191_200 │ ├── 200.py │ ├── 191.py │ ├── 192.py │ ├── 194.py │ ├── 196.py │ ├── 195.py │ ├── 197.py │ ├── 193.py │ ├── 199.py │ ├── 198.py │ └── Readme.md ├── 031_040 │ ├── 034.py │ ├── 033.py │ ├── 031.py │ ├── 032.py │ ├── 039.py │ ├── 035.py │ ├── 036.py │ ├── 040.py │ ├── Readme.md │ ├── 037.py │ └── 038.py ├── 141_150 │ ├── 145.py │ ├── 146.py │ ├── 148.py │ ├── 147.py │ ├── 149.py │ ├── 144.py │ ├── 150.py │ ├── 142.py │ ├── 143.py │ ├── Readme.md │ └── 141_2.py ├── 121_130 │ ├── 130.py │ ├── 125.py │ ├── 124.py │ ├── 129.py │ ├── 126.py │ ├── 121.py │ ├── 123.py │ ├── 122.py │ ├── 127.py │ ├── 128.py │ └── Readme.md ├── 181_190 │ ├── 182.py │ ├── 183.py │ ├── 187.py │ ├── 189.py │ ├── 188.py │ ├── 190.py │ ├── 181.py │ ├── 185.py │ ├── 186.py │ └── Readme.md ├── 081_090 │ ├── 090.py │ ├── 089.py │ └── Readme.md ├── 171_180 │ ├── 174.py │ ├── 171.py │ ├── 179.py │ ├── 180.py │ ├── 175.py │ ├── 173.py │ ├── 176.py │ ├── Readme.md │ └── 172.py ├── 131_140 │ ├── 133.py │ ├── 136.py │ ├── 135.py │ ├── 134.py │ ├── 139.py │ ├── Readme.md │ ├── 140.py │ ├── 132.py │ └── 138.py ├── 201_210 │ ├── 201.py │ ├── 202.py │ ├── 205.py │ ├── 207.py │ ├── 204.py │ ├── 206.py │ ├── 210.py │ ├── 203.py │ ├── 209.py │ └── Readme.md ├── 011_020 │ ├── 018.py │ ├── 015.py │ ├── 017.py │ ├── 016.py │ ├── 012.py │ ├── 011_1.py │ ├── 011_2.py │ ├── Readme.md │ ├── 013.py │ ├── 019.py │ ├── 014.py │ └── 020.py ├── 041_050 │ ├── 046.py │ ├── 041.py │ ├── 047.py │ ├── 048.py │ ├── 045.py │ ├── 043.py │ ├── 042.py │ ├── 050.py │ ├── 049.py │ ├── Readme.md │ └── 044.py ├── 111_120 │ ├── 120.py │ ├── 111.py │ ├── 113.py │ ├── Readme.md │ ├── 115.py │ ├── 117.py │ ├── 112.py │ ├── 114.py │ ├── 116.py │ └── 118.py ├── 271_280 │ ├── 273.py │ ├── 271.py │ ├── 274.py │ ├── 275.py │ ├── 272.py │ ├── 276.py │ ├── 273_2.py │ ├── 280.py │ ├── Readme.md │ └── 279.py ├── 101_110 │ ├── 101.py │ ├── 109.py │ ├── 102.py │ ├── Readme.md │ ├── 107.py │ └── 110.py ├── 231_240 │ ├── 236.py │ ├── Readme.md │ ├── 232.py │ ├── 239.py │ └── 233.py ├── 161_170 │ └── Readme.md ├── 241_250 │ ├── 241.py │ ├── 245.py │ ├── Readme.md │ ├── 244.py │ └── 242.py ├── 261_270 │ ├── 269.py │ ├── Readme.md │ ├── 270.py │ ├── 262.py │ ├── 261.py │ ├── 263.py │ └── 268.py └── 251_260 │ ├── Readme.md │ ├── 252.py │ ├── 253.py │ └── 254.py ├── 291_300 └── Readme.md ├── 161_170 └── Readme.md ├── 011_020 └── Readme.md ├── 051_060 └── Readme.md ├── 231_240 └── Readme.md ├── 221_230 └── Readme.md ├── 061_070 └── Readme.md ├── 031_040 └── Readme.md ├── 151_160 └── Readme.md ├── 081_090 └── Readme.md ├── 071_080 └── Readme.md ├── 201_210 └── Readme.md ├── 271_280 └── Readme.md ├── 001_010 └── Readme.md ├── 241_250 └── Readme.md ├── 041_050 └── Readme.md ├── 131_140 └── Readme.md ├── 021_030 └── Readme.md ├── 111_120 └── Readme.md ├── 101_110 └── Readme.md ├── 181_190 └── Readme.md ├── 261_270 └── Readme.md ├── 091_100 └── Readme.md ├── 281_290 └── Readme.md ├── 251_260 └── Readme.md ├── 191_200 └── Readme.md ├── 171_180 └── Readme.md ├── 211_220 └── Readme.md ├── 141_150 └── Readme.md └── 121_130 └── Readme.md /code/071_080/source.txt: -------------------------------------------------------------------------------- 1 | ABCDEF -------------------------------------------------------------------------------- /code/071_080/destination.txt: -------------------------------------------------------------------------------- 1 | ABCDEF -------------------------------------------------------------------------------- /code/000.py: -------------------------------------------------------------------------------- 1 | # Chào thế giới 2 | 3 | print ('Chào thế giới!') -------------------------------------------------------------------------------- /code/091_100/093.py: -------------------------------------------------------------------------------- 1 | # 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/291_300/img.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img.jpeg -------------------------------------------------------------------------------- /code/211_220/example.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/211_220/example.db -------------------------------------------------------------------------------- /code/291_300/img2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img2.jpeg -------------------------------------------------------------------------------- /code/211_220/example2.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/211_220/example2.db -------------------------------------------------------------------------------- /code/211_220/example3.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/211_220/example3.db -------------------------------------------------------------------------------- /code/211_220/example4.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/211_220/example4.db -------------------------------------------------------------------------------- /code/221_230/example.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/221_230/example.xlsx -------------------------------------------------------------------------------- /code/291_300/img_gray.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img_gray.jpeg -------------------------------------------------------------------------------- /code/221_230/students.csv: -------------------------------------------------------------------------------- 1 | Name,Age,City 2 | Alice,30,New York 3 | Bob,25,Los Angeles 4 | Charlie,35,Chicago 5 | -------------------------------------------------------------------------------- /code/291_300/img_edges.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img_edges.jpeg -------------------------------------------------------------------------------- /code/291_300/img_output.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img_output.jpeg -------------------------------------------------------------------------------- /code/291_300/img_blurred.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fx-studio/Python_300_kids/HEAD/code/291_300/img_blurred.jpeg -------------------------------------------------------------------------------- /code/221_230/abc.csv: -------------------------------------------------------------------------------- 1 | Nguyen Van A,10,Male 2 | Le Thi B,11,Female 3 | Tran Thanh C,10,Male 4 | Bui Van T,9,Male 5 | Ly Thi D,10,Female -------------------------------------------------------------------------------- /code/281_290/data.csv: -------------------------------------------------------------------------------- 1 | Category,Value 2 | A,10 3 | B,20 4 | A,15 5 | C,10 6 | B,25 7 | A,30 8 | C,5 9 | A,40 10 | B,35 11 | C,10 12 | -------------------------------------------------------------------------------- /code/151_160/151.py: -------------------------------------------------------------------------------- 1 | # 151 - Viết chương trình để tạo một cửa sổ GUI đơn giản 2 | 3 | import tkinter as tk 4 | 5 | root = tk.Tk() 6 | root.title("Fx Studio") 7 | root.mainloop() -------------------------------------------------------------------------------- /code/001_010/002_1.py: -------------------------------------------------------------------------------- 1 | # 002 - Viết chương trình để kiểm tra số chẵn hay lẻ. 2 | 3 | num = int(input("Nhập một số: ")) 4 | 5 | if num % 2 == 0: 6 | print("Số chẵn") 7 | else: 8 | print("Số lẻ") -------------------------------------------------------------------------------- /code/021_030/021.py: -------------------------------------------------------------------------------- 1 | # 021 - Viết chương trình để tạo danh sách các số từ 1 đến 100 2 | 3 | # Tạo danh sách các số từ 1 đến 100 4 | numbers = list(range(1, 101)) 5 | 6 | # In danh sách ra màn hình 7 | print(numbers) 8 | -------------------------------------------------------------------------------- /code/091_100/094.py: -------------------------------------------------------------------------------- 1 | # 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ệ 2 | 3 | try: 4 | value = int('abc') 5 | except ValueError: 6 | value = "Error: Invalid type conversion!" 7 | 8 | print(value) -------------------------------------------------------------------------------- /code/001_010/001_1.py: -------------------------------------------------------------------------------- 1 | # 001 - Viết chương trình để kiểm tra số nguyên dương hay âm. 2 | 3 | so = int(input("Nhập một số: ")) 4 | 5 | if so > 0: 6 | print("Số dương") 7 | elif so == 0: 8 | print("Số không") 9 | else: 10 | print("Số âm") -------------------------------------------------------------------------------- /code/091_100/092.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | try: 4 | my_list = [1, 2, 3] 5 | value = my_list[5] 6 | except IndexError: 7 | value = "Error: Index out of range!" 8 | 9 | print(value) -------------------------------------------------------------------------------- /code/051_060/055.py: -------------------------------------------------------------------------------- 1 | # 055 - Viết chương trình để lấy độ dài của set 2 | 3 | # Khởi tạo một set ban đầu 4 | my_set = {'apple', 'banana', 'cherry'} 5 | print("Set ban đầu:", my_set) 6 | 7 | # Lấy độ dài của set 8 | length = len(my_set) 9 | print("Độ dài của set:", length) -------------------------------------------------------------------------------- /code/051_060/059.py: -------------------------------------------------------------------------------- 1 | # 059 - Viết chương trình để xóa tất cả các phần tử trong set 2 | 3 | # Khởi tạo set 4 | set1 = {1, 2, 3, 4, 5} 5 | print("Set ban đầu:", set1) 6 | 7 | # Xóa tất cả các phần tử trong set 8 | set1.clear() 9 | print("Set sau khi xóa tất cả các phần tử:", set1) -------------------------------------------------------------------------------- /code/061_070/064.py: -------------------------------------------------------------------------------- 1 | # 064 - Viết chương trình để chuyển đổi chuỗi thành chữ hoa 2 | 3 | input_str = "hello world" 4 | print("Chuỗi ban đầu:", input_str) 5 | 6 | # Chuyển đổi chuỗi thành chữ hoa 7 | upper_str = input_str.upper() 8 | print("Chuỗi sau khi chuyển đổi thành chữ hoa:", upper_str) -------------------------------------------------------------------------------- /code/191_200/200.py: -------------------------------------------------------------------------------- 1 | # 200 - Viết chương trình để tạo một generator sinh ra các số chính phương 2 | 3 | def square_numbers(n): 4 | for i in range(1, n+1): 5 | yield i * i 6 | 7 | # Use the generator 8 | for number in square_numbers(5): 9 | print(number) # Output: 1, 4, 9, 16, 25 -------------------------------------------------------------------------------- /code/031_040/034.py: -------------------------------------------------------------------------------- 1 | # 034 - Viết chương trình để lấy độ dài của một tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | 6 | # Lấy độ dài của tuple 7 | tuple_length = len(my_tuple) 8 | 9 | # In ra độ dài của tuple 10 | print("Độ dài của tuple là:", tuple_length) 11 | -------------------------------------------------------------------------------- /code/051_060/060.py: -------------------------------------------------------------------------------- 1 | # 060 - Viết chương trình để chuyển đổi một danh sách thành set 2 | 3 | # Khởi tạo danh sách 4 | list1 = [1, 2, 3, 4, 5] 5 | print("Danh sách ban đầu:", list1) 6 | 7 | # Chuyển đổi danh sách thành set 8 | set1 = set(list1) 9 | print("Set sau khi chuyển đổi từ danh sách:", set1) -------------------------------------------------------------------------------- /code/031_040/033.py: -------------------------------------------------------------------------------- 1 | # 033 - Viết chương trình để nối hai tuple 2 | 3 | # Khởi tạo hai tuple 4 | tuple1 = (1, 2, 3) 5 | tuple2 = ("a", "b", "c") 6 | 7 | # Nối hai tuple lại với nhau 8 | combined_tuple = tuple1 + tuple2 9 | 10 | # In ra tuple kết quả 11 | print("Tuple sau khi nối:", combined_tuple) -------------------------------------------------------------------------------- /code/141_150/145.py: -------------------------------------------------------------------------------- 1 | # 145 - Viết chương trình để tính lũy thừa của một số 2 | 3 | def power(base, exponent): 4 | return base ** exponent 5 | 6 | # Test 7 | print(power(2, 3)) 8 | 9 | def power2(base, exponent): 10 | return pow(base, exponent) 11 | 12 | # Test 13 | print(power2(2, 3)) -------------------------------------------------------------------------------- /code/191_200/191.py: -------------------------------------------------------------------------------- 1 | # 191 - Viết chương trình để tạo một generator sinh ra các số nguyên từ 1 đến n 2 | 3 | def generate_numbers(n): 4 | for i in range(1, n + 1): 5 | yield i 6 | 7 | # Sử dụng generator 8 | n = 10 # Ví dụ với n = 10 9 | for number in generate_numbers(n): 10 | print(number) 11 | -------------------------------------------------------------------------------- /code/121_130/130.py: -------------------------------------------------------------------------------- 1 | # 130 - Viết chương trình để sử dụng hàm lambda để tìm số lớn nhất trong danh sách 2 | 3 | # Danh sách cần tìm số lớn nhất 4 | numbers = [1, 2, 33, 4, 5] 5 | 6 | # Tìm số lớn nhất trong danh sách 7 | max_number = max(numbers, key=lambda x: x) 8 | 9 | print(f"Số lớn nhất trong danh sách: {max_number}") -------------------------------------------------------------------------------- /code/031_040/031.py: -------------------------------------------------------------------------------- 1 | # 031 - Viết chương trình để tạo một tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (1, 2, 3, 4, 5) 5 | 6 | # In tuple đã tạo 7 | print("Tuple đã tạo:", my_tuple) 8 | 9 | # Khởi tạo một tuple 10 | my_tuple2 = (1, "a", 3.14, True, 5) 11 | 12 | # In tuple đã tạo 13 | print("Tuple đã tạo:", my_tuple2) -------------------------------------------------------------------------------- /code/031_040/032.py: -------------------------------------------------------------------------------- 1 | # 032 - Viết chương trình để truy cập một phần tử trong tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | 6 | # Truy cập phần tử ở vị trí thứ 2 (chỉ số bắt đầu từ 0) 7 | element = my_tuple[2] 8 | 9 | # In ra phần tử đã truy cập 10 | print("Phần tử ở vị trí thứ 2 trong tuple là:", element) -------------------------------------------------------------------------------- /code/151_160/152.py: -------------------------------------------------------------------------------- 1 | # 152 - Viết chương trình để thêm nút vào cửa sổ GUI 2 | 3 | import tkinter as tk 4 | 5 | def handle_button_click(): 6 | print("Button clicked!") 7 | 8 | root = tk.Tk() 9 | root.title("Fx Studio") 10 | button = tk.Button(root, text="Click me!", command=handle_button_click) 11 | button.pack() 12 | root.mainloop() -------------------------------------------------------------------------------- /code/191_200/192.py: -------------------------------------------------------------------------------- 1 | # 192 - Viết chương trình để tạo một generator sinh ra các số Fibonacci 2 | 3 | def fibonacci(n): 4 | a, b = 0, 1 5 | for _ in range(n): 6 | yield a 7 | a, b = b, a + b 8 | 9 | # Sử dụng generator 10 | n = 10 # Ví dụ với n = 10 11 | for number in fibonacci(n): 12 | print(number) 13 | -------------------------------------------------------------------------------- /code/221_230/225.py: -------------------------------------------------------------------------------- 1 | # 225 - Viết chương trình để đọc dữ liệu từ tệp JSON 2 | 3 | import json 4 | 5 | # Đường dẫn đến tệp JSON 6 | file_path = 'students.json' 7 | 8 | # Đọc dữ liệu từ tệp JSON 9 | with open(file_path, 'r', encoding='utf-8') as jsonfile: 10 | data = json.load(jsonfile) 11 | 12 | # Hiển thị dữ liệu 13 | print(data) -------------------------------------------------------------------------------- /code/051_060/056.py: -------------------------------------------------------------------------------- 1 | # 056 - Viết chương trình để tìm hợp của hai set 2 | 3 | # Khởi tạo hai set ban đầu 4 | set1 = {'apple', 'banana', 'cherry'} 5 | set2 = {'banana', 'cherry', 'durian'} 6 | print("Set 1:", set1) 7 | print("Set 2:", set2) 8 | 9 | # Tìm hợp của hai set 10 | set_union = set1 | set2 11 | print("Hợp của hai set:", set_union) -------------------------------------------------------------------------------- /code/181_190/182.py: -------------------------------------------------------------------------------- 1 | # 182 - Viết chương trình để tạo một iterator từ một tuple 2 | 3 | # Định nghĩa một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | 6 | # Tạo một iterator từ tuple 7 | my_iterator = iter(my_tuple) 8 | 9 | # Sử dụng vòng lặp for để duyệt qua các phần tử của iterator 10 | for element in my_iterator: 11 | print(element) -------------------------------------------------------------------------------- /code/181_190/183.py: -------------------------------------------------------------------------------- 1 | # 183 - Viết chương trình để tạo một iterator từ một chuỗi 2 | 3 | # Định nghĩa một chuỗi 4 | my_string = "Hello, World!" 5 | 6 | # Tạo một iterator từ chuỗi 7 | my_iterator = iter(my_string) 8 | 9 | # Sử dụng vòng lặp for để duyệt qua các phần tử của iterator 10 | for character in my_iterator: 11 | print(character) -------------------------------------------------------------------------------- /code/221_230/students.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Alice", 4 | "age": 30, 5 | "city": "New York" 6 | }, 7 | { 8 | "name": "Bob", 9 | "age": 25, 10 | "city": "Los Angeles" 11 | }, 12 | { 13 | "name": "Charlie", 14 | "age": 35, 15 | "city": "Chicago" 16 | } 17 | ] -------------------------------------------------------------------------------- /code/051_060/057.py: -------------------------------------------------------------------------------- 1 | # 057 - Viết chương trình để tìm giao của hai set 2 | 3 | # Khởi tạo hai set ban đầu 4 | set1 = {'apple', 'banana', 'cherry'} 5 | set2 = {'banana', 'cherry', 'durian'} 6 | print("Set 1:", set1) 7 | print("Set 2:", set2) 8 | 9 | # Tìm giao của hai set 10 | set_intersection = set1 & set2 11 | print("Giao của hai set:", set_intersection) -------------------------------------------------------------------------------- /code/071_080/076.py: -------------------------------------------------------------------------------- 1 | # 076 - Viết chương trình để kiểm tra một file có tồn tại không 2 | 3 | import os 4 | 5 | # Đường dẫn đến file cần kiểm tra 6 | file_path = 'example.txt' 7 | 8 | # Kiểm tra sự tồn tại của file 9 | if os.path.isfile(file_path): 10 | print(f"File '{file_path}' tồn tại.") 11 | else: 12 | print(f"File '{file_path}' không tồn tại.") -------------------------------------------------------------------------------- /code/221_230/221.py: -------------------------------------------------------------------------------- 1 | # 221 - Viết chương trình để đọc dữ liệu từ tệp CSV 2 | 3 | import csv 4 | 5 | # Đường dẫn đến tệp CSV 6 | file_path = 'abc.csv' 7 | 8 | # Đọc và hiển thị nội dung tệp CSV 9 | with open(file_path, newline='', encoding='utf-8') as csvfile: 10 | csvreader = csv.reader(csvfile) 11 | for row in csvreader: 12 | print(row) -------------------------------------------------------------------------------- /code/031_040/039.py: -------------------------------------------------------------------------------- 1 | # 039 - Viết chương trình để tìm phần tử lớn nhất trong tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | print("Tuple đã tạo:", my_tuple) 6 | 7 | # Tìm phần tử lớn nhất trong tuple 8 | max_element = max(my_tuple) 9 | 10 | # In ra phần tử lớn nhất 11 | print("Phần tử lớn nhất trong tuple là:", max_element) 12 | -------------------------------------------------------------------------------- /code/051_060/058.py: -------------------------------------------------------------------------------- 1 | # 058 - Viết chương trình để tìm phần bù của hai set 2 | 3 | # Khởi tạo hai set ban đầu 4 | set1 = {'apple', 'banana', 'cherry'} 5 | set2 = {'banana', 'cherry', 'durian'} 6 | print("Set 1:", set1) 7 | print("Set 2:", set2) 8 | 9 | # Tìm phần bù của hai set 10 | set_difference = set1 - set2 11 | print("Phần bù của hai set:", set_difference) -------------------------------------------------------------------------------- /code/191_200/194.py: -------------------------------------------------------------------------------- 1 | # 194 - Viết chương trình để tạo một generator sinh ra các số chẵn 2 | 3 | def even_numbers(n): 4 | count = 0 5 | num = 2 6 | while count < n: 7 | yield num 8 | count += 1 9 | num += 2 10 | 11 | # Sử dụng generator 12 | n = 10 # Ví dụ với n = 10 13 | for number in even_numbers(n): 14 | print(number) -------------------------------------------------------------------------------- /code/121_130/125.py: -------------------------------------------------------------------------------- 1 | # 125 - Viết chương trình để sử dụng hàm lambda để kiểm tra số chẵn lẻ 2 | 3 | # Định nghĩa hàm lambda để kiểm tra một số là chẵn hay lẻ 4 | is_even = lambda x: "Chẵn" if x % 2 == 0 else "Lẻ" 5 | 6 | # Số cần kiểm tra 7 | number = 3 8 | 9 | # Kiểm tra số là chẵn hay lẻ 10 | result = is_even(number) 11 | 12 | print(f"Số {number} là: {result}") -------------------------------------------------------------------------------- /code/031_040/035.py: -------------------------------------------------------------------------------- 1 | # 035 - Viết chương trình để chuyển đổi một tuple thành danh sách 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | print("Tuple đã tạo:", my_tuple) 6 | 7 | # Chuyển đổi tuple thành danh sách 8 | my_list = list(my_tuple) 9 | 10 | # In ra danh sách đã chuyển đổi 11 | print("Danh sách sau khi chuyển đổi từ tuple:", my_list) 12 | -------------------------------------------------------------------------------- /code/031_040/036.py: -------------------------------------------------------------------------------- 1 | # 036 - Viết chương trình để chuyển đổi một danh sách thành tuple 2 | 3 | # Khởi tạo một danh sách 4 | my_list = [10, 20, 30, 40, 50] 5 | print("Danh sách đã tạo:", my_list) 6 | 7 | # Chuyển đổi danh sách thành tuple 8 | my_tuple = tuple(my_list) 9 | 10 | # In ra tuple đã chuyển đổi 11 | print("Tuple sau khi chuyển đổi từ danh sách:", my_tuple) 12 | -------------------------------------------------------------------------------- /code/051_060/051.py: -------------------------------------------------------------------------------- 1 | # 051 - Viết chương trình để tạo một set 2 | 3 | # Phương pháp 1: Sử dụng dấu ngoặc nhọn {} để tạo một set 4 | set1 = {'apple', 'banana', 'cherry'} 5 | print("Set tạo bằng dấu ngoặc nhọn {}:", set1) 6 | 7 | # Phương pháp 2: Sử dụng hàm set() để tạo một set 8 | set2 = set(['apple', 'banana', 'cherry']) 9 | print("Set tạo bằng hàm set():", set2) 10 | -------------------------------------------------------------------------------- /code/091_100/095.py: -------------------------------------------------------------------------------- 1 | # 095 - Viết chương trình để bắt lỗi khi đọc file không tồn tại 2 | 3 | def read_file(file_path): 4 | try: 5 | with open(file_path, 'r') as file: 6 | content = file.read() 7 | except FileNotFoundError: 8 | content = "Error: File not found!" 9 | 10 | return content 11 | 12 | print(read_file('non_existent_file.txt')) -------------------------------------------------------------------------------- /code/121_130/124.py: -------------------------------------------------------------------------------- 1 | # 124 - Viết chương trình để sử dụng hàm lambda để tính lũy thừa của một số 2 | 3 | # Định nghĩa hàm lambda để tính lũy thừa của một số 4 | power = lambda x, y: x ** y 5 | 6 | # Số và số mũ 7 | number = 2 8 | exponent = 3 9 | 10 | # Tính lũy thừa của số 11 | result = power(number, exponent) 12 | 13 | print(f"{number} lũy thừa {exponent} là: {result}") -------------------------------------------------------------------------------- /code/151_160/153.py: -------------------------------------------------------------------------------- 1 | # 153 - Viết chương trình để thêm hộp văn bản vào cửa sổ GUI 2 | 3 | import tkinter as tk 4 | 5 | def clear_text(): 6 | entry.delete(0, tk.END) 7 | 8 | root = tk.Tk() 9 | root.title("Fx Studio") 10 | entry = tk.Entry(root) 11 | entry.pack() 12 | button = tk.Button(root, text="Clear text", command=clear_text) 13 | button.pack() 14 | root.mainloop() -------------------------------------------------------------------------------- /code/061_070/063.py: -------------------------------------------------------------------------------- 1 | # 063 - Viết chương trình để lấy độ dài của chuỗi 2 | 3 | # Tạo một chuỗi 4 | str1 = "Hello, World!" 5 | 6 | # Lấy độ dài của chuỗi 7 | length = len(str1) 8 | print(length) 9 | 10 | # Hoặc sử dụng vòng lặp 11 | # Tạo một chuỗi 12 | str1 = "Hello, World!" 13 | 14 | # Lấy độ dài của chuỗi 15 | length = 0 16 | for char in str1: 17 | length += 1 18 | print(length) -------------------------------------------------------------------------------- /code/091_100/097.py: -------------------------------------------------------------------------------- 1 | # 097 - Viết chương trình để sử dụng khối lệnh try-except-finally 2 | 3 | def try_except_finally(): 4 | try: 5 | print("Trying to divide by zero...") 6 | result = 10 / 0 7 | except ZeroDivisionError as e: 8 | print("Caught an exception:", e) 9 | finally: 10 | print("This is the finally block.") 11 | 12 | try_except_finally() -------------------------------------------------------------------------------- /code/181_190/187.py: -------------------------------------------------------------------------------- 1 | # 187 - Viết chương trình để sử dụng itertools để tạo ra một permutation 2 | 3 | import itertools 4 | 5 | # Định nghĩa một danh sách 6 | my_list = [1, 2, 3, 4] 7 | 8 | # Tạo ra các permutation từ danh sách 9 | permutations = itertools.permutations(my_list) 10 | 11 | # Duyệt qua các permutation và in ra từng hoán vị 12 | for perm in permutations: 13 | print(perm) 14 | -------------------------------------------------------------------------------- /code/291_300/292.py: -------------------------------------------------------------------------------- 1 | # 292 - Viết chương trình để hiển thị một ảnh 2 | 3 | from PIL import Image # Thư viện Pillow để xử lý ảnh 4 | 5 | # Đường dẫn tới file ảnh 6 | image_path = 'img2.jpeg' 7 | 8 | # Đọc ảnh từ file 9 | try: 10 | image = Image.open(image_path) 11 | image.show() # Hiển thị ảnh sử dụng PIL 12 | except Exception as e: 13 | print(f"Failed to load image: {e}") 14 | -------------------------------------------------------------------------------- /code/091_100/099.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def catch_error_and_continue(): 4 | try: 5 | print("Trying to divide by zero...") 6 | result = 10 / 0 7 | except ZeroDivisionError as e: 8 | print("Caught an exception:", e) 9 | 10 | print("This is a statement after the try/except block.") 11 | 12 | catch_error_and_continue() -------------------------------------------------------------------------------- /code/121_130/129.py: -------------------------------------------------------------------------------- 1 | # 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ị 2 | 3 | # Danh sách từ điển cần sắp xếp 4 | dict_list = [{'name': 'John', 'age': 20}, {'name': 'Jane', 'age': 22}, {'name': 'Doe', 'age': 19}] 5 | 6 | # Sắp xếp danh sách từ điển theo giá trị của 'age' 7 | sorted_list = sorted(dict_list, key=lambda x: x['age']) 8 | 9 | print(f"Danh sách sau khi sắp xếp: {sorted_list}") -------------------------------------------------------------------------------- /code/281_290/284.py: -------------------------------------------------------------------------------- 1 | # 284 - Viết chương trình để vẽ biểu đồ boxplot của một danh sách số 2 | 3 | import matplotlib.pyplot as plt 4 | import seaborn as sns 5 | 6 | def plot_boxplot(numbers): 7 | sns.boxplot(data=numbers) 8 | plt.title('Boxplot') 9 | plt.xlabel('Value') 10 | plt.show() 11 | 12 | # Ví dụ sử dụng 13 | numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6, 7, 8] 14 | plot_boxplot(numbers) 15 | -------------------------------------------------------------------------------- /code/001_010/006.py: -------------------------------------------------------------------------------- 1 | # 006 - Chương trình in bảng cửu chương từ 1 đến 10 2 | 3 | def print_multiplication_table(): 4 | for i in range(1, 11): 5 | print(f"Bảng cửu chương {i}:") 6 | for j in range(1, 11): 7 | print(f"{i} x {j} = {i * j}") 8 | print() # In dòng trống để ngăn cách giữa các bảng cửu chương 9 | 10 | # Gọi hàm để in bảng cửu chương 11 | print_multiplication_table() 12 | -------------------------------------------------------------------------------- /code/141_150/146.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | import math 4 | 5 | def babylonian_sqrt(x): 6 | guess = x 7 | while abs(guess * guess - x) > 1e-10: 8 | guess = (guess + x / guess) / 2 9 | return guess 10 | 11 | # Test 12 | x = 16 13 | print("Babylonian method:", babylonian_sqrt(x)) 14 | print("math.sqrt:", math.sqrt(x)) -------------------------------------------------------------------------------- /code/071_080/example.txt: -------------------------------------------------------------------------------- 1 | Hello, world! 2 | Hello, world! 3 | This is the new content added to the file. 4 | This is the new content added to the file. 5 | This is the new content added to the file. 6 | This is the new content added to the file. 7 | This is the new content added to the file. 8 | This is the new content added to the file. 9 | This is the new content added to the file. 10 | This is the new content added to the file. -------------------------------------------------------------------------------- /code/081_090/090.py: -------------------------------------------------------------------------------- 1 | # 090 - Viết chương trình để sử dụng đa hình trong Python 2 | 3 | class Animal: 4 | def sound(self): 5 | return "Animal makes a sound" 6 | 7 | class Dog(Animal): 8 | def sound(self): 9 | return "Woof!" 10 | 11 | class Cat(Animal): 12 | def sound(self): 13 | return "Meow!" 14 | 15 | animals = [Dog(), Cat()] 16 | 17 | for animal in animals: 18 | print(animal.sound()) -------------------------------------------------------------------------------- /code/091_100/098.py: -------------------------------------------------------------------------------- 1 | # 098 - Viết chương trình để bắt nhiều lỗi cùng lúc 2 | 3 | def catch_multiple_exceptions(x, y): 4 | try: 5 | result = x / y 6 | print(result) 7 | except ZeroDivisionError as e: 8 | print("Caught an exception:", e) 9 | except TypeError as e: 10 | print("Caught an exception:", e) 11 | 12 | catch_multiple_exceptions(10, 0) 13 | catch_multiple_exceptions(10, "zero") -------------------------------------------------------------------------------- /code/121_130/126.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | # Định nghĩa hàm lambda để nhân đôi một số 4 | double = lambda x: x * 2 5 | 6 | # Danh sách cần nhân đôi các phần tử 7 | numbers = [1, 2, 3, 4, 5] 8 | 9 | # Nhân đôi các phần tử trong danh sách 10 | result = list(map(double, numbers)) 11 | 12 | print(f"Danh sách sau khi nhân đôi các phần tử: {result}") -------------------------------------------------------------------------------- /code/171_180/174.py: -------------------------------------------------------------------------------- 1 | # 174 - Viết chương trình để tạo một decorator gọi một hàm nhiều lần 2 | 3 | def repeat(n): 4 | def decorator(func): 5 | def wrapper(*args, **kwargs): 6 | for _ in range(n): 7 | func(*args, **kwargs) 8 | return wrapper 9 | return decorator 10 | 11 | @repeat(10) 12 | def say_hello(): 13 | print("Hello!") 14 | 15 | # Calling the decorated function 16 | say_hello() -------------------------------------------------------------------------------- /code/181_190/189.py: -------------------------------------------------------------------------------- 1 | # 189 - Viết chương trình để sử dụng itertools để tạo ra một product 2 | 3 | import itertools 4 | 5 | # Định nghĩa các collection 6 | list1 = [1, 2] 7 | list2 = ['a', 'b'] 8 | list3 = ['x', 'y'] 9 | 10 | # Tạo ra các product từ các collection 11 | product_result = itertools.product(list1, list2, list3) 12 | 13 | # Duyệt qua các product và in ra từng kết hợp 14 | for combo in product_result: 15 | print(combo) 16 | -------------------------------------------------------------------------------- /code/021_030/022.py: -------------------------------------------------------------------------------- 1 | # 022 - Viết chương trình để thêm một phần tử vào cuối danh sách 2 | 3 | # Khởi tạo danh sách ban đầu 4 | my_list = [1, 2, 3, 4, 5] 5 | 6 | # Nhập phần tử muốn thêm từ người dùng 7 | new_element = input("Nhập phần tử muốn thêm vào danh sách: ") 8 | 9 | # Thêm phần tử vào cuối danh sách 10 | my_list.append(new_element) 11 | 12 | # In danh sách sau khi thêm phần tử 13 | print("Danh sách sau khi thêm phần tử:", my_list) 14 | -------------------------------------------------------------------------------- /code/021_030/023.py: -------------------------------------------------------------------------------- 1 | # 023 - Viết chương trình để thêm một phần tử vào đầu danh sách 2 | 3 | # Khởi tạo danh sách ban đầu 4 | my_list = [1, 2, 3, 4, 5] 5 | 6 | # Nhập phần tử muốn thêm từ người dùng 7 | new_element = input("Nhập phần tử muốn thêm vào đầu danh sách: ") 8 | 9 | # Thêm phần tử vào đầu danh sách 10 | my_list.insert(0, new_element) 11 | 12 | # In danh sách sau khi thêm phần tử 13 | print("Danh sách sau khi thêm phần tử:", my_list) -------------------------------------------------------------------------------- /code/131_140/133.py: -------------------------------------------------------------------------------- 1 | # 133 - Viết chương trình để tìm bội số chung nhỏ nhất (BSCNN) của hai số 2 | 3 | import math 4 | 5 | def lcm(a, b): 6 | """ 7 | Hàm để tìm bội số chung nhỏ nhất (BSCNN) của hai số. 8 | """ 9 | return abs(a * b) // math.gcd(a, b) 10 | 11 | # Hai số đầu vào 12 | a = 15 13 | b = 20 14 | 15 | # Gọi hàm và in kết quả 16 | bscnn = lcm(a, b) 17 | print(f"Bội số chung nhỏ nhất của {a} và {b} là: {bscnn}") 18 | -------------------------------------------------------------------------------- /code/221_230/223.py: -------------------------------------------------------------------------------- 1 | # 223 - Viết chương trình để đọc dữ liệu từ tệp Excel 2 | 3 | import openpyxl 4 | 5 | # Đường dẫn đến tệp Excel 6 | file_path = 'example.xlsx' 7 | 8 | # Mở tệp Excel 9 | workbook = openpyxl.load_workbook(file_path) 10 | 11 | # Chọn sheet cần đọc (ví dụ: sheet đầu tiên) 12 | sheet = workbook.active 13 | 14 | # Đọc và hiển thị nội dung của sheet 15 | for row in sheet.iter_rows(values_only=True): 16 | print(row) 17 | -------------------------------------------------------------------------------- /code/181_190/188.py: -------------------------------------------------------------------------------- 1 | # 188 - Viết chương trình để sử dụng itertools để tạo ra một combination 2 | 3 | import itertools 4 | 5 | # Định nghĩa một danh sách 6 | my_list = [1, 2, 3, 4] 7 | 8 | # Định nghĩa độ dài của tổ hợp 9 | r = 2 10 | 11 | # Tạo ra các combination từ danh sách 12 | combinations = itertools.combinations(my_list, r) 13 | 14 | # Duyệt qua các combination và in ra từng tổ hợp 15 | for combo in combinations: 16 | print(combo) 17 | -------------------------------------------------------------------------------- /code/191_200/196.py: -------------------------------------------------------------------------------- 1 | # 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ừ 2 | 3 | def word_generator(word_list): 4 | for word in word_list: 5 | yield word 6 | 7 | # Sử dụng generator 8 | word_list = ["apple", "banana", "cherry", "date", "elderberry"] 9 | word_gen = word_generator(word_list) 10 | 11 | # Duyệt qua các phần tử bằng next 12 | for _ in range(len(word_list)): 13 | print(next(word_gen)) -------------------------------------------------------------------------------- /code/281_290/289_2.py: -------------------------------------------------------------------------------- 1 | # 289 - Tạo dữ liệu mẫu và lưu vào tệp CSV, sau đó thực hiện phân tích dữ liệu sử dụng Pandas 2 | 3 | import pandas as pd 4 | 5 | # Tạo một DataFrame với dữ liệu mẫu 6 | data = { 7 | 'Category': ['A', 'B', 'A', 'C', 'B', 'A', 'C', 'A', 'B', 'C'], 8 | 'Value': [10, 20, 15, 10, 25, 30, 5, 40, 35, 10] 9 | } 10 | 11 | df = pd.DataFrame(data) 12 | 13 | # Lưu DataFrame vào file CSV 14 | df.to_csv('data.csv', index=False) -------------------------------------------------------------------------------- /code/121_130/121.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def double(n): 4 | """ 5 | Hàm để nhân đôi một số. 6 | """ 7 | return n * 2 8 | 9 | # Danh sách đầu vào 10 | numbers = [1, 2, 3, 4, 5] 11 | 12 | # Sử dụng hàm map để nhân đôi các phần tử trong danh sách 13 | doubled_numbers = list(map(double, numbers)) 14 | 15 | print("Danh sách sau khi nhân đôi các phần tử:", doubled_numbers) -------------------------------------------------------------------------------- /code/171_180/171.py: -------------------------------------------------------------------------------- 1 | # 171 - Viết chương trình Python để tạo một decorator đơn giản 2 | 3 | def my_decorator(func): 4 | def wrapper(): 5 | print("Something is happening before the function is called.") 6 | func() 7 | print("Something is happening after the function is called.") 8 | return wrapper 9 | 10 | @my_decorator 11 | def say_hello(): 12 | print("Hello!") 13 | 14 | # Calling the decorated function 15 | say_hello() -------------------------------------------------------------------------------- /code/191_200/195.py: -------------------------------------------------------------------------------- 1 | # 195 - Viết chương trình để tạo một generator sinh ra các số lẻ 2 | 3 | def odd_numbers(n): 4 | count = 0 5 | num = 1 6 | while count < n: 7 | yield num 8 | count += 1 9 | num += 2 10 | 11 | # Sử dụng generator và duyệt các phần tử bằng next 12 | n = 10 # Ví dụ với n = 10 13 | odd_gen = odd_numbers(n) 14 | 15 | # Duyệt qua các phần tử bằng next 16 | for _ in range(n): 17 | print(next(odd_gen)) -------------------------------------------------------------------------------- /code/141_150/148.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def find_divisors(n): 4 | divisors = [i for i in range(1, n+1) if n % i == 0] 5 | return divisors, len(divisors), sum(divisors) 6 | 7 | n = int(input("Enter a positive integer: ")) 8 | divisors, count, total = find_divisors(n) 9 | print(f"Divisors of {n}: {divisors}") 10 | print(f"Number of divisors: {count}") 11 | print(f"Sum of divisors: {total}") -------------------------------------------------------------------------------- /code/201_210/201.py: -------------------------------------------------------------------------------- 1 | # 201 - Viết chương trình để vẽ đồ thị đường bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | 5 | # Khởi tạo dữ liệu 6 | x = [1, 2, 3, 4, 5] 7 | y = [2, 3, 5, 7, 11] 8 | 9 | # Vẽ đồ thị đường 10 | plt.plot(x, y, marker='o') 11 | 12 | # Thêm tiêu đề và nhãn 13 | plt.title('Đồ thị đường đơn giản') 14 | plt.xlabel('Trục X') 15 | plt.ylabel('Trục Y') 16 | 17 | # Hiển thị lưới 18 | plt.grid(True) 19 | 20 | # Hiển thị đồ thị 21 | plt.show() -------------------------------------------------------------------------------- /code/061_070/061.py: -------------------------------------------------------------------------------- 1 | # 061 - Viết chương trình để tạo một chuỗi 2 | 3 | # Tạo một chuỗi 4 | str1 = "Hello, World!" 5 | print(str1) 6 | 7 | str1 = "Hello, World!" 8 | str2 = 'Hello, World!' 9 | 10 | str3 = """Hello, 11 | World!""" 12 | str4 = '''Hello, 13 | World!''' 14 | 15 | num = 123 16 | str5 = str(num) # '123' 17 | 18 | str6 = "Hello, " + "World!" 19 | 20 | name = "World" 21 | str7 = f"Hello, {name}!" 22 | 23 | name = "World" 24 | str8 = "Hello, {}!".format(name) -------------------------------------------------------------------------------- /code/061_070/066.py: -------------------------------------------------------------------------------- 1 | # 066 - Viết chương trình để đếm số lần xuất hiện của một ký tự trong chuỗi 2 | 3 | # Nhập vào một chuỗi 4 | input_str = "hello world" 5 | print("Chuỗi ban đầu:", input_str) 6 | 7 | # Nhập vào ký tự cần đếm 8 | char_to_count = 'l' 9 | print("Ký tự cần đếm:", char_to_count) 10 | 11 | # Đếm số lần xuất hiện của ký tự trong chuỗi 12 | count = input_str.count(char_to_count) 13 | print(f"Số lần xuất hiện của ký tự '{char_to_count}' trong chuỗi: {count}") -------------------------------------------------------------------------------- /code/121_130/123.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | from functools import reduce 4 | 5 | def add(x, y): 6 | """ 7 | Hàm để tính tổng hai số. 8 | """ 9 | return x + y 10 | 11 | # Danh sách đầu vào 12 | numbers = [1, 2, 3, 4, 5] 13 | 14 | # Sử dụng hàm reduce để tính tổng các phần tử trong danh sách 15 | total = reduce(add, numbers) 16 | 17 | print("Tổng các phần tử trong danh sách:", total) -------------------------------------------------------------------------------- /code/121_130/122.py: -------------------------------------------------------------------------------- 1 | # 122 - Viết chương trình để sử dụng hàm filter để lọc các số chẵn trong danh sách 2 | 3 | def is_even(n): 4 | """ 5 | Hàm để kiểm tra một số có phải là số chẵn hay không. 6 | """ 7 | return n % 2 == 0 8 | 9 | # Danh sách đầu vào 10 | numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] 11 | 12 | # Sử dụng hàm filter để lọc các số chẵn trong danh sách 13 | even_numbers = list(filter(is_even, numbers)) 14 | 15 | print("Danh sách các số chẵn:", even_numbers) -------------------------------------------------------------------------------- /code/281_290/283.py: -------------------------------------------------------------------------------- 1 | # 283 - Viết chương trình để vẽ biểu đồ phân phối của một danh sách số 2 | 3 | import matplotlib.pyplot as plt 4 | import seaborn as sns 5 | 6 | def plot_distribution(numbers): 7 | sns.histplot(numbers, kde=True) 8 | plt.title('Distribution Plot') 9 | plt.xlabel('Value') 10 | plt.ylabel('Frequency') 11 | plt.show() 12 | 13 | # Ví dụ sử dụng 14 | numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6, 7, 8] 15 | plot_distribution(numbers) 16 | -------------------------------------------------------------------------------- /code/011_020/018.py: -------------------------------------------------------------------------------- 1 | # 018 - Viết hàm để chuyển đổi độ C sang độ F 2 | 3 | def celsius_to_fahrenheit(celsius): 4 | return celsius * 9 / 5 + 32 5 | 6 | # Nhập nhiệt độ tính bằng độ Celsius từ người dùng 7 | try: 8 | celsius = float(input("Nhập nhiệt độ tính bằng độ Celsius: ")) 9 | fahrenheit = celsius_to_fahrenheit(celsius) 10 | print(f"{celsius}°C bằng {fahrenheit}°F") 11 | except ValueError: 12 | print("Vui lòng nhập một giá trị hợp lệ cho độ Celsius.") 13 | -------------------------------------------------------------------------------- /code/041_050/046.py: -------------------------------------------------------------------------------- 1 | # 046 - Viết chương trình để lấy tất cả các key trong dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Lấy tất cả các key trong dictionary 14 | keys = my_dict.keys() 15 | 16 | # In ra danh sách các key 17 | print("Các key trong dictionary:", list(keys)) 18 | -------------------------------------------------------------------------------- /code/121_130/127.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | # Định nghĩa hàm lambda để kiểm tra một số có lớn hơn 10 hay không 4 | greater_than_10 = lambda x: x > 10 5 | 6 | # Danh sách cần lọc các số lớn hơn 10 7 | numbers = [5, 10, 15, 20, 25] 8 | 9 | # Lọc các số lớn hơn 10 trong danh sách 10 | result = list(filter(greater_than_10, numbers)) 11 | 12 | print(f"Danh sách sau khi lọc các số lớn hơn 10: {result}") -------------------------------------------------------------------------------- /code/121_130/128.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | from functools import reduce 4 | 5 | # Định nghĩa hàm lambda để nhân hai số lại với nhau 6 | multiply = lambda x, y: x * y 7 | 8 | # Danh sách cần tính tích các phần tử 9 | numbers = [1, 2, 3, 4, 5] 10 | 11 | # Tính tích các phần tử trong danh sách 12 | result = reduce(multiply, numbers) 13 | 14 | print(f"Tích của các phần tử trong danh sách: {result}") -------------------------------------------------------------------------------- /code/141_150/147.py: -------------------------------------------------------------------------------- 1 | # 147 - Viết chương trình để kiểm tra một số có phải là số hoàn hảo không 2 | 3 | def sum_of_divisors(n, i=1, sum=0): 4 | if i == n: 5 | return sum 6 | else: 7 | if n % i == 0: 8 | sum += i 9 | return sum_of_divisors(n, i + 1, sum) 10 | 11 | def is_perfect(n): 12 | return sum_of_divisors(n) == n 13 | 14 | # Test 15 | print(is_perfect(6)) # True 16 | print(is_perfect(28)) # True 17 | print(is_perfect(12)) # False -------------------------------------------------------------------------------- /code/061_070/067.py: -------------------------------------------------------------------------------- 1 | # 067 - Viết chương trình để kiểm tra một chuỗi có chứa một từ không 2 | 3 | # Tạo một chuỗi và một từ cần kiểm tra 4 | str1 = "Hello, World!" 5 | word = "World" 6 | 7 | # Sử dụng toán tử in 8 | # Kiểm tra xem chuỗi có chứa từ cần kiểm tra không 9 | contains_word = word in str1 10 | print(contains_word) 11 | 12 | # Sử dụng phương thức find() 13 | # Kiểm tra xem chuỗi có chứa từ cần kiểm tra không 14 | contains_word = str1.find(word) != -1 15 | print(contains_word) -------------------------------------------------------------------------------- /code/201_210/202.py: -------------------------------------------------------------------------------- 1 | # 202 - Viết chương trình để vẽ đồ thị cột bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | 5 | # Khởi tạo dữ liệu 6 | x = ['A', 'B', 'C', 'D', 'E'] 7 | y = [5, 7, 3, 8, 4] 8 | 9 | # Vẽ đồ thị cột 10 | plt.bar(x, y, color='blue') 11 | 12 | # Thêm tiêu đề và nhãn 13 | plt.title('Đồ thị cột đơn giản') 14 | plt.xlabel('Danh mục') 15 | plt.ylabel('Giá trị') 16 | 17 | # Hiển thị lưới 18 | plt.grid(True, axis='y') 19 | 20 | # Hiển thị đồ thị 21 | plt.show() -------------------------------------------------------------------------------- /code/171_180/179.py: -------------------------------------------------------------------------------- 1 | # 179 - Viết chương trình để tạo một decorator nhận một đối số từ bên ngoài 2 | 3 | def multiply(n): 4 | def decorator(func): 5 | def wrapper(*args, **kwargs): 6 | return n * func(*args, **kwargs) 7 | return wrapper 8 | return decorator 9 | 10 | @multiply(3) 11 | def add(a, b): 12 | return a + b 13 | 14 | # input from user 15 | a = int(input("Enter a : ")) 16 | b = int(input("Enter b: ")) 17 | print(add(a, b)) # Output: (a + b) * 3 -------------------------------------------------------------------------------- /code/201_210/205.py: -------------------------------------------------------------------------------- 1 | # 205 - Viết chương trình để vẽ đồ thị hộp bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | 5 | # Khởi tạo dữ liệu 6 | data = [ [7, 8, 9, 4, 3, 6, 7, 9, 6, 5], 7 | [3, 5, 6, 2, 3, 6, 4, 6, 5, 4], 8 | [8, 9, 7, 8, 9, 5, 8, 9, 7, 6] ] 9 | 10 | # Vẽ đồ thị hộp 11 | plt.boxplot(data) 12 | 13 | # Thêm tiêu đề và nhãn 14 | plt.title('Đồ thị hộp đơn giản') 15 | plt.xlabel('Nhóm') 16 | plt.ylabel('Giá trị') 17 | 18 | # Hiển thị đồ thị 19 | plt.show() -------------------------------------------------------------------------------- /code/111_120/120.py: -------------------------------------------------------------------------------- 1 | # 120 - Viết chương trình để in lịch của một năm nhất định 2 | 3 | import calendar 4 | 5 | def in_lich_nam(nam): 6 | """ 7 | Hàm để in lịch của một năm nhất định. 8 | """ 9 | # Tạo đối tượng TextCalendar 10 | cal = calendar.TextCalendar(calendar.SUNDAY) 11 | 12 | # In lịch của năm 13 | lich_nam = cal.formatyear(nam) 14 | print(lich_nam) 15 | 16 | # Năm đầu vào 17 | nam = 2024 18 | 19 | # Gọi hàm và in kết quả 20 | in_lich_nam(nam) 21 | -------------------------------------------------------------------------------- /code/021_030/027.py: -------------------------------------------------------------------------------- 1 | # 027 - Viết chương trình để tìm phần tử lớn nhất trong danh sách 2 | 3 | import random 4 | 5 | # Khởi tạo mảng số nguyên với các giá trị ngẫu nhiên từ 1 đến 100 6 | my_list = [random.randint(1, 100) for _ in range(10)] 7 | 8 | # In ra mảng 9 | print("Mảng số nguyên với các giá trị ngẫu nhiên:", my_list) 10 | 11 | # Tìm phần tử lớn nhất trong danh sách 12 | max_element = max(my_list) 13 | 14 | # In ra phần tử lớn nhất 15 | print("Phần tử lớn nhất trong danh sách là:", max_element) -------------------------------------------------------------------------------- /code/021_030/028.py: -------------------------------------------------------------------------------- 1 | # 028 - Viết chương trình để tìm phần tử nhỏ nhất trong danh sách 2 | 3 | import random 4 | 5 | # Khởi tạo mảng số nguyên với các giá trị ngẫu nhiên từ 1 đến 100 6 | my_list = [random.randint(1, 100) for _ in range(10)] 7 | 8 | # In ra mảng 9 | print("Mảng số nguyên với các giá trị ngẫu nhiên:", my_list) 10 | 11 | # Tìm phần tử nhỏ nhất trong danh sách 12 | min_element = min(my_list) 13 | 14 | # In ra phần tử nhỏ nhất 15 | print("Phần tử nhỏ nhất trong danh sách là:", min_element) -------------------------------------------------------------------------------- /code/021_030/025.py: -------------------------------------------------------------------------------- 1 | # 025 - Viết chương trình để sắp xếp danh sách theo thứ tự tăng dần 2 | 3 | import random 4 | 5 | # Khởi tạo danh sách ban đầu 6 | my_list = [34, 1, 23, 4, 3, 12, 45, 33, 6, 22] 7 | 8 | # Trộn ngẫu nhiên danh sách 9 | random.shuffle(my_list) 10 | 11 | # In danh sách ban đầu 12 | print("Danh sách ban đầu:", my_list) 13 | 14 | # Sắp xếp danh sách theo thứ tự tăng dần 15 | my_list.sort() 16 | 17 | # In danh sách sau khi sắp xếp 18 | print("Danh sách sau khi sắp xếp tăng dần:", my_list) -------------------------------------------------------------------------------- /code/071_080/077.py: -------------------------------------------------------------------------------- 1 | # 077 - Viết chương trình để xóa một file văn bản 2 | 3 | import os 4 | 5 | # Đường dẫn đến file cần xóa 6 | file_path = 'example_output.txt' 7 | 8 | try: 9 | # Kiểm tra sự tồn tại của file 10 | if os.path.isfile(file_path): 11 | # Xóa file 12 | os.remove(file_path) 13 | print(f"File '{file_path}' đã được xóa.") 14 | else: 15 | print(f"File '{file_path}' không tồn tại.") 16 | except Exception as e: 17 | print(f"Đã xảy ra lỗi: {e}") 18 | -------------------------------------------------------------------------------- /code/001_010/002_2.py: -------------------------------------------------------------------------------- 1 | # 002 - Viết chương trình để kiểm tra số chẵn hay lẻ. 2 | 3 | # Hàm kiểm tra số được nhập 4 | def check_even_odd(n): 5 | if n % 2 == 0: 6 | return "Số bạn nhập là số chẵn." 7 | else: 8 | return "Số bạn nhập là số lẻ." 9 | 10 | # Nhập số nguyên từ người dùng 11 | try: 12 | number = int(input("Nhập một số nguyên: ")) 13 | result = check_even_odd(number) 14 | print(result) 15 | except ValueError: 16 | print("Vui lòng nhập một số nguyên hợp lệ.") 17 | -------------------------------------------------------------------------------- /code/091_100/091.py: -------------------------------------------------------------------------------- 1 | # 091 - Viết chương trình để bắt lỗi chia cho 0 2 | 3 | # try / except with ZeroDivisionError 4 | try: 5 | result = 10 / 0 6 | except ZeroDivisionError: 7 | result = "Error: Division by zero is not allowed!" 8 | 9 | print(result) 10 | 11 | # Function 12 | def safe_division(numerator, denominator): 13 | try: 14 | return numerator / denominator 15 | except ZeroDivisionError: 16 | return "Error: Division by zero is not allowed!" 17 | 18 | print(safe_division(10, 0)) -------------------------------------------------------------------------------- /code/281_290/282.py: -------------------------------------------------------------------------------- 1 | # 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ố 2 | 3 | import statistics 4 | 5 | def calculate_variance_and_std_dev(numbers): 6 | variance = statistics.variance(numbers) 7 | std_dev = statistics.stdev(numbers) 8 | 9 | return variance, std_dev 10 | 11 | # Ví dụ sử dụng 12 | numbers = [1, 2, 2, 3, 4] 13 | variance, std_dev = calculate_variance_and_std_dev(numbers) 14 | print("Variance:", variance) 15 | print("Standard Deviation:", std_dev) 16 | -------------------------------------------------------------------------------- /code/011_020/015.py: -------------------------------------------------------------------------------- 1 | # 015 - Viết hàm để tính tổng các chữ số của một số 2 | 3 | def sum_of_digits(n): 4 | # Đảm bảo n là số dương 5 | n = abs(n) 6 | total = 0 7 | while n > 0: 8 | total += n % 10 9 | n //= 10 10 | return total 11 | 12 | # Nhập số nguyên từ người dùng 13 | try: 14 | number = int(input("Nhập một số nguyên: ")) 15 | print(f"Tổng các chữ số của {number} là: {sum_of_digits(number)}") 16 | except ValueError: 17 | print("Vui lòng nhập một số nguyên hợp lệ.") 18 | -------------------------------------------------------------------------------- /code/171_180/180.py: -------------------------------------------------------------------------------- 1 | # 180 - Viết chương trình để tạo một decorator sử dụng hàm generator 2 | 3 | def generator_decorator(func): 4 | def inner(*args, **kwargs): 5 | yield from func(*args, **kwargs) 6 | return inner 7 | 8 | @generator_decorator 9 | def count_up_to(n): 10 | return (i for i in range(1, n+1)) 11 | 12 | # Get the generator 13 | print(list(count_up_to(5))) # Output: [1, 2, 3, 4, 5] 14 | 15 | # Print the numbers 16 | for num in count_up_to(5): 17 | print(num) # Output: 1, 2, 3, 4, 5 -------------------------------------------------------------------------------- /code/201_210/207.py: -------------------------------------------------------------------------------- 1 | # 207 - Viết chương trình để vẽ đồ thị đường cong bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | import numpy as np 5 | 6 | # Khởi tạo dữ liệu 7 | x = np.linspace(0, 10, 100) 8 | y = np.sin(x) 9 | 10 | # Vẽ đồ thị đường cong 11 | plt.plot(x, y, label='sin(x)') 12 | 13 | # Thêm tiêu đề và nhãn 14 | plt.title('Đồ thị đường cong của hàm sin') 15 | plt.xlabel('Trục X') 16 | plt.ylabel('Trục Y') 17 | 18 | # Thêm chú thích 19 | plt.legend() 20 | 21 | # Hiển thị đồ thị 22 | plt.show() 23 | -------------------------------------------------------------------------------- /code/001_010/010.py: -------------------------------------------------------------------------------- 1 | # 010 - Viết chương trình để tìm ước số chung lớn nhất (USCLN) của hai số 2 | 3 | def gcd(a, b): 4 | while b != 0: 5 | a, b = b, a % b 6 | return a 7 | 8 | # Nhập hai số nguyên từ người dùng 9 | try: 10 | num1 = int(input("Nhập số thứ nhất: ")) 11 | num2 = int(input("Nhập số thứ hai: ")) 12 | 13 | uscln = gcd(num1, num2) 14 | print(f"Ước số chung lớn nhất của {num1} và {num2} là: {uscln}") 15 | except ValueError: 16 | print("Vui lòng nhập các số nguyên hợp lệ.") 17 | -------------------------------------------------------------------------------- /code/021_030/029.py: -------------------------------------------------------------------------------- 1 | # 029 - Viết chương trình để tính tổng các phần tử trong danh sách 2 | 3 | import random 4 | 5 | # Khởi tạo danh sách với các phần tử ngẫu nhiên 6 | # Giả sử danh sách có 10 phần tử với giá trị từ 1 đến 100 7 | my_list = [random.randint(1, 100) for _ in range(10)] 8 | 9 | # In danh sách ban đầu 10 | print("Danh sách ban đầu:", my_list) 11 | 12 | # Tính tổng các phần tử trong danh sách 13 | total_sum = sum(my_list) 14 | 15 | # In ra tổng các phần tử 16 | print("Tổng các phần tử trong danh sách là:", total_sum) -------------------------------------------------------------------------------- /code/131_140/136.py: -------------------------------------------------------------------------------- 1 | # 136 - Viết chương trình để tính tổng các số từ 1 đến n 2 | 3 | def calculate_sum(n): 4 | # Tính tổng các số từ 1 đến n 5 | return sum(range(1, n + 1)) 6 | 7 | # Nhập giá trị n từ người dùng 8 | n = int(input("Nhập một số nguyên dương n: ")) 9 | 10 | # Kiểm tra nếu n là số nguyên dương 11 | if n > 0: 12 | # Tính tổng và in kết quả 13 | total_sum = calculate_sum(n) 14 | print(f"Tổng các số từ 1 đến {n} là: {total_sum}") 15 | else: 16 | print("Vui lòng nhập một số nguyên dương.") 17 | -------------------------------------------------------------------------------- /code/281_290/285.py: -------------------------------------------------------------------------------- 1 | # 285 - Viết chương trình để vẽ biểu đồ scatterplot của hai danh sách số 2 | 3 | import matplotlib.pyplot as plt 4 | import seaborn as sns 5 | 6 | def plot_scatterplot(x, y): 7 | plt.figure(figsize=(8, 6)) 8 | plt.scatter(x, y) 9 | plt.title('Scatterplot') 10 | plt.xlabel('X values') 11 | plt.ylabel('Y values') 12 | plt.grid(True) 13 | plt.show() 14 | 15 | # Ví dụ sử dụng 16 | x = [1, 2, 3, 4, 5, 6, 7, 8, 9] 17 | y = [2, 3, 5, 7, 11, 13, 17, 19, 23] 18 | plot_scatterplot(x, y) 19 | -------------------------------------------------------------------------------- /code/281_290/286.py: -------------------------------------------------------------------------------- 1 | # 286 - Viết chương trình để tính ma trận tương quan của hai danh sách số 2 | 3 | import numpy as np 4 | import pandas as pd 5 | 6 | def calculate_correlation_matrix(x, y): 7 | data = {'X': x, 'Y': y} 8 | df = pd.DataFrame(data) 9 | correlation_matrix = df.corr() 10 | return correlation_matrix 11 | 12 | # Ví dụ sử dụng 13 | x = [1, 2, 3, 4, 5, 6, 7, 8, 9] 14 | y = [2, 3, 5, 7, 11, 13, 17, 19, 23] 15 | correlation_matrix = calculate_correlation_matrix(x, y) 16 | print(correlation_matrix) 17 | -------------------------------------------------------------------------------- /code/001_010/007.py: -------------------------------------------------------------------------------- 1 | # 007 - Chương trình kiểm tra năm nhuận 2 | 3 | def is_leap_year(year): 4 | if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): 5 | return True 6 | else: 7 | return False 8 | 9 | # Nhập năm từ người dùng 10 | try: 11 | year = int(input("Nhập một năm: ")) 12 | if is_leap_year(year): 13 | print(f"Năm {year} là năm nhuận.") 14 | else: 15 | print(f"Năm {year} không phải là năm nhuận.") 16 | except ValueError: 17 | print("Vui lòng nhập một số nguyên hợp lệ.") -------------------------------------------------------------------------------- /code/111_120/111.py: -------------------------------------------------------------------------------- 1 | # 111 - Viết chương trình để lấy ngày và giờ hiện tại 2 | 3 | from datetime import datetime 4 | 5 | def lay_ngay_gio_hien_tai(): 6 | """ 7 | Hàm để lấy ngày và giờ hiện tại. 8 | """ 9 | # Lấy thời gian hiện tại 10 | hien_tai = datetime.now() 11 | 12 | # Định dạng ngày và giờ hiện tại 13 | ngay_gio_hien_tai = hien_tai.strftime("%Y-%m-%d %H:%M:%S") 14 | return ngay_gio_hien_tai 15 | 16 | # Gọi hàm và in kết quả 17 | print("Ngày và giờ hiện tại là:", lay_ngay_gio_hien_tai()) 18 | -------------------------------------------------------------------------------- /code/141_150/149.py: -------------------------------------------------------------------------------- 1 | # 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ố 2 | 3 | def prime_factors(n): 4 | i = 2 5 | factors = [] 6 | while i * i <= n: 7 | if n % i: 8 | i += 1 9 | else: 10 | n //= i 11 | factors.append(i) 12 | if n > 1: 13 | factors.append(n) 14 | return factors 15 | 16 | n = int(input("Enter a positive integer: ")) 17 | factors = prime_factors(n) 18 | print(f"Prime factors of {n}: {factors}") -------------------------------------------------------------------------------- /code/071_080/078.py: -------------------------------------------------------------------------------- 1 | # 078 - Viết chương trình để đọc file theo từng dòng 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | 6 | try: 7 | # Mở file văn bản với chế độ đọc 8 | with open(file_path, 'r') as file: 9 | # Lặp qua từng dòng trong file 10 | for line in file: 11 | # In từng dòng ra màn hình 12 | print(line, end='') 13 | except FileNotFoundError: 14 | print(f"Không tìm thấy file: {file_path}") 15 | except Exception as e: 16 | print(f"Đã xảy ra lỗi: {e}") 17 | -------------------------------------------------------------------------------- /code/031_040/040.py: -------------------------------------------------------------------------------- 1 | # 040 - Viết chương trình để tìm phần tử nhỏ nhất trong tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 5, 50, 3, 25) 5 | print("Tuple đã tạo:", my_tuple) 6 | 7 | # Giả sử phần tử đầu tiên là phần tử nhỏ nhất 8 | min_element = my_tuple[0] 9 | 10 | # Duyệt qua từng phần tử trong tuple để tìm phần tử nhỏ nhất 11 | for element in my_tuple: 12 | if element < min_element: 13 | min_element = element 14 | 15 | # In ra phần tử nhỏ nhất 16 | print("Phần tử nhỏ nhất trong tuple là:", min_element) 17 | -------------------------------------------------------------------------------- /code/051_060/053.py: -------------------------------------------------------------------------------- 1 | # 053 - Viết chương trình để xóa một phần tử khỏi set 2 | 3 | # Khởi tạo một set ban đầu 4 | my_set = {'apple', 'banana', 'cherry'} 5 | print("Set ban đầu:", my_set) 6 | 7 | # Phương pháp 1: Sử dụng phương thức remove() để xóa một phần tử khỏi set 8 | my_set.remove('banana') 9 | print("Set sau khi xóa 'banana' bằng phương thức remove():", my_set) 10 | 11 | # Phương pháp 2: Sử dụng phương thức discard() để xóa một phần tử khỏi set 12 | my_set.discard('apple') 13 | print("Set sau khi xóa 'apple' bằng phương thức discard():", my_set) -------------------------------------------------------------------------------- /code/181_190/190.py: -------------------------------------------------------------------------------- 1 | # 190 - Viết chương trình để sử dụng itertools để tạo ra một combinations_with_replacement 2 | 3 | import itertools 4 | 5 | # Định nghĩa một danh sách 6 | my_list = [1, 2, 3, 4, 5, 6] 7 | 8 | # Định nghĩa độ dài của tổ hợp 9 | r = 3 10 | 11 | # Tạo ra các combinations with replacement từ danh sách 12 | combinations_with_replacement = itertools.combinations_with_replacement(my_list, r) 13 | 14 | # Duyệt qua các combinations with replacement và in ra từng tổ hợp 15 | for combo in combinations_with_replacement: 16 | print(combo) -------------------------------------------------------------------------------- /code/141_150/144.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def find_pythagorean_triplets(): 4 | triplets = [] 5 | for a in range(1, 98): 6 | b, c = a + 1, a + 2 # 3 số liên tiếp 7 | if a*a + b*b == c*c: 8 | triplets.append((a, b, c)) 9 | b, c = a + 2, a + 4 # 3 số chẵn liên tiếp 10 | if a*a + b*b == c*c: 11 | triplets.append((a, b, c)) 12 | return triplets 13 | 14 | print(find_pythagorean_triplets()) -------------------------------------------------------------------------------- /code/271_280/273.py: -------------------------------------------------------------------------------- 1 | # 273 - Viết chương trình để vẽ hình tròn bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình tròn bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | circle_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | circle_turtle.speed(1) 14 | 15 | # Vẽ hình tròn với bán kính 100 đơn vị 16 | circle_turtle.circle(100) 17 | 18 | # Ẩn đối tượng Turtle sau khi vẽ xong 19 | circle_turtle.hideturtle() 20 | 21 | # Giữ màn hình để xem kết quả 22 | screen.mainloop() 23 | -------------------------------------------------------------------------------- /code/181_190/181.py: -------------------------------------------------------------------------------- 1 | # 181 - Viết chương trình để tạo một iterator từ một list 2 | 3 | # Định nghĩa một danh sách 4 | my_list = [1, 2, 3, 4, 5] 5 | 6 | # Tạo một iterator từ danh sách 7 | my_iterator = iter(my_list) 8 | 9 | # Sử dụng vòng lặp để duyệt qua các phần tử của iterator 10 | while True: 11 | try: 12 | # Lấy phần tử tiếp theo từ iterator 13 | element = next(my_iterator) 14 | print(element) 15 | except StopIteration: 16 | # Nếu không còn phần tử nào trong iterator thì thoát khỏi vòng lặp 17 | break 18 | -------------------------------------------------------------------------------- /code/061_070/065.py: -------------------------------------------------------------------------------- 1 | # 065 - Viết chương trình để chuyển đổi chuỗi thành chữ thường 2 | 3 | # Tạo một chuỗi 4 | str1 = "Hello, World!" 5 | 6 | # Chuyển đổi chuỗi thành chữ thường 7 | lowercase_str = str1.lower() 8 | print(lowercase_str) 9 | 10 | # Hoặc sử dụng vòng lặp 11 | # Tạo một chuỗi 12 | str1 = "Hello, World!" 13 | 14 | # Chuyển đổi chuỗi thành chữ thường 15 | lowercase_str = "" 16 | for char in str1: 17 | if 'A' <= char <= 'Z': 18 | lowercase_str += chr(ord(char) + 32) 19 | else: 20 | lowercase_str += char 21 | print(lowercase_str) -------------------------------------------------------------------------------- /code/021_030/026.py: -------------------------------------------------------------------------------- 1 | # 026 - Viết chương trình để sắp xếp danh sách theo thứ tự giảm dần 2 | 3 | import random 4 | 5 | # Khởi tạo danh sách ban đầu 6 | my_list = [34, 1, 23, 4, 3, 12, 45, 33, 6, 22] 7 | 8 | # In danh sách ban đầu 9 | print("Danh sách ban đầu:", my_list) 10 | 11 | # Xáo trộn ngẫu nhiên danh sách 12 | random.shuffle(my_list) 13 | print("Danh sách sau khi xáo trộn:", my_list) 14 | 15 | # Sắp xếp danh sách theo thứ tự giảm dần 16 | my_list.sort(reverse=True) 17 | 18 | # In danh sách sau khi sắp xếp 19 | print("Danh sách sau khi sắp xếp giảm dần:", my_list) -------------------------------------------------------------------------------- /code/091_100/100.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | # Hàm bắt và nem lỗi 4 | def throw_error(): 5 | try: 6 | result = 10 / 0 7 | except ZeroDivisionError as e: 8 | raise e 9 | except TypeError as e: 10 | raise e 11 | 12 | # Hàm ghi log lỗi vào file 13 | def log_error(): 14 | try: 15 | throw_error() 16 | except Exception as e: 17 | with open('error.txt', 'a') as f: 18 | f.write(str(e) + '\n') 19 | 20 | # Gọi hàm log_error 21 | log_error() -------------------------------------------------------------------------------- /code/071_080/071.py: -------------------------------------------------------------------------------- 1 | # 071 - Viết chương trình để đọc nội dung của một file văn bản 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | 6 | try: 7 | # Mở file văn bản với chế độ đọc 8 | with open(file_path, 'r') as file: 9 | # Đọc toàn bộ nội dung của file 10 | content = file.read() 11 | # In nội dung của file 12 | print("Nội dung của file:") 13 | print(content) 14 | except FileNotFoundError: 15 | print(f"Không tìm thấy file: {file_path}") 16 | except Exception as e: 17 | print(f"Đã xảy ra lỗi: {e}") -------------------------------------------------------------------------------- /code/101_110/101.py: -------------------------------------------------------------------------------- 1 | # 101 - Viết chương trình để đếm số từ trong một chuỗi 2 | 3 | def dem_so_tu(chuoi): 4 | """ 5 | Hàm này nhận vào một chuỗi và trả về số từ trong chuỗi đó. 6 | """ 7 | # Tách chuỗi thành danh sách các từ 8 | danh_sach_tu = chuoi.split() 9 | 10 | # Đếm số từ trong danh sách 11 | so_tu = len(danh_sach_tu) 12 | 13 | return so_tu 14 | 15 | # Nhập chuỗi từ người dùng 16 | chuoi = input("Nhập một chuỗi: ") 17 | 18 | # Gọi hàm và in kết quả 19 | so_tu = dem_so_tu(chuoi) 20 | print(f"Số từ trong chuỗi là: {so_tu}") 21 | -------------------------------------------------------------------------------- /code/191_200/197.py: -------------------------------------------------------------------------------- 1 | # 197 - Viết chương trình để tạo một generator sinh ra các chuỗi hoàn hảo 2 | 3 | def is_palindrome(s): 4 | return s == s[::-1] 5 | 6 | def perfect_strings(strings): 7 | for s in strings: 8 | if is_palindrome(s): 9 | yield s 10 | 11 | # Sử dụng generator 12 | string_list = ["level", "world", "radar", "python", "madam", "example"] 13 | perfect_gen = perfect_strings(string_list) 14 | 15 | # Duyệt qua các phần tử bằng next 16 | try: 17 | while True: 18 | print(next(perfect_gen)) 19 | except StopIteration: 20 | pass -------------------------------------------------------------------------------- /code/221_230/222.py: -------------------------------------------------------------------------------- 1 | # 222 - Viết chương trình để ghi dữ liệu vào tệp CSV 2 | 3 | import csv 4 | 5 | # Dữ liệu cần ghi vào tệp CSV 6 | data = [ 7 | ['Name', 'Age', 'City'], 8 | ['Alice', 30, 'New York'], 9 | ['Bob', 25, 'Los Angeles'], 10 | ['Charlie', 35, 'Chicago'] 11 | ] 12 | 13 | # Đường dẫn đến tệp CSV 14 | file_path = 'output.csv' 15 | 16 | # Ghi dữ liệu vào tệp CSV 17 | with open(file_path, mode='w', newline='', encoding='utf-8') as csvfile: 18 | csvwriter = csv.writer(csvfile) 19 | for row in data: 20 | csvwriter.writerow(row) 21 | -------------------------------------------------------------------------------- /code/221_230/226.py: -------------------------------------------------------------------------------- 1 | # 226 - Viết chương trình để ghi dữ liệu vào tệp JSON 2 | 3 | import json 4 | 5 | # Dữ liệu giả về danh sách học sinh 6 | students = [ 7 | {"name": "Alice", "age": 30, "city": "New York"}, 8 | {"name": "Bob", "age": 25, "city": "Los Angeles"}, 9 | {"name": "Charlie", "age": 35, "city": "Chicago"} 10 | ] 11 | 12 | # Đường dẫn đến tệp JSON 13 | file_path = 'students.json' 14 | 15 | # Ghi dữ liệu vào tệp JSON 16 | with open(file_path, 'w', encoding='utf-8') as jsonfile: 17 | json.dump(students, jsonfile, ensure_ascii=False, indent=4) 18 | -------------------------------------------------------------------------------- /code/011_020/017.py: -------------------------------------------------------------------------------- 1 | # 017 - Viết hàm để tính lũy thừa của một số 2 | 3 | def power(base, exponent): 4 | result = 1 5 | for _ in range(abs(exponent)): 6 | result *= base 7 | if exponent < 0: 8 | result = 1 / result 9 | return result 10 | 11 | # Nhập cơ số và số mũ từ người dùng 12 | try: 13 | base = float(input("Nhập cơ số: ")) 14 | exponent = int(input("Nhập số mũ: ")) 15 | print(f"{base} ^ {exponent} = {power(base, exponent)}") 16 | except ValueError: 17 | print("Vui lòng nhập cơ số là một số và số mũ là một số nguyên hợp lệ.") 18 | -------------------------------------------------------------------------------- /code/001_010/009.py: -------------------------------------------------------------------------------- 1 | # 009 - Viết chương trình để in tất cả các số nguyên tố từ 1 đến 100 2 | 3 | def is_prime(n): 4 | if n <= 1: 5 | return False 6 | for i in range(2, int(n**0.5) + 1): 7 | if n % i == 0: 8 | return False 9 | return True 10 | 11 | def print_primes_up_to_100(): 12 | for number in range(1, 101): 13 | if is_prime(number): 14 | print(number, end=' ') 15 | print() # Dòng mới sau khi in xong tất cả các số nguyên tố 16 | 17 | # Gọi hàm để in các số nguyên tố từ 1 đến 100 18 | print_primes_up_to_100() 19 | -------------------------------------------------------------------------------- /code/071_080/073.py: -------------------------------------------------------------------------------- 1 | # 073 - Viết chương trình để đếm số dòng trong một file văn bản 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | 6 | try: 7 | # Mở file văn bản với chế độ đọc 8 | with open(file_path, 'r') as file: 9 | # Đếm số lượng dòng trong file 10 | line_count = sum(1 for line in file) 11 | # In số lượng dòng 12 | print(f"Số lượng dòng trong file: {line_count}") 13 | except FileNotFoundError: 14 | print(f"Không tìm thấy file: {file_path}") 15 | except Exception as e: 16 | print(f"Đã xảy ra lỗi: {e}") 17 | -------------------------------------------------------------------------------- /code/041_050/041.py: -------------------------------------------------------------------------------- 1 | # 041 - Viết chương trình để tạo một dictionary 2 | 3 | # Khởi tạo một dictionary rỗng 4 | my_dict = {} 5 | 6 | # Thêm các cặp khóa-giá trị vào dictionary 7 | my_dict['name'] = 'Alice' 8 | my_dict['age'] = 25 9 | my_dict['city'] = 'New York' 10 | 11 | # In ra dictionary đã tạo 12 | print("Dictionary đã tạo:", my_dict) 13 | 14 | # Khởi tạo một dictionary với các cặp khóa-giá trị ban đầu 15 | my_dict_2 = { 16 | 'name': 'Bob', 17 | 'age': 30, 18 | 'city': 'Los Angeles' 19 | } 20 | 21 | # In ra dictionary đã tạo 22 | print("Dictionary đã tạo:", my_dict_2) 23 | -------------------------------------------------------------------------------- /code/061_070/068.py: -------------------------------------------------------------------------------- 1 | # 068 - Viết chương trình để thay thế một từ trong chuỗi bằng từ khác 2 | 3 | # Nhập vào một chuỗi 4 | input_str = "Hello world, welcome to the world of Python." 5 | print("Chuỗi ban đầu:", input_str) 6 | 7 | # Nhập vào từ cần thay thế 8 | word_to_replace = "world" 9 | print("Từ cần thay thế:", word_to_replace) 10 | 11 | # Nhập vào từ thay thế 12 | replacement_word = "universe" 13 | print("Từ thay thế:", replacement_word) 14 | 15 | # Thay thế từ trong chuỗi 16 | new_str = input_str.replace(word_to_replace, replacement_word) 17 | print("Chuỗi sau khi thay thế:", new_str) -------------------------------------------------------------------------------- /code/201_210/204.py: -------------------------------------------------------------------------------- 1 | # 204 - Viết chương trình để vẽ đồ thị tán xạ bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | 5 | # Khởi tạo dữ liệu 6 | x = [1, 2, 3, 4, 5] 7 | y = [2, 3, 5, 7, 11] 8 | sizes = [20, 50, 100, 200, 500] # Kích thước của các điểm 9 | colors = ['red', 'blue', 'green', 'orange', 'purple'] # Màu sắc của các điểm 10 | 11 | # Vẽ đồ thị tán xạ 12 | plt.scatter(x, y, s=sizes, c=colors, alpha=0.5) 13 | 14 | # Thêm tiêu đề và nhãn 15 | plt.title('Đồ thị tán xạ đơn giản') 16 | plt.xlabel('Trục X') 17 | plt.ylabel('Trục Y') 18 | 19 | # Hiển thị đồ thị 20 | plt.show() -------------------------------------------------------------------------------- /code/101_110/109.py: -------------------------------------------------------------------------------- 1 | # 109 - Viết chương trình để loại bỏ các ký tự đặc biệt khỏi chuỗi 2 | 3 | import re 4 | 5 | def loai_bo_ky_tu_dac_biet(chuoi): 6 | """ 7 | 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ố. 8 | """ 9 | chuoi_ket_qua = re.sub(r'[^A-Za-z0-9]', '', chuoi) 10 | return chuoi_ket_qua 11 | 12 | # Chuỗi ban đầu chứa các ký tự đặc biệt 13 | chuoi_ban_dau = "Hello, World! Đây là một chuỗi #123 với ký tự đặc biệt @2024." 14 | 15 | # Gọi hàm và in kết quả 16 | chuoi_ket_qua = loai_bo_ky_tu_dac_biet(chuoi_ban_dau) 17 | print(chuoi_ket_qua) 18 | -------------------------------------------------------------------------------- /code/011_020/016.py: -------------------------------------------------------------------------------- 1 | # 016 - Viết hàm để kiểm tra một chuỗi có phải là palindrome không 2 | 3 | def is_palindrome(s): 4 | # 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ố 5 | s = ''.join(char.lower() for char in s if char.isalnum()) 6 | # So sánh chuỗi với chuỗi đảo ngược của nó 7 | return s == s[::-1] 8 | 9 | # Nhập chuỗi từ người dùng 10 | input_string = input("Nhập một chuỗi: ") 11 | 12 | if is_palindrome(input_string): 13 | print(f'"{input_string}" là palindrome.') 14 | else: 15 | print(f'"{input_string}" không phải là palindrome.') 16 | -------------------------------------------------------------------------------- /code/141_150/150.py: -------------------------------------------------------------------------------- 1 | # 150 - Viết chương trình để tìm khoảng cách của 2 điểm A & B trong hệ tọa độ Oxy 2 | 3 | import math 4 | 5 | def calculate_distance(point1, point2): 6 | return math.sqrt((point1[0] - point2[0])**2 + (point1[1] - point2[1])**2) 7 | 8 | pointA = (float(input("Enter x coordinate for point A: ")), float(input("Enter y coordinate for point A: "))) 9 | pointB = (float(input("Enter x coordinate for point B: ")), float(input("Enter y coordinate for point B: "))) 10 | 11 | distance = calculate_distance(pointA, pointB) 12 | print(f"The distance between point A and point B is: {distance}") -------------------------------------------------------------------------------- /code/011_020/012.py: -------------------------------------------------------------------------------- 1 | # 012 - Chương trình tính tổng các số từ 1 đến n 2 | 3 | def sum_of_numbers(n): 4 | if n < 1: 5 | return "Vui lòng nhập một số nguyên dương lớn hơn hoặc bằng 1." 6 | return n * (n + 1) // 2 7 | 8 | # Nhập số nguyên dương từ người dùng 9 | try: 10 | number = int(input("Nhập một số nguyên dương: ")) 11 | if number < 1: 12 | print("Vui lòng nhập một số nguyên dương lớn hơn hoặc bằng 1.") 13 | else: 14 | print(f"Tổng các số từ 1 đến {number} là: {sum_of_numbers(number)}") 15 | except ValueError: 16 | print("Vui lòng nhập một số nguyên hợp lệ.") -------------------------------------------------------------------------------- /code/151_160/154.py: -------------------------------------------------------------------------------- 1 | # 154 - Viết chương trình để thêm nhãn vào cửa sổ GUI 2 | 3 | import tkinter as tk 4 | 5 | def change_label_text(): 6 | label.config(text="Nội dung nhãn đã được thay đổi") 7 | 8 | # Tạo cửa sổ chính 9 | window = tk.Tk() 10 | window.title("Fx Studio") 11 | 12 | # Tạo nhãn 13 | label = tk.Label(window, text="Đây là nhãn ban đầu") 14 | label.pack() 15 | 16 | # Tạo nút và liên kết với hàm change_label_text 17 | button = tk.Button(window, text="Nhấn để thay đổi nhãn", command=change_label_text) 18 | button.pack() 19 | 20 | # Chạy vòng lặp chính của Tkinter 21 | window.mainloop() 22 | -------------------------------------------------------------------------------- /code/191_200/193.py: -------------------------------------------------------------------------------- 1 | # 193 - Viết chương trình để tạo một generator sinh ra các số nguyên tố 2 | 3 | def is_prime(num): 4 | if num < 2: 5 | return False 6 | for i in range(2, int(num**0.5) + 1): 7 | if num % i == 0: 8 | return False 9 | return True 10 | 11 | def prime_numbers(n): 12 | count = 0 13 | num = 2 14 | while count < n: 15 | if is_prime(num): 16 | yield num 17 | count += 1 18 | num += 1 19 | 20 | # Sử dụng generator 21 | n = 10 # Ví dụ với n = 10 22 | for number in prime_numbers(n): 23 | print(number) 24 | -------------------------------------------------------------------------------- /code/221_230/224.py: -------------------------------------------------------------------------------- 1 | # 224 - Viết chương trình để ghi dữ liệu vào tệp Excel 2 | 3 | import openpyxl 4 | 5 | # Dữ liệu cần ghi vào tệp Excel 6 | data = [ 7 | ['Name', 'Age', 'City'], 8 | ['Alice', 30, 'New York'], 9 | ['Bob', 25, 'Los Angeles'], 10 | ['Charlie', 35, 'Chicago'] 11 | ] 12 | 13 | # Tạo workbook mới 14 | workbook = openpyxl.Workbook() 15 | sheet = workbook.active 16 | 17 | # Ghi dữ liệu vào sheet 18 | for row in data: 19 | sheet.append(row) 20 | 21 | # Đường dẫn đến tệp Excel 22 | file_path = 'example.xlsx' 23 | 24 | # Lưu workbook vào tệp Excel 25 | workbook.save(file_path) -------------------------------------------------------------------------------- /code/231_240/236.py: -------------------------------------------------------------------------------- 1 | # 236 - Viết chương trình để phân giải tên miền 2 | 3 | import socket 4 | 5 | def resolve_domain(domain): 6 | try: 7 | # Phân giải tên miền thành địa chỉ IP 8 | ip_address = socket.gethostbyname(domain) 9 | return ip_address 10 | except socket.gaierror as e: 11 | return f"Không thể phân giải tên miền: {e}" 12 | 13 | # Lấy tên miền từ người dùng 14 | domain = input("Nhập tên miền cần phân giải: ") 15 | 16 | # Gọi hàm để phân giải tên miền 17 | ip_address = resolve_domain(domain) 18 | print(f"Địa chỉ IP của tên miền {domain} là: {ip_address}") 19 | -------------------------------------------------------------------------------- /code/001_010/001_2.py: -------------------------------------------------------------------------------- 1 | # 001 - Viết chương trình để kiểm tra số nguyên dương hay âm. 2 | 3 | # Hàm kiểm tra số được nhập 4 | def check_number(n): 5 | if n > 0: 6 | return "Số bạn nhập là số dương." 7 | elif n < 0: 8 | return "Số bạn nhập là số âm." 9 | else: 10 | return "Số bạn nhập là số không (không phải dương cũng không phải âm)." 11 | 12 | # Nhập số nguyên từ người dùng 13 | try: 14 | number = int(input("Nhập một số nguyên: ")) 15 | result = check_number(number) 16 | print(result) 17 | except ValueError: 18 | print("Vui lòng nhập một số nguyên hợp lệ.") 19 | -------------------------------------------------------------------------------- /code/041_050/047.py: -------------------------------------------------------------------------------- 1 | # 047 - Viết chương trình để lấy tất cả các giá trị trong dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Lấy tất cả các giá trị trong dictionary 14 | values = my_dict.values() 15 | 16 | # Chuyển đổi các giá trị thành một array (danh sách trong Python) 17 | values_array = list(values) 18 | 19 | # In ra array các giá trị 20 | print("Array các giá trị trong dictionary:", values_array) 21 | -------------------------------------------------------------------------------- /code/181_190/185.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | # Định nghĩa một danh sách 4 | my_collection = [1, 2, 3, 4, 5] 5 | 6 | # Tạo một iterator từ danh sách 7 | my_iterator = iter(my_collection) 8 | 9 | # Sử dụng vòng lặp while và hàm next() để duyệt qua các phần tử của iterator 10 | while True: 11 | try: 12 | # Lấy phần tử tiếp theo từ iterator 13 | element = next(my_iterator) 14 | print(element) 15 | except StopIteration: 16 | # Nếu không còn phần tử nào trong iterator thì thoát khỏi vòng lặp 17 | break -------------------------------------------------------------------------------- /code/201_210/206.py: -------------------------------------------------------------------------------- 1 | # 206 - Viết chương trình để vẽ đồ thị thanh ngang bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | import numpy as np 5 | 6 | # Khởi tạo dữ liệu ngẫu nhiên 7 | np.random.seed(0) # Đặt seed cho tính ngẫu nhiên 8 | categories = ['A', 'B', 'C', 'D', 'E'] 9 | values = np.random.randint(1, 100, size=len(categories)) 10 | 11 | # Vẽ đồ thị thanh ngang 12 | plt.barh(categories, values, color='skyblue') 13 | 14 | # Thêm tiêu đề và nhãn 15 | plt.title('Đồ thị thanh ngang với dữ liệu ngẫu nhiên') 16 | plt.xlabel('Giá trị') 17 | plt.ylabel('Danh mục') 18 | 19 | # Hiển thị đồ thị 20 | plt.show() -------------------------------------------------------------------------------- /code/201_210/210.py: -------------------------------------------------------------------------------- 1 | # 210 - Viết chương trình để vẽ đồ thị histogram bằng Seaborn 2 | 3 | import seaborn as sns 4 | import matplotlib.pyplot as plt 5 | import numpy as np 6 | 7 | # Khởi tạo dữ liệu ngẫu nhiên 8 | np.random.seed(0) 9 | data = np.random.randn(1000) # 1000 giá trị ngẫu nhiên theo phân phối chuẩn 10 | 11 | # Vẽ đồ thị histogram 12 | plt.figure(figsize=(10, 6)) 13 | sns.histplot(data, bins=30, kde=True, color='blue') 14 | 15 | # Thêm tiêu đề và nhãn 16 | plt.title('Đồ thị Histogram với dữ liệu ngẫu nhiên') 17 | plt.xlabel('Giá trị') 18 | plt.ylabel('Tần suất') 19 | 20 | # Hiển thị đồ thị 21 | plt.show() -------------------------------------------------------------------------------- /code/051_060/054.py: -------------------------------------------------------------------------------- 1 | # 054 - Viết chương trình để kiểm tra một phần tử có tồn tại trong set không 2 | 3 | # Khởi tạo một set ban đầu 4 | my_set = {'apple', 'banana', 'cherry'} 5 | print("Set ban đầu:", my_set) 6 | 7 | # Kiểm tra sự tồn tại của phần tử trong set 8 | element = 'banana' 9 | if element in my_set: 10 | print(f"Phần tử '{element}' tồn tại trong set.") 11 | else: 12 | print(f"Phần tử '{element}' không tồn tại trong set.") 13 | 14 | element = 'orange' 15 | if element in my_set: 16 | print(f"Phần tử '{element}' tồn tại trong set.") 17 | else: 18 | print(f"Phần tử '{element}' không tồn tại trong set.") -------------------------------------------------------------------------------- /code/071_080/072.py: -------------------------------------------------------------------------------- 1 | # 072 - Viết chương trình để ghi nội dung vào một file văn bản 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example_output.txt' 5 | 6 | # Nội dung cần ghi vào file 7 | content_to_write = "Hello, world!\nWelcome to the world of Python programming." 8 | 9 | try: 10 | # Mở file văn bản với chế độ ghi 11 | with open(file_path, 'w') as file: 12 | # Ghi nội dung vào file 13 | file.write(content_to_write) 14 | # In thông báo ghi thành công 15 | print(f"Nội dung đã được ghi vào file: {file_path}") 16 | except Exception as e: 17 | print(f"Đã xảy ra lỗi: {e}") -------------------------------------------------------------------------------- /code/041_050/048.py: -------------------------------------------------------------------------------- 1 | # 048 - Viết chương trình để lấy tất cả các cặp key-value trong dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Lấy tất cả các cặp key-value trong dictionary 14 | items = my_dict.items() 15 | 16 | # Chuyển đổi các cặp key-value thành danh sách (list) 17 | items_list = list(items) 18 | 19 | # In ra danh sách các cặp key-value 20 | print("Danh sách các cặp key-value trong dictionary:", items_list) 21 | -------------------------------------------------------------------------------- /code/201_210/203.py: -------------------------------------------------------------------------------- 1 | # 203 - Viết chương trình để vẽ đồ thị tròn bằng Matplotlib 2 | 3 | import matplotlib.pyplot as plt 4 | 5 | # Khởi tạo dữ liệu 6 | labels = ['A', 'B', 'C', 'D'] 7 | sizes = [15, 30, 45, 10] 8 | colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue'] 9 | explode = (0.1, 0, 0, 0) # Đẩy phần đầu tiên ra 10 | 11 | # Vẽ đồ thị tròn 12 | plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140) 13 | 14 | # Thêm tiêu đề 15 | plt.title('Đồ thị tròn đơn giản') 16 | 17 | # Hiển thị đồ thị 18 | plt.axis('equal') # Đảm bảo đồ thị tròn 19 | plt.show() 20 | -------------------------------------------------------------------------------- /code/281_290/281.py: -------------------------------------------------------------------------------- 1 | # 281 - Viết chương trình để tính trung bình, median và mode của một danh sách số 2 | 3 | import statistics 4 | 5 | def calculate_statistics(numbers): 6 | mean = statistics.mean(numbers) 7 | median = statistics.median(numbers) 8 | try: 9 | mode = statistics.mode(numbers) 10 | except statistics.StatisticsError: 11 | mode = "No unique mode" 12 | 13 | return mean, median, mode 14 | 15 | # Ví dụ sử dụng 16 | numbers = [1, 2, 2, 3, 4] 17 | mean, median, mode = calculate_statistics(numbers) 18 | print("Mean:", mean) 19 | print("Median:", median) 20 | print("Mode:", mode) 21 | -------------------------------------------------------------------------------- /code/051_060/052.py: -------------------------------------------------------------------------------- 1 | # 052 - Viết chương trình để thêm một phần tử vào set 2 | 3 | # Khởi tạo một set ban đầu 4 | my_set = {'apple', 'banana', 'cherry'} 5 | print("Set ban đầu:", my_set) 6 | 7 | # Phương pháp 1: Sử dụng phương thức add() để thêm một phần tử vào set 8 | my_set.add('orange') 9 | print("Set sau khi thêm 'orange' bằng phương thức add():", my_set) 10 | 11 | # Phương pháp 2: Sử dụng phương thức update() để thêm một phần tử vào set 12 | my_set.update(['grape']) # Phương thức update() nhận vào một iterable, vì vậy phần tử cần được đưa vào một iterable 13 | print("Set sau khi thêm 'grape' bằng phương thức update():", my_set) 14 | -------------------------------------------------------------------------------- /291_300/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 30 : Xử lý ảnh 2 | 3 | 291. [Viết chương trình để đọc một ảnh từ file.](./291.md) 4 | 292. [Viết chương trình để hiển thị một ảnh.](./292.md) 5 | 293. [Viết chương trình để lưu một ảnh vào file.](./293.md) 6 | 294. [Viết chương trình để chuyển đổi ảnh màu thành ảnh xám.](./294.md) 7 | 295. [Viết chương trình để làm mờ ảnh.](./295.md) 8 | 296. [Viết chương trình để phát hiện cạnh trong ảnh.](./296.md) 9 | 297. [Viết chương trình để lọc ảnh.](./297.md) 10 | 298. [Viết chương trình để thay đổi kích thước ảnh.](./298.md) 11 | 299. [Viết chương trình để cắt ảnh.](./299.md) 12 | 290. [Viết chương trình để xoay ảnh.](./300.md) -------------------------------------------------------------------------------- /code/071_080/079.py: -------------------------------------------------------------------------------- 1 | # 079 - Viết chương trình để ghi thêm nội dung vào cuối file 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | # Nội dung cần ghi thêm 6 | content_to_add = "\nThis is the new content added to the file." 7 | 8 | try: 9 | # Mở file văn bản với chế độ ghi thêm 10 | with open(file_path, 'a') as file: 11 | # Ghi nội dung mới vào cuối file 12 | file.write(content_to_add) 13 | print(f"Nội dung đã được ghi thêm vào file '{file_path}'.") 14 | except FileNotFoundError: 15 | print(f"Không tìm thấy file: {file_path}") 16 | except Exception as e: 17 | print(f"Đã xảy ra lỗi: {e}") 18 | -------------------------------------------------------------------------------- /code/291_300/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 30 : Xử lý ảnh 2 | 3 | 291. [Viết chương trình để đọc một ảnh từ file.](./291.py) 4 | 292. [Viết chương trình để hiển thị một ảnh.](./292.py) 5 | 293. [Viết chương trình để lưu một ảnh vào file.](./293.py) 6 | 294. [Viết chương trình để chuyển đổi ảnh màu thành ảnh xám.](./294.py) 7 | 295. [Viết chương trình để làm mờ ảnh.](./295.py) 8 | 296. [Viết chương trình để phát hiện cạnh trong ảnh.](./296.py) 9 | 297. [Viết chương trình để lọc ảnh.](./297.py) 10 | 298. [Viết chương trình để thay đổi kích thước ảnh.](./298.py) 11 | 299. [Viết chương trình để cắt ảnh.](./299.py) 12 | 290. [Viết chương trình để xoay ảnh.](./300.py) -------------------------------------------------------------------------------- /code/201_210/209.py: -------------------------------------------------------------------------------- 1 | # 209 - Viết chương trình để vẽ đồ thị heatmap bằng Seaborn 2 | 3 | import seaborn as sns 4 | import matplotlib.pyplot as plt 5 | import numpy as np 6 | 7 | # Khởi tạo dữ liệu ngẫu nhiên 8 | np.random.seed(0) # Đặt seed cho tính ngẫu nhiên. Để mỗi lần chạy chương trình, dữ liệu ngẫu nhiên không thay đổi. 9 | data = np.random.rand(10, 12) 10 | 11 | # Vẽ đồ thị heatmap 12 | plt.figure(figsize=(10, 8)) 13 | sns.heatmap(data, annot=True, cmap='viridis') 14 | 15 | # Thêm tiêu đề và nhãn 16 | plt.title('Đồ thị Heatmap với dữ liệu ngẫu nhiên') 17 | plt.xlabel('Trục X') 18 | plt.ylabel('Trục Y') 19 | 20 | # Hiển thị đồ thị 21 | plt.show() -------------------------------------------------------------------------------- /code/271_280/271.py: -------------------------------------------------------------------------------- 1 | # 271 - Viết chương trình để vẽ hình vuông bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình vuông bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | square_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | square_turtle.speed(1) 14 | 15 | # Vẽ hình vuông 16 | for _ in range(4): 17 | square_turtle.forward(100) # Di chuyển về phía trước 100 đơn vị 18 | square_turtle.right(90) # Quay 90 độ sang phải 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | square_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() 25 | -------------------------------------------------------------------------------- /code/271_280/274.py: -------------------------------------------------------------------------------- 1 | # 274 - Viết chương trình để vẽ hình ngôi sao bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình ngôi sao bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | star_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | star_turtle.speed(2) 14 | 15 | # Vẽ hình ngôi sao 16 | for _ in range(5): 17 | star_turtle.forward(150) # Di chuyển về phía trước 150 đơn vị 18 | star_turtle.right(144) # Quay 144 độ sang phải 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | star_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() 25 | -------------------------------------------------------------------------------- /code/011_020/011_1.py: -------------------------------------------------------------------------------- 1 | # 011 - Chương trình tính giai thừa của một số nguyên sử dụng vòng lặp 2 | 3 | def factorial_iterative(n): 4 | if n < 0: 5 | return "Giai thừa không xác định cho số âm" 6 | result = 1 7 | for i in range(1, n + 1): 8 | result *= i 9 | return result 10 | 11 | # Nhập số nguyên dương từ người dùng 12 | try: 13 | number = int(input("Nhập một số nguyên dương: ")) 14 | if number < 0: 15 | print("Giai thừa không xác định cho số âm") 16 | else: 17 | print(f"Giai thừa của {number} là: {factorial_iterative(number)}") 18 | except ValueError: 19 | print("Vui lòng nhập một số nguyên hợp lệ.") 20 | -------------------------------------------------------------------------------- /code/191_200/199.py: -------------------------------------------------------------------------------- 1 | # 199 - Viết chương trình để tạo một generator sinh ra các số hoàn hảo 2 | 3 | def is_perfect(num): 4 | if num < 2: 5 | return False 6 | divisors_sum = sum(i for i in range(1, num) if num % i == 0) 7 | return divisors_sum == num 8 | 9 | def perfect_numbers(n): 10 | count = 0 11 | num = 2 12 | while count < n: 13 | if is_perfect(num): 14 | yield num 15 | count += 1 16 | num += 1 17 | 18 | # Sử dụng generator 19 | n = 3 # Ví dụ với n = 3 20 | perfect_gen = perfect_numbers(n) 21 | 22 | # Duyệt qua các phần tử bằng next 23 | for _ in range(n): 24 | print(next(perfect_gen)) -------------------------------------------------------------------------------- /code/291_300/291.py: -------------------------------------------------------------------------------- 1 | # 291 - Viết chương trình để đọc một ảnh từ file 2 | 3 | import cv2 # Thư viện OpenCV để xử lý ảnh 4 | 5 | # Đường dẫn tới file ảnh 6 | image_path = 'img2.jpeg' 7 | 8 | # Đọc ảnh từ file 9 | image = cv2.imread(image_path) 10 | 11 | # Kiểm tra xem ảnh đã được đọc thành công chưa 12 | if image is not None: 13 | # Hiển thị ảnh sử dụng OpenCV 14 | cv2.imshow('Displayed Image', image) 15 | 16 | # Đợi một phím bất kỳ để đóng cửa sổ hiển thị 17 | cv2.waitKey(0) 18 | 19 | # Đóng tất cả các cửa sổ hiển thị 20 | cv2.destroyAllWindows() 21 | else: 22 | print("Failed to load image. Check the path and file format.") 23 | 24 | -------------------------------------------------------------------------------- /code/171_180/175.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def modify_return_value_decorator(func): 4 | def wrapper(*args, **kwargs): 5 | # Gọi hàm gốc và lấy giá trị trả về 6 | result = func(*args, **kwargs) 7 | # Sửa đổi giá trị trả về 8 | modified_result = result * 2 # Ví dụ: nhân đôi giá trị trả về 9 | return modified_result 10 | return wrapper 11 | 12 | @modify_return_value_decorator 13 | def get_number(num): 14 | return num 15 | 16 | # Input from user 17 | num = int(input("Enter a number: ")) 18 | 19 | # Calling the decorated function 20 | print(get_number(num)) -------------------------------------------------------------------------------- /code/191_200/198.py: -------------------------------------------------------------------------------- 1 | # 198 - Viết chương trình để tạo một generator sinh ra các số Armstrong 2 | 3 | def is_armstrong(num): 4 | num_str = str(num) 5 | power = len(num_str) 6 | total = sum(int(digit) ** power for digit in num_str) 7 | return total == num 8 | 9 | def armstrong_numbers(n): 10 | count = 0 11 | num = 1 12 | while count < n: 13 | if is_armstrong(num): 14 | yield num 15 | count += 1 16 | num += 1 17 | 18 | # Sử dụng generator 19 | n = 10 # Ví dụ với n = 10 20 | armstrong_gen = armstrong_numbers(n) 21 | 22 | # Duyệt qua các phần tử bằng next 23 | for _ in range(n): 24 | print(next(armstrong_gen)) -------------------------------------------------------------------------------- /code/271_280/275.py: -------------------------------------------------------------------------------- 1 | # 275 - Viết chương trình để vẽ hình lục giác bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình lục giác bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | hexagon_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | hexagon_turtle.speed(2) 14 | 15 | # Vẽ hình lục giác đều 16 | for _ in range(6): 17 | hexagon_turtle.forward(100) # Di chuyển về phía trước 100 đơn vị 18 | hexagon_turtle.left(60) # Quay 60 độ sang trái 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | hexagon_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() 25 | -------------------------------------------------------------------------------- /code/011_020/011_2.py: -------------------------------------------------------------------------------- 1 | # 011 - Chương trình tính giai thừa của một số nguyên sử dụng đệ quy 2 | 3 | def factorial_recursive(n): 4 | if n < 0: 5 | return "Giai thừa không xác định cho số âm" 6 | elif n == 0 or n == 1: 7 | return 1 8 | else: 9 | return n * factorial_recursive(n - 1) 10 | 11 | # Nhập số nguyên dương từ người dùng 12 | try: 13 | number = int(input("Nhập một số nguyên dương: ")) 14 | if number < 0: 15 | print("Giai thừa không xác định cho số âm") 16 | else: 17 | print(f"Giai thừa của {number} là: {factorial_recursive(number)}") 18 | except ValueError: 19 | print("Vui lòng nhập một số nguyên hợp lệ.") 20 | -------------------------------------------------------------------------------- /code/041_050/045.py: -------------------------------------------------------------------------------- 1 | # 045 - Viết chương trình để kiểm tra một key có tồn tại trong dictionary không 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Nhập khóa cần kiểm tra từ người dùng 14 | key_to_check = input("Nhập khóa cần kiểm tra: ") 15 | 16 | # Kiểm tra xem khóa có tồn tại trong dictionary hay không 17 | if key_to_check in my_dict: 18 | print(f"Khóa '{key_to_check}' tồn tại trong dictionary.") 19 | else: 20 | print(f"Khóa '{key_to_check}' không tồn tại trong dictionary.") -------------------------------------------------------------------------------- /code/061_070/070.py: -------------------------------------------------------------------------------- 1 | # 070 - Viết chương trình để nối các từ thành một chuỗi 2 | 3 | # Nhập vào một danh sách các từ 4 | words_list = ["Hello", "world", "welcome", "to", "Python"] 5 | print("Danh sách các từ:", words_list) 6 | 7 | # Nối các từ thành một chuỗi bằng khoảng trắng 8 | joined_str = ' '.join(words_list) 9 | print("Chuỗi sau khi nối:", joined_str) 10 | 11 | 12 | # Nối các từ bằng dấu phẩy 13 | joined_str_comma = ', '.join(words_list) 14 | print("Chuỗi sau khi nối bằng dấu phẩy:", joined_str_comma) 15 | 16 | 17 | # Nối các từ bằng dấu chấm phẩy 18 | joined_str_semicolon = '; '.join(words_list) 19 | print("Chuỗi sau khi nối bằng dấu chấm phẩy:", joined_str_semicolon) 20 | -------------------------------------------------------------------------------- /code/131_140/135.py: -------------------------------------------------------------------------------- 1 | # 135 - chương trình để tìm tất cả các số nguyên tố từ 1 đến 100 2 | 3 | def is_prime(n): 4 | # Kiểm tra nếu n nhỏ hơn 2, thì không phải là số nguyên tố 5 | if n < 2: 6 | return False 7 | # Kiểm tra các ước từ 2 đến căn bậc hai của n 8 | for i in range(2, int(n**0.5) + 1): 9 | if n % i == 0: 10 | return False 11 | return True 12 | 13 | # Danh sách để lưu trữ các số nguyên tố 14 | prime_numbers = [] 15 | 16 | # Kiểm tra các số từ 1 đến 100 17 | for num in range(1, 101): 18 | if is_prime(num): 19 | prime_numbers.append(num) 20 | 21 | # In danh sách các số nguyên tố từ 1 đến 100 22 | print(prime_numbers) -------------------------------------------------------------------------------- /code/271_280/272.py: -------------------------------------------------------------------------------- 1 | # 272 - Viết chương trình để vẽ hình tam giác bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình tam giác bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | triangle_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | triangle_turtle.speed(1) 14 | 15 | # Vẽ hình tam giác đều 16 | for _ in range(3): 17 | triangle_turtle.forward(100) # Di chuyển về phía trước 100 đơn vị 18 | triangle_turtle.left(120) # Quay 120 độ sang trái 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | triangle_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() 25 | -------------------------------------------------------------------------------- /code/271_280/276.py: -------------------------------------------------------------------------------- 1 | # 276 - Viết chương trình để vẽ hình ngũ giác bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình ngũ giác bằng Turtle") 8 | 9 | # Tạo đối tượng Turtle 10 | pentagon_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | pentagon_turtle.speed(2) 14 | 15 | # Vẽ hình ngũ giác đều 16 | for _ in range(5): 17 | pentagon_turtle.forward(100) # Di chuyển về phía trước 100 đơn vị 18 | pentagon_turtle.left(72) # Quay 72 độ sang trái 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | pentagon_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() 25 | -------------------------------------------------------------------------------- /code/001_010/003.py: -------------------------------------------------------------------------------- 1 | # 003 - Viết chương trình để tìm số lớn nhất trong ba số. 2 | 3 | # Hàm kiểm tra 4 | def find_max_of_three(a, b, c): 5 | if a >= b and a >= c: 6 | return a 7 | elif b >= a and b >= c: 8 | return b 9 | else: 10 | return c 11 | 12 | # Nhập ba số nguyên từ người dùng 13 | try: 14 | num1 = int(input("Nhập số nguyên thứ nhất: ")) 15 | num2 = int(input("Nhập số nguyên thứ hai: ")) 16 | num3 = int(input("Nhập số nguyên thứ ba: ")) 17 | 18 | max_number = find_max_of_three(num1, num2, num3) 19 | print(f"Số lớn nhất trong ba số là: {max_number}") 20 | except ValueError: 21 | print("Vui lòng nhập số nguyên hợp lệ.") 22 | -------------------------------------------------------------------------------- /code/131_140/134.py: -------------------------------------------------------------------------------- 1 | # 134 - Viết chương trình để kiểm tra một số có phải là số nguyên tố không 2 | 3 | def is_prime_recursive(n, divisor=None): 4 | """ 5 | Hàm đệ quy để kiểm tra số nguyên tố. 6 | """ 7 | if divisor is None: 8 | divisor = n - 1 9 | 10 | if n < 2: 11 | return False 12 | if divisor == 1: 13 | return True 14 | if n % divisor == 0: 15 | return False 16 | 17 | return is_prime_recursive(n, divisor - 1) 18 | 19 | # Kiểm tra hàm với một số đầu vào 20 | number = 29 21 | 22 | if is_prime_recursive(number): 23 | print(f"{number} là số nguyên tố.") 24 | else: 25 | print(f"{number} không phải là số nguyên tố.") 26 | -------------------------------------------------------------------------------- /161_170/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 17 : Bài tập tổng hợp 2 | 3 | 161. [Viết chương trình để quản lý danh sách học sinh.](./161.md) 4 | 162. [Viết chương trình để quản lý thư viện sách.](./162.md) 5 | 163. [Viết chương trình để quản lý cửa hàng bán lẻ.](./163.md) 6 | 164. [Viết chương trình để quản lý kho hàng.](./164.md) 7 | 165. [Viết chương trình để quản lý nhân viên.](./165.md) 8 | 166. [Viết chương trình để quản lý lịch học.](./166.md) 9 | 167. [Viết chương trình để quản lý điểm thi.](./167.md) 10 | 168. [Viết chương trình để quản lý thông tin cá nhân.](./168.md) 11 | 169. [Viết chương trình để quản lý thu chi cá nhân.](./169.md) 12 | 170. [Viết chương trình để quản lý công việc hàng ngày.](./170.md) 13 | -------------------------------------------------------------------------------- /code/041_050/043.py: -------------------------------------------------------------------------------- 1 | # 043 - Viết chương trình để thêm một cặp key-value vào dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp khóa-giá trị ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary đã tạo 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Nhập khóa cần thêm từ người dùng 14 | new_key = input("Nhập khóa cần thêm: ") 15 | 16 | # Nhập giá trị cần thêm từ người dùng 17 | new_value = input("Nhập giá trị cần thêm: ") 18 | 19 | # Thêm cặp key-value vào dictionary 20 | my_dict[new_key] = new_value 21 | 22 | # In ra dictionary sau khi thêm cặp key-value 23 | print("Dictionary sau khi thêm cặp key-value:", my_dict) -------------------------------------------------------------------------------- /code/291_300/293.py: -------------------------------------------------------------------------------- 1 | # 293 - Viết chương trình để lưu một ảnh vào file 2 | 3 | import cv2 # Thư viện OpenCV để xử lý ảnh 4 | 5 | # Đường dẫn tới file ảnh cần đọc 6 | input_image_path = 'img2.jpeg' 7 | 8 | # Đọc ảnh từ file 9 | image = cv2.imread(input_image_path) 10 | 11 | # Kiểm tra xem ảnh đã được đọc thành công chưa 12 | if image is not None: 13 | # Đường dẫn và tên file để lưu ảnh 14 | output_image_path = 'img_output.jpeg' 15 | 16 | # Lưu ảnh vào file sử dụng OpenCV 17 | cv2.imwrite(output_image_path, image) 18 | 19 | print(f"Image saved successfully at {output_image_path}") 20 | else: 21 | print("Failed to load image. Check the input path and file format.") 22 | -------------------------------------------------------------------------------- /011_020/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 2: Hàm 2 | 3 | 11. [Viết hàm để tính giai thừa của một số.](./011.md) 4 | 12. [Viết hàm để tính tổng các số từ 1 đến n.](./012.md) 5 | 13. [Viết hàm để kiểm tra một số có phải là số nguyên tố không.](./013.md) 6 | 14. [Viết hàm để tìm số lớn nhất trong một danh sách.](./014.md) 7 | 15. [Viết hàm để tính tổng các chữ số của một số.](./015.md) 8 | 16. [Viết hàm để kiểm tra một chuỗi có phải là palindrome không.](./016.md) 9 | 17. [Viết hàm để tính lũy thừa của một số.](./017.md) 10 | 18. [Viết hàm để chuyển đổi độ C sang độ F.](./018.md) 11 | 19. [Viết hàm để tính chu vi và diện tích hình tròn.](./019.md) 12 | 20. [Viết hàm để tính chu vi và diện tích hình chữ nhật.](./020.md) 13 | -------------------------------------------------------------------------------- /code/161_170/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 17 : Bài tập tổng hợp 2 | 3 | 161. [Viết chương trình để quản lý danh sách học sinh.](./161.py) 4 | 162. [Viết chương trình để quản lý thư viện sách.](./162.py) 5 | 163. [Viết chương trình để quản lý cửa hàng bán lẻ.](./163.py) 6 | 164. [Viết chương trình để quản lý kho hàng.](./164.py) 7 | 165. [Viết chương trình để quản lý nhân viên.](./165.py) 8 | 166. [Viết chương trình để quản lý lịch học.](./166.py) 9 | 167. [Viết chương trình để quản lý điểm thi.](./167.py) 10 | 168. [Viết chương trình để quản lý thông tin cá nhân.](./168.py) 11 | 169. [Viết chương trình để quản lý thu chi cá nhân.](./169.py) 12 | 170. [Viết chương trình để quản lý công việc hàng ngày.](./170.py) 13 | -------------------------------------------------------------------------------- /code/241_250/241.py: -------------------------------------------------------------------------------- 1 | # 241 - Viết chương trình để gửi yêu cầu GET đến API và lấy dữ liệu 2 | 3 | import requests 4 | 5 | # Bước 2: Định nghĩa URL của API 6 | api_url = "https://datausa.io/api/data?drilldowns=Nation&measures=Population" 7 | 8 | # Bước 3: Gửi yêu cầu GET đến API 9 | response = requests.get(api_url) 10 | 11 | # Bước 4: Nhận và xử lý dữ liệu trả về từ API 12 | if response.status_code == 200: 13 | data = response.json() 14 | else: 15 | data = None 16 | print(f"Lỗi khi gửi yêu cầu GET: {response.status_code}") 17 | 18 | # Bước 5: Hiển thị dữ liệu 19 | if data: 20 | print("Dữ liệu nhận được từ API:") 21 | print(data) 22 | else: 23 | print("Không nhận được dữ liệu từ API.") 24 | -------------------------------------------------------------------------------- /051_060/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 6 : Set 2 | 3 | 51. [Viết chương trình để tạo một set.](./051.md) 4 | 52. [Viết chương trình để thêm một phần tử vào set.](./052.md) 5 | 53. [Viết chương trình để xóa một phần tử khỏi set.](./053.md) 6 | 54. [Viết chương trình để kiểm tra một phần tử có tồn tại trong set không.](./054.md) 7 | 55. [Viết chương trình để lấy độ dài của set.](./055.md) 8 | 56. [Viết chương trình để tìm hợp của hai set.](./056.md) 9 | 57. [Viết chương trình để tìm giao của hai set.](./057.md) 10 | 58. [Viết chương trình để tìm phần bù của hai set.](./058.md) 11 | 59. [Viết chương trình để xóa tất cả các phần tử trong set.](./059.md) 12 | 60. [Viết chương trình để chuyển đổi một danh sách thành set.](./060.md) 13 | -------------------------------------------------------------------------------- /code/271_280/273_2.py: -------------------------------------------------------------------------------- 1 | # 273 - Viết chương trình để vẽ hình tròn bằng Turtle 2 | 3 | import turtle 4 | 5 | # Thiết lập màn hình 6 | screen = turtle.Screen() 7 | screen.title("Vẽ hình tròn bằng các đoạn thẳng nhỏ") 8 | 9 | # Tạo đối tượng Turtle 10 | small_segment_turtle = turtle.Turtle() 11 | 12 | # Thiết lập tốc độ vẽ 13 | small_segment_turtle.speed(1) 14 | 15 | # Vẽ hình tròn bằng các đoạn thẳng nhỏ 16 | for _ in range(360): 17 | small_segment_turtle.forward(1) # Di chuyển về phía trước 1 đơn vị 18 | small_segment_turtle.left(1) # Quay 1 độ sang trái 19 | 20 | # Ẩn đối tượng Turtle sau khi vẽ xong 21 | small_segment_turtle.hideturtle() 22 | 23 | # Giữ màn hình để xem kết quả 24 | screen.mainloop() -------------------------------------------------------------------------------- /code/051_060/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 6 : Set 2 | 3 | 51. [Viết chương trình để tạo một set.](./051.py) 4 | 52. [Viết chương trình để thêm một phần tử vào set.](./052.py) 5 | 53. [Viết chương trình để xóa một phần tử khỏi set.](./053.py) 6 | 54. [Viết chương trình để kiểm tra một phần tử có tồn tại trong set không.](./054.py) 7 | 55. [Viết chương trình để lấy độ dài của set.](./055.py) 8 | 56. [Viết chương trình để tìm hợp của hai set.](./056.py) 9 | 57. [Viết chương trình để tìm giao của hai set.](./057.py) 10 | 58. [Viết chương trình để tìm phần bù của hai set.](./058.py) 11 | 59. [Viết chương trình để xóa tất cả các phần tử trong set.](./059.py) 12 | 60. [Viết chương trình để chuyển đổi một danh sách thành set.](./060.py) 13 | -------------------------------------------------------------------------------- /code/001_010/004.py: -------------------------------------------------------------------------------- 1 | # 004 - Chương trình tính tiền taxi dựa trên số km đã đi 2 | 3 | # Hàm tính toán 4 | def calculate_taxi_fare(km): 5 | if km <= 1: 6 | fare = 10000 7 | elif km <= 10: 8 | fare = 10000 + (km - 1) * 8500 9 | else: 10 | fare = 10000 + 9 * 8500 + (km - 10) * 7500 11 | return fare 12 | 13 | # Nhập số km từ người dùng 14 | try: 15 | distance = float(input("Nhập số km đã đi: ")) 16 | if distance < 0: 17 | print("Số km không hợp lệ. Vui lòng nhập số dương.") 18 | else: 19 | total_fare = calculate_taxi_fare(distance) 20 | print(f"Tổng tiền taxi là: {total_fare} VNĐ") 21 | except ValueError: 22 | print("Vui lòng nhập một số hợp lệ.") 23 | 24 | -------------------------------------------------------------------------------- /code/011_020/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 2: Hàm 2 | 3 | 11. [Viết hàm để tính giai thừa của một số.](./011_1.py) | [(2)](./011_2.py) 4 | 12. [Viết hàm để tính tổng các số từ 1 đến n.](./012.py) 5 | 13. [Viết hàm để kiểm tra một số có phải là số nguyên tố không.](./013.py) 6 | 14. [Viết hàm để tìm số lớn nhất trong một danh sách.](./014.py) 7 | 15. [Viết hàm để tính tổng các chữ số của một số.](./015.py) 8 | 16. [Viết hàm để kiểm tra một chuỗi có phải là palindrome không.](./016.py) 9 | 17. [Viết hàm để tính lũy thừa của một số.](./017.py) 10 | 18. [Viết hàm để chuyển đổi độ C sang độ F.](./018.py) 11 | 19. [Viết hàm để tính chu vi và diện tích hình tròn.](./019.py) 12 | 20. [Viết hàm để tính chu vi và diện tích hình chữ nhật.](./020.py) 13 | -------------------------------------------------------------------------------- /code/291_300/294.py: -------------------------------------------------------------------------------- 1 | # 294 - Viết chương trình để chuyển đổi ảnh màu thành ảnh xám 2 | 3 | from PIL import Image # Thư viện Pillow để xử lý ảnh 4 | 5 | # Đường dẫn tới file ảnh màu 6 | image_path = 'img2.jpeg' 7 | 8 | try: 9 | # Đọc ảnh màu từ file 10 | image = Image.open(image_path) 11 | 12 | # Chuyển đổi ảnh màu thành ảnh xám 13 | gray_image = image.convert('L') 14 | 15 | # Hiển thị ảnh xám 16 | gray_image.show() 17 | 18 | # Lưu ảnh xám vào file 19 | gray_image_path = 'img_gray.jpeg' 20 | gray_image.save(gray_image_path) 21 | 22 | print(f"Grayscale image saved successfully at {gray_image_path}") 23 | except Exception as e: 24 | print(f"Failed to load or convert image: {e}") 25 | -------------------------------------------------------------------------------- /231_240/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 24 : Thực hành lập trình mạng cơ bản 2 | 3 | 231. [Viết chương trình để tải xuống một tệp từ internet.](./231.md) 4 | 232. [Viết chương trình để kiểm tra kết nối internet.](./232.md) 5 | 233. [Viết chương trình để kiểm tra tốc độ internet.](./233.md) 6 | 234. [Viết chương trình để gửi email.](./234.md) 7 | 235. [Viết chương trình để nhận email.](./235.md) 8 | 236. [Viết chương trình để phân giải tên miền.](./236.md) 9 | 237. [Viết chương trình để tạo một máy chủ TCP đơn giản.](./237.md) 10 | 238. [Viết chương trình để tạo một máy khách TCP đơn giản.](./238.md) 11 | 239. [Viết chương trình để tạo một máy chủ UDP đơn giản.](./239.md) 12 | 240. [Viết chương trình để tạo một máy khách UDP đơn giản.](./240.md) 13 | -------------------------------------------------------------------------------- /code/061_070/062.py: -------------------------------------------------------------------------------- 1 | # 062 - Viết chương trình để nối hai chuỗi 2 | 3 | # Tạo hai chuỗi 4 | str1 = "Hello, " 5 | str2 = "World!" 6 | 7 | # Nối hai chuỗi 8 | str3 = str1 + str2 9 | print(str3) 10 | 11 | # Hoặc sử dụng phương thức join() 12 | # Tạo hai chuỗi 13 | str1 = "Hello, " 14 | str2 = "World!" 15 | 16 | # Nối hai chuỗi 17 | str3 = ''.join([str1, str2]) 18 | print(str3) 19 | 20 | # Hoặc sử dụng f-string 21 | # Tạo hai chuỗi 22 | str1 = "Hello, " 23 | str2 = "World!" 24 | 25 | # Nối hai chuỗi 26 | str3 = f"{str1}{str2}" 27 | print(str3) 28 | 29 | # Hoặc sử dụng phương thức format() 30 | # Tạo hai chuỗi 31 | str1 = "Hello, " 32 | str2 = "World!" 33 | 34 | # Nối hai chuỗi 35 | str3 = "{}{}".format(str1, str2) 36 | print(str3) 37 | -------------------------------------------------------------------------------- /code/141_150/142.py: -------------------------------------------------------------------------------- 1 | # 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) 2 | 3 | import math 4 | 5 | def solve_quadratic(a, b, c): 6 | delta = b**2 - 4*a*c 7 | if delta < 0: 8 | return "Phương trình vô nghiệm" 9 | elif delta == 0: 10 | x = -b / (2*a) 11 | return f"Phương trình có nghiệm kép: x = {x}" 12 | else: 13 | x1 = (-b - math.sqrt(delta)) / (2*a) 14 | x2 = (-b + math.sqrt(delta)) / (2*a) 15 | return f"Phương trình có hai nghiệm phân biệt: x1 = {x1}, x2 = {x2}" 16 | 17 | 18 | # Nhap a, b, c 19 | a = float(input("Nhập a: ")) 20 | b = float(input("Nhập b: ")) 21 | c = float(input("Nhập c: ")) 22 | 23 | print(solve_quadratic(a, b, c)) 24 | -------------------------------------------------------------------------------- /code/231_240/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 24 : Thực hành lập trình mạng cơ bản 2 | 3 | 231. [Viết chương trình để tải xuống một tệp từ internet.](./231.py) 4 | 232. [Viết chương trình để kiểm tra kết nối internet.](./232.py) 5 | 233. [Viết chương trình để kiểm tra tốc độ internet.](./233.py) 6 | 234. [Viết chương trình để gửi email.](./234.py) 7 | 235. [Viết chương trình để nhận email.](./235.py) 8 | 236. [Viết chương trình để phân giải tên miền.](./236.py) 9 | 237. [Viết chương trình để tạo một máy chủ TCP đơn giản.](./237.py) 10 | 238. [Viết chương trình để tạo một máy khách TCP đơn giản.](./238.py) 11 | 239. [Viết chương trình để tạo một máy chủ UDP đơn giản.](./239.py) 12 | 240. [Viết chương trình để tạo một máy khách UDP đơn giản.](./240.py) 13 | -------------------------------------------------------------------------------- /221_230/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 23 : Xử lý dữ liệu cơ bản 2 | 3 | 221. [Viết chương trình để đọc dữ liệu từ tệp CSV.](./221.md) 4 | 222. [Viết chương trình để ghi dữ liệu vào tệp CSV.](./222.md) 5 | 223. [Viết chương trình để đọc dữ liệu từ tệp Excel.](./223.md) 6 | 224. [Viết chương trình để ghi dữ liệu vào tệp Excel.](./224.md) 7 | 225. [Viết chương trình để đọc dữ liệu từ tệp JSON.](./225.md) 8 | 226. [Viết chương trình để ghi dữ liệu vào tệp JSON.](./226.md) 9 | 227. [Viết chương trình để phân tích dữ liệu từ tệp CSV.](./227.md) 10 | 228. [Viết chương trình để phân tích dữ liệu từ tệp Excel.](./228.md) 11 | 229. [Viết chương trình để phân tích dữ liệu từ tệp JSON.](./229.md) 12 | 230. [Viết chương trình để tạo báo cáo dữ liệu đơn giản.](./230.md) -------------------------------------------------------------------------------- /code/081_090/089.py: -------------------------------------------------------------------------------- 1 | # 089 - Viết chương trình để sử dụng trừu tượng trong Python 2 | 3 | from abc import ABC, abstractmethod 4 | 5 | # Lớp cơ sở Animal với phương thức trừu tượng sound 6 | class Animal(ABC): 7 | @abstractmethod 8 | def sound(self): 9 | pass 10 | 11 | # Lớp Dog kế thừa từ lớp Animal, ghi đè phương thức sound 12 | class Dog(Animal): 13 | def sound(self): 14 | return "Woof!" 15 | 16 | # Lớp Cat kế thừa từ lớp Animal, ghi đè phương thức sound 17 | class Cat(Animal): 18 | def sound(self): 19 | return "Meow!" 20 | 21 | # Tạo đối tượng từ lớp Dog và Cat 22 | dog = Dog() 23 | cat = Cat() 24 | 25 | # Gọi phương thức sound của đối tượng Dog và Cat 26 | print(dog.sound()) 27 | print(cat.sound()) -------------------------------------------------------------------------------- /code/141_150/143.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def solve_linear_system(a1, b1, c1, a2, b2, c2): 4 | D = a1*b2 - a2*b1 5 | if D == 0: 6 | return "Hệ phương trình có vô số nghiệm hoặc vô nghiệm" 7 | else: 8 | x = (c1*b2 - c2*b1) / D 9 | y = (a1*c2 - a2*c1) / D 10 | return f"Hệ phương trình có nghiệm duy nhất: (x, y) = ({x}, {y})" 11 | 12 | # Nhap a1, b1, c1, a2, b2, c2 13 | a1 = float(input("Nhập a1: ")) 14 | b1 = float(input("Nhập b1: ")) 15 | c1 = float(input("Nhập c1: ")) 16 | a2 = float(input("Nhập a2: ")) 17 | b2 = float(input("Nhập b2: ")) 18 | c2 = float(input("Nhập c2: ")) 19 | 20 | print(solve_linear_system(a1, b1, c1, a2, b2, c2)) -------------------------------------------------------------------------------- /code/011_020/013.py: -------------------------------------------------------------------------------- 1 | # 013 - Viết hàm để kiểm tra một số có phải là số nguyên tố không. 2 | 3 | def is_prime(n): 4 | if n <= 1: 5 | return False 6 | if n <= 3: 7 | return True 8 | if n % 2 == 0 or n % 3 == 0: 9 | return False 10 | i = 5 11 | while i * i <= n: 12 | if n % i == 0 or n % (i + 2) == 0: 13 | return False 14 | i += 6 15 | return True 16 | 17 | # Nhập số nguyên từ người dùng 18 | try: 19 | number = int(input("Nhập một số nguyên: ")) 20 | if is_prime(number): 21 | print(f"{number} là số nguyên tố.") 22 | else: 23 | print(f"{number} không phải là số nguyên tố.") 24 | except ValueError: 25 | print("Vui lòng nhập một số nguyên hợp lệ.") 26 | -------------------------------------------------------------------------------- /code/071_080/074.py: -------------------------------------------------------------------------------- 1 | # 074 - Viết chương trình để đếm số từ trong một file văn bản 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | 6 | try: 7 | # Mở file văn bản với chế độ đọc 8 | with open(file_path, 'r') as file: 9 | # Khởi tạo biến đếm số từ 10 | word_count = 0 11 | # Đọc từng dòng của file 12 | for line in file: 13 | # Tách dòng thành các từ và đếm số từ 14 | words = line.split() 15 | word_count += len(words) 16 | # In số lượng từ 17 | print(f"Số lượng từ trong file: {word_count}") 18 | except FileNotFoundError: 19 | print(f"Không tìm thấy file: {file_path}") 20 | except Exception as e: 21 | print(f"Đã xảy ra lỗi: {e}") 22 | -------------------------------------------------------------------------------- /code/221_230/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 23 : Xử lý dữ liệu cơ bản 2 | 3 | 221. [Viết chương trình để đọc dữ liệu từ tệp CSV.](./221.py) 4 | 222. [Viết chương trình để ghi dữ liệu vào tệp CSV.](./222.py) 5 | 223. [Viết chương trình để đọc dữ liệu từ tệp Excel.](./223.py) 6 | 224. [Viết chương trình để ghi dữ liệu vào tệp Excel.](./224.py) 7 | 225. [Viết chương trình để đọc dữ liệu từ tệp JSON.](./225.py) 8 | 226. [Viết chương trình để ghi dữ liệu vào tệp JSON.](./226.py) 9 | 227. [Viết chương trình để phân tích dữ liệu từ tệp CSV.](./227.py) 10 | 228. [Viết chương trình để phân tích dữ liệu từ tệp Excel.](./228.py) 11 | 229. [Viết chương trình để phân tích dữ liệu từ tệp JSON.](./229.py) 12 | 230. [Viết chương trình để tạo báo cáo dữ liệu đơn giản.](./230.py) -------------------------------------------------------------------------------- /code/151_160/156.py: -------------------------------------------------------------------------------- 1 | # 165 - Viết chương trình để thêm hộp thoại thông báo vào cửa sổ GUI 2 | 3 | import tkinter as tk 4 | from tkinter import messagebox 5 | 6 | def clear_textbox(): 7 | textbox.delete("1.0", tk.END) 8 | messagebox.showinfo("Thông báo", "Nội dung đã được xóa") 9 | 10 | # Tạo cửa sổ chính 11 | window = tk.Tk() 12 | window.title("Fx Studio") 13 | window.minsize(500, 400) 14 | 15 | # Tạo hộp thoại thông báo (Text widget) 16 | textbox = tk.Text(window, width=50, height=10) 17 | textbox.pack(pady=20) 18 | 19 | # Tạo nút để xóa nội dung của hộp thoại 20 | clear_button = tk.Button(window, text="Xóa nội dung", command=clear_textbox) 21 | clear_button.pack(pady=20) 22 | 23 | # Chạy vòng lặp chính của Tkinter 24 | window.mainloop() 25 | -------------------------------------------------------------------------------- /code/181_190/186.py: -------------------------------------------------------------------------------- 1 | # 186 - Viết chương trình để tạo một iterator tùy chỉnh 2 | 3 | class CustomIterator: 4 | def __init__(self, data): 5 | self.data = data 6 | self.index = 0 7 | 8 | def __iter__(self): 9 | return self 10 | 11 | def __next__(self): 12 | if self.index < len(self.data): 13 | result = self.data[self.index] 14 | self.index += 1 15 | return result 16 | else: 17 | raise StopIteration 18 | 19 | # Sử dụng iterator tùy chỉnh với một danh sách 20 | my_data = [10, 20, 30, 40, 50] 21 | my_iterator = CustomIterator(my_data) 22 | 23 | # Duyệt qua các phần tử của iterator tùy chỉnh bằng vòng lặp for 24 | for element in my_iterator: 25 | print(element) -------------------------------------------------------------------------------- /061_070/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 7 : Chuỗi (String) 2 | 3 | 61. [Viết chương trình để tạo một chuỗi.](./061.md) 4 | 62. [Viết chương trình để nối hai chuỗi.](./062.md) 5 | 63. [Viết chương trình để lấy độ dài của chuỗi.](./063.md) 6 | 64. [Viết chương trình để chuyển đổi chuỗi thành chữ hoa.](./064.md) 7 | 65. [Viết chương trình để chuyển đổi chuỗi thành chữ thường.](./065.md) 8 | 66. [Viết chương trình để đếm số lần xuất hiện của một ký tự trong chuỗi.](./066.md) 9 | 67. [Viết chương trình để kiểm tra một chuỗi có chứa một từ không.](./067.md) 10 | 68. [Viết chương trình để thay thế một từ trong chuỗi bằng từ khác.](./068.md) 11 | 69. [Viết chương trình để tách chuỗi thành danh sách các từ.](./069.md) 12 | 70. [Viết chương trình để nối các từ thành một chuỗi.](./070.md) 13 | -------------------------------------------------------------------------------- /code/041_050/042.py: -------------------------------------------------------------------------------- 1 | # 042 - Viết chương trình để truy cập giá trị của một key trong dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp khóa-giá trị 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary đã tạo 11 | print("Dictionary đã tạo:", my_dict) 12 | 13 | # Nhập khóa cần truy cập từ người dùng 14 | key = input("Nhập khóa cần truy cập: ") 15 | 16 | # Kiểm tra xem khóa có tồn tại trong dictionary hay không 17 | if key in my_dict: 18 | # Truy cập và in giá trị tương ứng với khóa 19 | value = my_dict[key] 20 | print(f"Giá trị của khóa '{key}' là: {value}") 21 | else: 22 | # Thông báo khóa không tồn tại trong dictionary 23 | print(f"Khóa '{key}' không tồn tại trong dictionary.") 24 | -------------------------------------------------------------------------------- /code/061_070/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 7 : Chuỗi (String) 2 | 3 | 61. [Viết chương trình để tạo một chuỗi.](./061.py) 4 | 62. [Viết chương trình để nối hai chuỗi.](./062.py) 5 | 63. [Viết chương trình để lấy độ dài của chuỗi.](./063.py) 6 | 64. [Viết chương trình để chuyển đổi chuỗi thành chữ hoa.](./064.py) 7 | 65. [Viết chương trình để chuyển đổi chuỗi thành chữ thường.](./065.py) 8 | 66. [Viết chương trình để đếm số lần xuất hiện của một ký tự trong chuỗi.](./066.py) 9 | 67. [Viết chương trình để kiểm tra một chuỗi có chứa một từ không.](./067.py) 10 | 68. [Viết chương trình để thay thế một từ trong chuỗi bằng từ khác.](./068.py) 11 | 69. [Viết chương trình để tách chuỗi thành danh sách các từ.](./069.py) 12 | 70. [Viết chương trình để nối các từ thành một chuỗi.](./070.py) 13 | -------------------------------------------------------------------------------- /031_040/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 4: Tuple 2 | 3 | 31. [Viết chương trình để tạo một tuple.](./031.md) 4 | 32. [Viết chương trình để truy cập một phần tử trong tuple.](./032.md) 5 | 33. [Viết chương trình để nối hai tuple.](./033.md) 6 | 34. [Viết chương trình để lấy độ dài của một tuple.](./034.md) 7 | 35. [Viết chương trình để chuyển đổi một tuple thành danh sách.](./035.md) 8 | 36. [Viết chương trình để chuyển đổi một danh sách thành tuple.](./036.md) 9 | 37. [Viết chương trình để kiểm tra một phần tử có tồn tại trong tuple không.](./038.md) 10 | 38. [Viết chương trình để đếm số lần xuất hiện của một phần tử trong tuple.](./038.md) 11 | 39. [Viết chương trình để tìm phần tử lớn nhất trong tuple.](./039.md) 12 | 40. [Viết chương trình để tìm phần tử nhỏ nhất trong tuple.](./040.md) 13 | -------------------------------------------------------------------------------- /151_160/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 16 : Giao diện (GUI) cơ bản 2 | 3 | 151. [Viết chương trình để tạo một cửa sổ GUI đơn giản.](./151.md) 4 | 152. [Viết chương trình để thêm nút vào cửa sổ GUI.](./152.md) 5 | 153. [Viết chương trình để thêm hộp văn bản vào cửa sổ GUI.](./153.md) 6 | 154. [Viết chương trình để thêm nhãn vào cửa sổ GUI.](./154.md) 7 | 155. [Viết chương trình để thêm menu vào cửa sổ GUI.](./155.md) 8 | 156. [Viết chương trình để thêm hộp thoại thông báo vào cửa sổ GUI.](./156.md) 9 | 157. [Viết chương trình để thêm hình ảnh vào cửa sổ GUI.](./157.md) 10 | 158. [Viết chương trình để thêm bảng vào cửa sổ GUI.](./158.md) 11 | 159. [Viết chương trình để thêm đồ thị vào cửa sổ GUI.](./159.md) 12 | 160. [Viết chương trình để tạo ứng dụng máy tính đơn giản với GUI.](./160.md) 13 | -------------------------------------------------------------------------------- /code/011_020/019.py: -------------------------------------------------------------------------------- 1 | # 019 - Viết hàm để tính chu vi và diện tích hình tròn 2 | 3 | import math 4 | 5 | # Hàm tính chu vi hình tròn 6 | def circumference(radius): 7 | return 2 * math.pi * radius 8 | 9 | # Hàm tính diện tích hình tròn 10 | def area(radius): 11 | return math.pi * radius * radius 12 | 13 | # Nhập bán kính từ người dùng 14 | try: 15 | radius = float(input("Nhập bán kính của hình tròn: ")) 16 | if radius < 0: 17 | print("Bán kính phải là một số không âm.") 18 | else: 19 | circ = circumference(radius) 20 | ar = area(radius) 21 | print(f"Chu vi của hình tròn là: {circ}") 22 | print(f"Diện tích của hình tròn là: {ar}") 23 | except ValueError: 24 | print("Vui lòng nhập một giá trị hợp lệ cho bán kính.") 25 | -------------------------------------------------------------------------------- /081_090/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 9 : Lập trình hướng đối tượng (OOP) 2 | 3 | 81. [Viết chương trình để tạo một lớp học sinh.](./081.md) 4 | 82. [Viết chương trình để thêm thuộc tính cho lớp học sinh.](./082.md) 5 | 83. [Viết chương trình để thêm phương thức cho lớp học sinh.](./083.md) 6 | 84. [Viết chương trình để tạo đối tượng từ lớp học sinh.](./084.md) 7 | 85. [Viết chương trình để truy cập thuộc tính của đối tượng.](./085.md) 8 | 86. [Viết chương trình để gọi phương thức của đối tượng.](./086.md) 9 | 87. [Viết chương trình để kế thừa từ một lớp cơ bản.](./087.md) 10 | 88. [Viết chương trình để ghi đè phương thức của lớp cha.](./088.md) 11 | 89. [Viết chương trình để sử dụng trừu tượng trong Python.](./089.md) 12 | 90. [Viết chương trình để sử dụng đa hình trong Python.](./090.md) 13 | -------------------------------------------------------------------------------- /code/031_040/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 4: Tuple 2 | 3 | 31. [Viết chương trình để tạo một tuple.](./031.py) 4 | 32. [Viết chương trình để truy cập một phần tử trong tuple.](./032.py) 5 | 33. [Viết chương trình để nối hai tuple.](./033.py) 6 | 34. [Viết chương trình để lấy độ dài của một tuple.](./034.py) 7 | 35. [Viết chương trình để chuyển đổi một tuple thành danh sách.](./035.py) 8 | 36. [Viết chương trình để chuyển đổi một danh sách thành tuple.](./036.py) 9 | 37. [Viết chương trình để kiểm tra một phần tử có tồn tại trong tuple không.](./038.py) 10 | 38. [Viết chương trình để đếm số lần xuất hiện của một phần tử trong tuple.](./038.py) 11 | 39. [Viết chương trình để tìm phần tử lớn nhất trong tuple.](./039.py) 12 | 40. [Viết chương trình để tìm phần tử nhỏ nhất trong tuple.](./040.py) 13 | -------------------------------------------------------------------------------- /code/101_110/102.py: -------------------------------------------------------------------------------- 1 | # 102 - Viết chương trình để đếm số ký tự trong một chuỗi 2 | 3 | def dem_so_ky_tu_1(chuoi): 4 | """ 5 | Hàm này sử dụng hàm len() để đếm số ký tự trong chuỗi. 6 | """ 7 | return len(chuoi) 8 | 9 | def dem_so_ky_tu_2(chuoi): 10 | """ 11 | Hàm này sử dụng vòng lặp để đếm số ký tự trong chuỗi. 12 | """ 13 | dem = 0 14 | for ky_tu in chuoi: 15 | dem += 1 16 | return dem 17 | 18 | # Nhập chuỗi từ người dùng 19 | chuoi = input("Nhập một chuỗi: ") 20 | 21 | # Gọi hàm và in kết quả 22 | so_ky_tu = dem_so_ky_tu_1(chuoi) 23 | print(f"Số ký tự trong chuỗi (cách 1) là: {so_ky_tu}") 24 | 25 | # Gọi hàm và in kết quả 26 | so_ky_tu = dem_so_ky_tu_2(chuoi) 27 | print(f"Số ký tự trong chuỗi (cách 2) là: {so_ky_tu}") 28 | 29 | 30 | -------------------------------------------------------------------------------- /code/151_160/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 16 : Giao diện (GUI) cơ bản 2 | 3 | 151. [Viết chương trình để tạo một cửa sổ GUI đơn giản.](./151.py) 4 | 152. [Viết chương trình để thêm nút vào cửa sổ GUI.](./152.py) 5 | 153. [Viết chương trình để thêm hộp văn bản vào cửa sổ GUI.](./153.py) 6 | 154. [Viết chương trình để thêm nhãn vào cửa sổ GUI.](./154.py) 7 | 155. [Viết chương trình để thêm menu vào cửa sổ GUI.](./155.py) 8 | 156. [Viết chương trình để thêm hộp thoại thông báo vào cửa sổ GUI.](./156.py) 9 | 157. [Viết chương trình để thêm hình ảnh vào cửa sổ GUI.](./157.py) 10 | 158. [Viết chương trình để thêm bảng vào cửa sổ GUI.](./158.py) 11 | 159. [Viết chương trình để thêm đồ thị vào cửa sổ GUI.](./159.py) 12 | 160. [Viết chương trình để tạo ứng dụng máy tính đơn giản với GUI.](./160.py) 13 | -------------------------------------------------------------------------------- /071_080/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 8 : File I/O 2 | 3 | 71. [Viết chương trình để đọc nội dung của một file văn bản.](./071.md) 4 | 72. [Viết chương trình để ghi nội dung vào một file văn bản.](./072.md) 5 | 73. [Viết chương trình để đếm số dòng trong một file văn bản.](./073.md) 6 | 74. [Viết chương trình để đếm số từ trong một file văn bản.](./074.md) 7 | 75. [Viết chương trình để đếm số ký tự trong một file văn bản.](./075.md) 8 | 76. [Viết chương trình để kiểm tra một file có tồn tại không.](./076.md) 9 | 77. [Viết chương trình để xóa một file văn bản.](./077.md) 10 | 78. [Viết chương trình để đọc file theo từng dòng.](./078.md) 11 | 79. [Viết chương trình để ghi thêm nội dung vào cuối file.](./079.md) 12 | 80. [Viết chương trình để sao chép nội dung của một file sang file khác.](./080.md) 13 | -------------------------------------------------------------------------------- /201_210/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 21 : Vẽ đồ thị 2 | 3 | 201. [Viết chương trình để vẽ đồ thị đường bằng Matplotlib.](./201.md) 4 | 202. [Viết chương trình để vẽ đồ thị cột bằng Matplotlib.](./202.md) 5 | 203. [Viết chương trình để vẽ đồ thị tròn bằng Matplotlib.](203.md) 6 | 204. [Viết chương trình để vẽ đồ thị tán xạ bằng Matplotlib.](204.md) 7 | 205. [Viết chương trình để vẽ đồ thị hộp bằng Matplotlib.](./205.md) 8 | 206. [Viết chương trình để vẽ đồ thị thanh ngang bằng Matplotlib.](./206.md) 9 | 207. [Viết chương trình để vẽ đồ thị đường cong bằng Matplotlib.](./207.md) 10 | 208. [Viết chương trình để vẽ đồ thị 3D bằng Matplotlib.](./208.md) 11 | 209. [Viết chương trình để vẽ đồ thị heatmap bằng Seaborn.](./209.md) 12 | 210. [Viết chương trình để vẽ đồ thị histogram bằng Seaborn.](./210.md) 13 | -------------------------------------------------------------------------------- /code/081_090/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 9 : Lập trình hướng đối tượng (OOP) 2 | 3 | 81. [Viết chương trình để tạo một lớp học sinh.](./081.py) 4 | 82. [Viết chương trình để thêm thuộc tính cho lớp học sinh.](./082.py) 5 | 83. [Viết chương trình để thêm phương thức cho lớp học sinh.](./083.py) 6 | 84. [Viết chương trình để tạo đối tượng từ lớp học sinh.](./084.py) 7 | 85. [Viết chương trình để truy cập thuộc tính của đối tượng.](./085.py) 8 | 86. [Viết chương trình để gọi phương thức của đối tượng.](./086.py) 9 | 87. [Viết chương trình để kế thừa từ một lớp cơ bản.](./087.py) 10 | 88. [Viết chương trình để ghi đè phương thức của lớp cha.](./088.py) 11 | 89. [Viết chương trình để sử dụng trừu tượng trong Python.](./089.py) 12 | 90. [Viết chương trình để sử dụng đa hình trong Python.](./090.py) 13 | -------------------------------------------------------------------------------- /code/071_080/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 8 : File I/O 2 | 3 | 71. [Viết chương trình để đọc nội dung của một file văn bản.](./071.py) 4 | 72. [Viết chương trình để ghi nội dung vào một file văn bản.](./072.py) 5 | 73. [Viết chương trình để đếm số dòng trong một file văn bản.](./073.py) 6 | 74. [Viết chương trình để đếm số từ trong một file văn bản.](./074.py) 7 | 75. [Viết chương trình để đếm số ký tự trong một file văn bản.](./075.py) 8 | 76. [Viết chương trình để kiểm tra một file có tồn tại không.](./076.py) 9 | 77. [Viết chương trình để xóa một file văn bản.](./077.py) 10 | 78. [Viết chương trình để đọc file theo từng dòng.](./078.py) 11 | 79. [Viết chương trình để ghi thêm nội dung vào cuối file.](./079.py) 12 | 80. [Viết chương trình để sao chép nội dung của một file sang file khác.](./080.py) 13 | -------------------------------------------------------------------------------- /code/201_210/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 21 : Vẽ đồ thị 2 | 3 | 201. [Viết chương trình để vẽ đồ thị đường bằng Matplotlib.](./201.py) 4 | 202. [Viết chương trình để vẽ đồ thị cột bằng Matplotlib.](./202.py) 5 | 203. [Viết chương trình để vẽ đồ thị tròn bằng Matplotlib.](203.py) 6 | 204. [Viết chương trình để vẽ đồ thị tán xạ bằng Matplotlib.](204.py) 7 | 205. [Viết chương trình để vẽ đồ thị hộp bằng Matplotlib.](./205.py) 8 | 206. [Viết chương trình để vẽ đồ thị thanh ngang bằng Matplotlib.](./206.py) 9 | 207. [Viết chương trình để vẽ đồ thị đường cong bằng Matplotlib.](./207.py) 10 | 208. [Viết chương trình để vẽ đồ thị 3D bằng Matplotlib.](./208.py) 11 | 209. [Viết chương trình để vẽ đồ thị heatmap bằng Seaborn.](./209.py) 12 | 210. [Viết chương trình để vẽ đồ thị histogram bằng Seaborn.](./210.py) 13 | -------------------------------------------------------------------------------- /code/001_010/008.py: -------------------------------------------------------------------------------- 1 | # 008 - Viết chương trình để đếm số lượng số chẵn và lẻ trong một danh sách 2 | 3 | def count_even_odd(numbers): 4 | count_even = 0 5 | count_odd = 0 6 | for number in numbers: 7 | if number % 2 == 0: 8 | count_even += 1 9 | else: 10 | count_odd += 1 11 | return count_even, count_odd 12 | 13 | # Nhập danh sách các số nguyên từ người dùng 14 | try: 15 | input_list = input("Nhập các số nguyên, cách nhau bằng dấu cách: ") 16 | numbers = [int(num) for num in input_list.split()] 17 | 18 | even_count, odd_count = count_even_odd(numbers) 19 | print(f"Số lượng số chẵn: {even_count}") 20 | print(f"Số lượng số lẻ: {odd_count}") 21 | except ValueError: 22 | print("Vui lòng nhập các số nguyên hợp lệ.") 23 | -------------------------------------------------------------------------------- /code/041_050/050.py: -------------------------------------------------------------------------------- 1 | # 050 - Viết chương trình để nối hai dictionary 2 | 3 | # Khởi tạo hai dictionary với các cặp key-value ban đầu 4 | dict1 = { 5 | 'name': 'Alice', 6 | 'age': 25 7 | } 8 | 9 | dict2 = { 10 | 'city': 'New York', 11 | 'country': 'USA' 12 | } 13 | 14 | # In hai dictionary ban đầu 15 | print("Dictionary 1:", dict1) 16 | print("Dictionary 2:", dict2) 17 | 18 | # Phương pháp 1: Sử dụng phương thức update() để nối hai dictionary 19 | dict3 = dict1.copy() # Tạo một bản sao của dict1 để không thay đổi dict1 gốc 20 | dict3.update(dict2) 21 | print("Kết quả nối dictionary bằng phương thức update():", dict3) 22 | 23 | # Phương pháp 2: Sử dụng toán tử ** để nối hai dictionary 24 | dict4 = {**dict1, **dict2} 25 | print("Kết quả nối dictionary bằng toán tử **:", dict4) 26 | -------------------------------------------------------------------------------- /code/171_180/173.py: -------------------------------------------------------------------------------- 1 | # 173 - Viết chương trình để tạo một decorator với nhiều hàm trả về 2 | 3 | def route(path): 4 | def decorator(func): 5 | def wrapper(*args, **kwargs): 6 | if path == "/home": 7 | return home(*args, **kwargs) 8 | elif path == "/about": 9 | return about(*args, **kwargs) 10 | else: 11 | return func(*args, **kwargs) 12 | return wrapper 13 | return decorator 14 | 15 | def home(name): 16 | return f"Welcome to the home page, {name}!" 17 | 18 | def about(name): 19 | return f"This is the about page. Nice to meet you, {name}!" 20 | 21 | @route("/home") 22 | def greet(name): 23 | return f"Hello, {name}!" 24 | 25 | print(greet("John")) # Output: Welcome to the home page, John! -------------------------------------------------------------------------------- /271_280/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 28 : Bài tập về lập trình đồ họa cơ bản 2 | 3 | 271. [Viết chương trình để vẽ hình vuông bằng Turtle.](./271.md) 4 | 272. [Viết chương trình để vẽ hình tam giác bằng Turtle.](./272.md) 5 | 273. [Viết chương trình để vẽ hình tròn bằng Turtle.](./273.md) 6 | 274. [Viết chương trình để vẽ hình ngôi sao bằng Turtle.](./274.md) 7 | 275. [Viết chương trình để vẽ hình lục giác bằng Turtle.](./275.md) 8 | 276. [Viết chương trình để vẽ hình ngũ giác bằng Turtle.](./276.md) 9 | 277. [Viết chương trình để vẽ đường tròn lồng vào nhau bằng Turtle.](./277.md) 10 | 278. [Viết chương trình để vẽ các đường thẳng song song bằng Turtle.](./278.md) 11 | 279. [Viết chương trình để vẽ các hình chữ nhật lồng vào nhau bằng Turtle.](./279.md) 12 | 280. [Viết chương trình để vẽ hoa bằng Turtle.](./280.md) 13 | -------------------------------------------------------------------------------- /001_010/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 1: Cấu trúc điều khiển 2 | 3 | 1. [Viết chương trình để kiểm tra số nguyên dương hay âm.](./001.md) 4 | 2. [Viết chương trình để kiểm tra số chẵn hay lẻ.](./002.md) 5 | 3. [Viết chương trình để tìm số lớn nhất trong ba số.](./003.md) 6 | 4. [Viết chương trình để tính tiền taxi dựa trên số km đã đi.](./004.md) 7 | 5. [Viết chương trình để tính điểm trung bình và xếp loại học sinh.](./005.md) 8 | 6. [Viết chương trình để in bảng cửu chương.](./006.md) 9 | 7. [Viết chương trình để kiểm tra một năm có phải năm nhuận không.](./007.md) 10 | 8. [Viết chương trình để đếm số lượng số chẵn và lẻ trong một danh sách.](./008.md) 11 | 9. [Viết chương trình để in tất cả các số nguyên tố từ 1 đến 100.](./009.md) 12 | 10. [Viết chương trình để tìm ước số chung lớn nhất (USCLN) của hai số.](./010.md) 13 | -------------------------------------------------------------------------------- /code/241_250/245.py: -------------------------------------------------------------------------------- 1 | # 245 - Viết chương trình để gửi yêu cầu DELETE đến API và xóa dữ liệu 2 | 3 | import requests 4 | 5 | # Bước 2: Định nghĩa URL của API 6 | api_url = "https://api.example.com/data/1" 7 | headers = { 8 | "Accept": "application/json" 9 | } 10 | 11 | # Bước 3: Gửi yêu cầu DELETE đến API 12 | response = requests.delete(api_url, headers=headers) 13 | 14 | # Bước 4: Nhận và xử lý phản hồi từ API 15 | if response.status_code == 200: 16 | print("Xóa dữ liệu thành công.") 17 | print("Phản hồi từ API:") 18 | print(response.json()) 19 | elif response.status_code == 204: 20 | print("Xóa dữ liệu thành công nhưng không có nội dung trả về.") 21 | else: 22 | print(f"Lỗi khi gửi yêu cầu DELETE: {response.status_code}") 23 | print("Phản hồi từ API:") 24 | print(response.text) 25 | -------------------------------------------------------------------------------- /241_250/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 25 : Bài tập với API cơ bản 2 | 3 | 241. [Viết chương trình để gửi yêu cầu GET đến API và lấy dữ liệu.](./241.md) 4 | 242. [Viết chương trình để gửi yêu cầu POST đến API và lấy dữ liệu.](./242.md) 5 | 243. [Viết chương trình để phân tích dữ liệu JSON từ API.](./243.md) 6 | 244. [Viết chương trình để gửi yêu cầu PUT đến API và cập nhật dữ liệu.](./244.md) 7 | 245. [Viết chương trình để gửi yêu cầu DELETE đến API và xóa dữ liệu.](./245.md) 8 | 246. [Viết chương trình để xử lý lỗi khi gọi API.](./246.md) 9 | 247. [Viết chương trình để kiểm tra trạng thái của API.](./247.md) 10 | 248. [Viết chương trình để xác thực người dùng khi gọi API.](./248.md) 11 | 249. [Viết chương trình để lấy dữ liệu thời tiết từ API.](./249.md) 12 | 250. [Viết chương trình để lấy dữ liệu tỷ giá hối đoái từ API.](./250.md) -------------------------------------------------------------------------------- /code/011_020/014.py: -------------------------------------------------------------------------------- 1 | # 014 - Viết hàm để tìm số lớn nhất trong một danh sách 2 | 3 | def find_max(numbers): 4 | if not numbers: 5 | return "Danh sách rỗng, không có số lớn nhất." 6 | max_number = numbers[0] 7 | for num in numbers: 8 | if num > max_number: 9 | max_number = num 10 | return max_number 11 | 12 | # Nhập danh sách các số từ người dùng 13 | try: 14 | input_numbers = input("Nhập các số, cách nhau bởi dấu cách: ") 15 | numbers = [float(num) for num in input_numbers.split()] 16 | 17 | if not numbers: 18 | print("Danh sách rỗng, không có số lớn nhất.") 19 | else: 20 | max_number = find_max(numbers) 21 | print(f"Số lớn nhất trong danh sách là: {max_number}") 22 | except ValueError: 23 | print("Vui lòng nhập các số hợp lệ.") 24 | -------------------------------------------------------------------------------- /code/131_140/139.py: -------------------------------------------------------------------------------- 1 | # 139 - Viết chương trình để in ra n số hoàn hảo đầu tiên 2 | 3 | def is_perfect_number(num): 4 | # Tính tổng các ước số dương của num (không bao gồm chính nó) 5 | sum_of_divisors = sum([i for i in range(1, num) if num % i == 0]) 6 | return sum_of_divisors == num 7 | 8 | def find_perfect_numbers(n): 9 | perfect_numbers = [] 10 | number = 1 11 | while len(perfect_numbers) < n: 12 | if is_perfect_number(number): 13 | perfect_numbers.append(number) 14 | number += 1 15 | return perfect_numbers 16 | 17 | # Nhập giá trị n từ người dùng 18 | n = int(input("Nhập số lượng số hoàn hảo cần tìm: ")) 19 | 20 | # Tìm và in ra n số hoàn hảo đầu tiên 21 | perfect_numbers = find_perfect_numbers(n) 22 | print(f"{n} số hoàn hảo đầu tiên là: {perfect_numbers}") 23 | -------------------------------------------------------------------------------- /code/241_250/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 25 : Bài tập với API cơ bản 2 | 3 | 241. [Viết chương trình để gửi yêu cầu GET đến API và lấy dữ liệu.](./241.py) 4 | 242. [Viết chương trình để gửi yêu cầu POST đến API và lấy dữ liệu.](./242.py) 5 | 243. [Viết chương trình để phân tích dữ liệu JSON từ API.](./243.py) 6 | 244. [Viết chương trình để gửi yêu cầu PUT đến API và cập nhật dữ liệu.](./244.py) 7 | 245. [Viết chương trình để gửi yêu cầu DELETE đến API và xóa dữ liệu.](./245.py) 8 | 246. [Viết chương trình để xử lý lỗi khi gọi API.](./246.py) 9 | 247. [Viết chương trình để kiểm tra trạng thái của API.](./247.py) 10 | 248. [Viết chương trình để xác thực người dùng khi gọi API.](./248.py) 11 | 249. [Viết chương trình để lấy dữ liệu thời tiết từ API.](./249.py) 12 | 250. [Viết chương trình để lấy dữ liệu tỷ giá hối đoái từ API.](./250.py) -------------------------------------------------------------------------------- /code/041_050/049.py: -------------------------------------------------------------------------------- 1 | # 049 - Viết chương trình để đếm số lượng cặp key-value trong dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Phương pháp 1: Sử dụng hàm len() trực tiếp trên dictionary 14 | count1 = len(my_dict) 15 | print("Số lượng cặp key-value (Phương pháp 1):", count1) 16 | 17 | # Phương pháp 2: Sử dụng phương thức items() và hàm len() 18 | count2 = len(my_dict.items()) 19 | print("Số lượng cặp key-value (Phương pháp 2):", count2) 20 | 21 | # Phương pháp 3: Sử dụng vòng lặp for để đếm thủ công 22 | count3 = 0 23 | for _ in my_dict: 24 | count3 += 1 25 | print("Số lượng cặp key-value (Phương pháp 3):", count3) 26 | -------------------------------------------------------------------------------- /code/271_280/280.py: -------------------------------------------------------------------------------- 1 | # 280 - Viết chương trình để vẽ hoa bằng Turtle 2 | import turtle 3 | 4 | def draw_petal(t, radius): 5 | t.circle(radius, 60) # Vẽ cung tròn 60 độ 6 | t.left(120) # Quay trái 120 độ để vẽ cánh đối xứng 7 | t.circle(radius, 60) 8 | t.left(120) # Quay trái 120 độ để trở lại vị trí ban đầu 9 | 10 | def draw_flower(num_petals, radius): 11 | screen = turtle.Screen() 12 | t = turtle.Turtle() 13 | t.speed(10) # Tăng tốc độ vẽ 14 | 15 | for _ in range(num_petals): 16 | draw_petal(t, radius) 17 | t.left(360 / num_petals) # Quay trái để chuẩn bị vẽ cánh hoa tiếp theo 18 | 19 | t.hideturtle() # Ẩn con trỏ sau khi vẽ xong 20 | screen.mainloop() 21 | 22 | # Tham số đầu vào: Số lượng cánh hoa và bán kính của cánh 23 | draw_flower(12, 100) 24 | -------------------------------------------------------------------------------- /041_050/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 5 : Dictionary 2 | 3 | 41. [Viết chương trình để tạo một dictionary.](./041.md) 4 | 42. [Viết chương trình để truy cập giá trị của một key trong dictionary.](./042.md) 5 | 43. [Viết chương trình để thêm một cặp key-value vào dictionary.](./043.md) 6 | 44. [Viết chương trình để xóa một cặp key-value khỏi dictionary.](./044.md) 7 | 45. [Viết chương trình để kiểm tra một key có tồn tại trong dictionary không.](./045.md) 8 | 46. [Viết chương trình để lấy tất cả các key trong dictionary.](./046.md) 9 | 47. [Viết chương trình để lấy tất cả các giá trị trong dictionary.](./047.md) 10 | 48. [Viết chương trình để lấy tất cả các cặp key-value trong dictionary.](./048.md) 11 | 49. [Viết chương trình để đếm số lượng cặp key-value trong dictionary.](./049.md) 12 | 50. [Viết chương trình để nối hai dictionary.](./050.md) 13 | -------------------------------------------------------------------------------- /131_140/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 14 : Bài toán thuật toán 2 | 3 | 131. [Viết chương trình để tính dãy Fibonacci.](./131.md) 4 | 132. [Viết chương trình để in ra 10 số hạnh phúc đầu tiên.](./132.md) 5 | 133. [Viết chương trình để tìm bội số chung nhỏ nhất (BSCNN) của hai số.](./133.md) 6 | 134. [Viết chương trình để kiểm tra một số có phải là số nguyên tố không.](./134.md) 7 | 135. [Viết chương trình để tìm tất cả các số nguyên tố từ 1 đến 100.](./135.md) 8 | 136. [Viết chương trình để tính tổng các số từ 1 đến n.](./136.md) 9 | 137. [Viết chương trình để tính sin(x) & cos(x) bằng các triển khai chuỗi Taylor.](./137.md) 10 | 138. [Viết chương trình để tính Lôgarit tự nhiên ln(x).](./138.md) 11 | 139. [Viết chương trình để in ra n số hoàn hảo đầu tiên.](./139.md) 12 | 140. [Viết chương trình để in ra các số Armstrong từ 1 đến 1000.](./140.md) 13 | -------------------------------------------------------------------------------- /code/111_120/113.py: -------------------------------------------------------------------------------- 1 | # 113 - Viết chương trình để lấy thời gian hiện tại 2 | 3 | from datetime import datetime 4 | 5 | def lay_thoi_gian_hien_tai(): 6 | """ 7 | Hàm để lấy thời gian hiện tại theo định dạng 24 giờ và 12 giờ (AM/PM). 8 | """ 9 | # Lấy thời gian hiện tại 10 | hien_tai = datetime.now() 11 | 12 | # Định dạng thời gian theo kiểu 24 giờ 13 | thoi_gian_24h = hien_tai.strftime("%H:%M:%S") 14 | 15 | # Định dạng thời gian theo kiểu 12 giờ (AM/PM) 16 | thoi_gian_12h = hien_tai.strftime("%I:%M:%S %p") 17 | 18 | return thoi_gian_24h, thoi_gian_12h 19 | 20 | # Gọi hàm và in kết quả 21 | thoi_gian_24h, thoi_gian_12h = lay_thoi_gian_hien_tai() 22 | print("Thời gian hiện tại theo kiểu 24 giờ:", thoi_gian_24h) 23 | print("Thời gian hiện tại theo kiểu 12 giờ (AM/PM):", thoi_gian_12h) 24 | -------------------------------------------------------------------------------- /code/231_240/232.py: -------------------------------------------------------------------------------- 1 | # 232 - Viết chương trình để kiểm tra kết nối internet 2 | 3 | import requests 4 | 5 | def check_internet_connection(): 6 | url = "http://www.google.com" 7 | timeout = 5 8 | try: 9 | # Gửi yêu cầu GET đến URL và thiết lập thời gian chờ 10 | response = requests.get(url, timeout=timeout) 11 | # Kiểm tra mã trạng thái của phản hồi 12 | if response.status_code == 200: 13 | print("Kết nối internet hoạt động bình thường.") 14 | else: 15 | print("Không thể kết nối internet.") 16 | except requests.ConnectionError: 17 | print("Không thể kết nối internet.") 18 | except requests.Timeout: 19 | print("Yêu cầu kết nối internet đã bị quá thời gian chờ.") 20 | 21 | # Gọi hàm kiểm tra kết nối internet 22 | check_internet_connection() 23 | -------------------------------------------------------------------------------- /021_030/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 3: Danh sách (List) 2 | 3 | 21. [Viết chương trình để tạo danh sách các số từ 1 đến 100.](./021.md) 4 | 22. [Viết chương trình để thêm một phần tử vào cuối danh sách.](./022.md) 5 | 23. [Viết chương trình để thêm một phần tử vào đầu danh sách.](./023.md) 6 | 24. [Viết chương trình để xóa một phần tử khỏi danh sách.](./024.md) 7 | 25. [Viết chương trình để sắp xếp danh sách theo thứ tự tăng dần.](./025.md) 8 | 26. [Viết chương trình để sắp xếp danh sách theo thứ tự giảm dần.](./026.md) 9 | 27. [Viết chương trình để tìm phần tử lớn nhất trong danh sách.](./027.md) 10 | 28. [Viết chương trình để tìm phần tử nhỏ nhất trong danh sách.](./028.md) 11 | 29. [Viết chương trình để tính tổng các phần tử trong danh sách.](./029.md) 12 | 30. [Viết chương trình để đếm số lần xuất hiện của một phần tử trong danh sách.](./030.md) 13 | -------------------------------------------------------------------------------- /111_120/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 12 : Xử lý ngày và thời gian 2 | 3 | 111. [Viết chương trình để lấy ngày và giờ hiện tại.](./111.md) 4 | 112. [Viết chương trình để lấy ngày hiện tại.](112.md) 5 | 113. [Viết chương trình để lấy thời gian hiện tại.](./113.md) 6 | 114. [Viết chương trình để chuyển đổi định dạng ngày tháng.](./114.md) 7 | 115. [Viết chương trình để tính thời gian chênh lệch giữa hai ngày.](./115.md) 8 | 116. [Viết chương trình để tính thời gian chênh lệch giữa hai thời gian.](./116.md) 9 | 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.](./117.md) 10 | 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.](./118.md) 11 | 119. [Viết chương trình để in lịch của một tháng nhất định.](./119.md) 12 | 120. [Viết chương trình để in lịch của một năm nhất định.](./120.md) 13 | -------------------------------------------------------------------------------- /code/041_050/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 5 : Dictionary 2 | 3 | 41. [Viết chương trình để tạo một dictionary.](./041.py) 4 | 42. [Viết chương trình để truy cập giá trị của một key trong dictionary.](./042.py) 5 | 43. [Viết chương trình để thêm một cặp key-value vào dictionary.](./043.py) 6 | 44. [Viết chương trình để xóa một cặp key-value khỏi dictionary.](./044.py) 7 | 45. [Viết chương trình để kiểm tra một key có tồn tại trong dictionary không.](./045.py) 8 | 46. [Viết chương trình để lấy tất cả các key trong dictionary.](./046.py) 9 | 47. [Viết chương trình để lấy tất cả các giá trị trong dictionary.](./047.py) 10 | 48. [Viết chương trình để lấy tất cả các cặp key-value trong dictionary.](./048.py) 11 | 49. [Viết chương trình để đếm số lượng cặp key-value trong dictionary.](./049.py) 12 | 50. [Viết chương trình để nối hai dictionary.](./050.py) 13 | -------------------------------------------------------------------------------- /code/131_140/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 14 : Bài toán thuật toán 2 | 3 | 131. [Viết chương trình để tính dãy Fibonacci.](./131.py) 4 | 132. [Viết chương trình để in ra 10 số hạnh phúc đầu tiên.](./132.py) 5 | 133. [Viết chương trình để tìm bội số chung nhỏ nhất (BSCNN) của hai số.](./133.py) 6 | 134. [Viết chương trình để kiểm tra một số có phải là số nguyên tố không.](./134.py) 7 | 135. [Viết chương trình để tìm tất cả các số nguyên tố từ 1 đến 100.](./135.py) 8 | 136. [Viết chương trình để tính tổng các số từ 1 đến n.](./136.py) 9 | 137. [Viết chương trình để tính sin(x) & cos(x) bằng các triển khai chuỗi Taylor.](./137.py) 10 | 138. [Viết chương trình để tính Lôgarit tự nhiên ln(x).](./138.py) 11 | 139. [Viết chương trình để in ra n số hoàn hảo đầu tiên.](./139.py) 12 | 140. [Viết chương trình để in ra các số Armstrong từ 1 đến 1000.](./140.py) 13 | -------------------------------------------------------------------------------- /code/021_030/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 3: Danh sách (List) 2 | 3 | 21. [Viết chương trình để tạo danh sách các số từ 1 đến 100.](./021.py) 4 | 22. [Viết chương trình để thêm một phần tử vào cuối danh sách.](./022.py) 5 | 23. [Viết chương trình để thêm một phần tử vào đầu danh sách.](./023.py) 6 | 24. [Viết chương trình để xóa một phần tử khỏi danh sách.](./024.py) 7 | 25. [Viết chương trình để sắp xếp danh sách theo thứ tự tăng dần.](./025.py) 8 | 26. [Viết chương trình để sắp xếp danh sách theo thứ tự giảm dần.](./026.py) 9 | 27. [Viết chương trình để tìm phần tử lớn nhất trong danh sách.](./027.py) 10 | 28. [Viết chương trình để tìm phần tử nhỏ nhất trong danh sách.](./028.py) 11 | 29. [Viết chương trình để tính tổng các phần tử trong danh sách.](./029.py) 12 | 30. [Viết chương trình để đếm số lần xuất hiện của một phần tử trong danh sách.](./030.py) 13 | -------------------------------------------------------------------------------- /code/111_120/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 12 : Xử lý ngày và thời gian 2 | 3 | 111. [Viết chương trình để lấy ngày và giờ hiện tại.](./111.py) 4 | 112. [Viết chương trình để lấy ngày hiện tại.](112.py) 5 | 113. [Viết chương trình để lấy thời gian hiện tại.](./113.py) 6 | 114. [Viết chương trình để chuyển đổi định dạng ngày tháng.](./114.py) 7 | 115. [Viết chương trình để tính thời gian chênh lệch giữa hai ngày.](./115.py) 8 | 116. [Viết chương trình để tính thời gian chênh lệch giữa hai thời gian.](./116.py) 9 | 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.](./117.py) 10 | 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.](./118.py) 11 | 119. [Viết chương trình để in lịch của một tháng nhất định.](./119.py) 12 | 120. [Viết chương trình để in lịch của một năm nhất định.](./120.py) 13 | -------------------------------------------------------------------------------- /code/071_080/075.py: -------------------------------------------------------------------------------- 1 | # 075 - Viết chương trình để đếm số ký tự trong một file văn bản 2 | 3 | # Đường dẫn đến file văn bản 4 | file_path = 'example.txt' 5 | 6 | try: 7 | # Mở file văn bản với chế độ đọc 8 | with open(file_path, 'r') as file: 9 | # Đọc toàn bộ nội dung của file 10 | content = file.read() 11 | # Lọc bỏ các ký tự khoảng trắng và xuống dòng 12 | filtered_content = ''.join(c for c in content if c not in (' ', '\n', '\t')) 13 | # Đếm số lượng ký tự trong nội dung đã lọc 14 | char_count = len(filtered_content) 15 | # In số lượng ký tự 16 | print(f"Số lượng ký tự trong file (bỏ qua khoảng trắng và xuống dòng): {char_count}") 17 | except FileNotFoundError: 18 | print(f"Không tìm thấy file: {file_path}") 19 | except Exception as e: 20 | print(f"Đã xảy ra lỗi: {e}") 21 | -------------------------------------------------------------------------------- /code/111_120/115.py: -------------------------------------------------------------------------------- 1 | # 115 - Viết chương trình để tính thời gian chênh lệch giữa hai ngày 2 | 3 | from datetime import datetime 4 | 5 | def tinh_thoi_gian_chenh_lech(ngay1, ngay2, dinh_dang): 6 | """ 7 | Hàm để tính thời gian chênh lệch giữa hai ngày. 8 | """ 9 | # Chuyển đổi chuỗi ngày tháng thành đối tượng datetime 10 | ngay1_obj = datetime.strptime(ngay1, dinh_dang) 11 | ngay2_obj = datetime.strptime(ngay2, dinh_dang) 12 | 13 | # Tính toán chênh lệch thời gian 14 | chenh_lech = ngay2_obj - ngay1_obj 15 | 16 | return chenh_lech 17 | 18 | # Ngày tháng đầu vào 19 | ngay1 = "01-01-2023" 20 | ngay2 = "24-05-2024" 21 | dinh_dang = "%d-%m-%Y" 22 | 23 | # Gọi hàm và in kết quả 24 | chenh_lech = tinh_thoi_gian_chenh_lech(ngay1, ngay2, dinh_dang) 25 | print("Chênh lệch thời gian giữa hai ngày là:", chenh_lech) 26 | -------------------------------------------------------------------------------- /101_110/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 11 : Xử lý văn bản 2 | 3 | 101. [Viết chương trình để đếm số từ trong một chuỗi.](./101.md) 4 | 102. [Viết chương trình để đếm số ký tự trong một chuỗi.](./102.md) 5 | 103. [Viết chương trình để đếm số câu trong một đoạn văn.](./103.md) 6 | 104. [Viết chương trình để tìm tất cả các từ dài nhất trong một chuỗi.](./104.md) 7 | 105. [Viết chương trình để tìm từ xuất hiện nhiều nhất trong một chuỗi.](./105.md) 8 | 106. [Viết chương trình để tách các từ từ một chuỗi thành danh sách.](./106.md) 9 | 107. [Viết chương trình để nối các từ trong danh sách thành một chuỗi.](./107.md) 10 | 108. [Viết chương trình để thay thế một từ trong chuỗi bằng từ khác.](./108.md) 11 | 109. [Viết chương trình để loại bỏ các ký tự đặc biệt khỏi chuỗi.](./109.md) 12 | 110. [Viết chương trình để kiểm tra một chuỗi có phải là palindrome không.](./110.md) 13 | -------------------------------------------------------------------------------- /181_190/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 19 : Iterator 2 | 3 | 181. [Viết chương trình để tạo một iterator từ một list.](./181.md) 4 | 182. [Viết chương trình để tạo một iterator từ một tuple.](./182.md) 5 | 183. [Viết chương trình để tạo một iterator từ một chuỗi.](./183.md) 6 | 184. [Viết chương trình để lặp qua một iterator.](./184.md) 7 | 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.](./185.md) 8 | 186. [Viết chương trình để tạo một iterator tùy chỉnh.](./186.md) 9 | 187. [Viết chương trình để sử dụng itertools để tạo ra một permutation.](./187.md) 10 | 188. [Viết chương trình để sử dụng itertools để tạo ra một combination.](./188.md) 11 | 189. [Viết chương trình để sử dụng itertools để tạo ra một product.](./189.md) 12 | 190. [Viết chương trình để sử dụng itertools để tạo ra một combinations_with_replacement.](./190.md) 13 | -------------------------------------------------------------------------------- /code/131_140/140.py: -------------------------------------------------------------------------------- 1 | # 140 - Viết chương trình để in ra các số Armstrong từ 1 đến 1000 2 | 3 | def is_armstrong_number(num): 4 | # Chuyển số thành chuỗi để dễ dàng truy cập từng chữ số 5 | num_str = str(num) 6 | # Tính số lượng chữ số 7 | num_digits = len(num_str) 8 | # Tính tổng các lũy thừa bậc num_digits của các chữ số 9 | sum_of_powers = sum(int(digit)**num_digits for digit in num_str) 10 | # Kiểm tra nếu tổng này bằng chính số đó 11 | return sum_of_powers == num 12 | 13 | # Danh sách để lưu trữ các số Armstrong 14 | armstrong_numbers = [] 15 | 16 | # Kiểm tra các số từ 1 đến 1000 17 | for num in range(1, 1001): 18 | if is_armstrong_number(num): 19 | armstrong_numbers.append(num) 20 | 21 | # In danh sách các số Armstrong từ 1 đến 1000 22 | print(f"Các số Armstrong từ 1 đến 1000 là: {armstrong_numbers}") 23 | -------------------------------------------------------------------------------- /code/001_010/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 1: Cấu trúc điều khiển 2 | 3 | 1. [Viết chương trình để kiểm tra số nguyên dương hay âm.](./001_1.py) | [(2)](./001_2.py) 4 | 2. [Viết chương trình để kiểm tra số chẵn hay lẻ.](./002_1.py) | [(2)](./002_2.py) 5 | 3. [Viết chương trình để tìm số lớn nhất trong ba số.](./003.py) 6 | 4. [Viết chương trình để tính tiền taxi dựa trên số km đã đi.](./004.py) 7 | 5. [Viết chương trình để tính điểm trung bình và xếp loại học sinh.](./005.py) 8 | 6. [Viết chương trình để in bảng cửu chương.](./006.py) 9 | 7. [Viết chương trình để kiểm tra một năm có phải năm nhuận không.](./007.py) 10 | 8. [Viết chương trình để đếm số lượng số chẵn và lẻ trong một danh sách.](./008.py) 11 | 9. [Viết chương trình để in tất cả các số nguyên tố từ 1 đến 100.](./009.py) 12 | 10. [Viết chương trình để tìm ước số chung lớn nhất (USCLN) của hai số.](./010.py) 13 | -------------------------------------------------------------------------------- /code/101_110/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 11 : Xử lý văn bản 2 | 3 | 101. [Viết chương trình để đếm số từ trong một chuỗi.](./101.py) 4 | 102. [Viết chương trình để đếm số ký tự trong một chuỗi.](./102.py) 5 | 103. [Viết chương trình để đếm số câu trong một đoạn văn.](./103.py) 6 | 104. [Viết chương trình để tìm tất cả các từ dài nhất trong một chuỗi.](./104.py) 7 | 105. [Viết chương trình để tìm từ xuất hiện nhiều nhất trong một chuỗi.](./105.py) 8 | 106. [Viết chương trình để tách các từ từ một chuỗi thành danh sách.](./106.py) 9 | 107. [Viết chương trình để nối các từ trong danh sách thành một chuỗi.](./107.py) 10 | 108. [Viết chương trình để thay thế một từ trong chuỗi bằng từ khác.](./108.py) 11 | 109. [Viết chương trình để loại bỏ các ký tự đặc biệt khỏi chuỗi.](./109.py) 12 | 110. [Viết chương trình để kiểm tra một chuỗi có phải là palindrome không.](./110.py) 13 | -------------------------------------------------------------------------------- /code/181_190/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 19 : Iterator 2 | 3 | 181. [Viết chương trình để tạo một iterator từ một list.](./181.py) 4 | 182. [Viết chương trình để tạo một iterator từ một tuple.](./182.py) 5 | 183. [Viết chương trình để tạo một iterator từ một chuỗi.](./183.py) 6 | 184. [Viết chương trình để lặp qua một iterator.](./184.py) 7 | 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.](./185.py) 8 | 186. [Viết chương trình để tạo một iterator tùy chỉnh.](./186.py) 9 | 187. [Viết chương trình để sử dụng itertools để tạo ra một permutation.](./187.py) 10 | 188. [Viết chương trình để sử dụng itertools để tạo ra một combination.](./188.py) 11 | 189. [Viết chương trình để sử dụng itertools để tạo ra một product.](./189.py) 12 | 190. [Viết chương trình để sử dụng itertools để tạo ra một combinations_with_replacement.](./190.py) 13 | -------------------------------------------------------------------------------- /261_270/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 27 : Bài toán ma trận cơ bản 2 | 3 | 261. [Viết chương trình để tính tổng của hai ma trận.](./261.md) 4 | 262. [Viết chương trình để tính hiệu của hai ma trận.](./262.md) 5 | 263. [Viết chương trình để tính tích của hai ma trận.](./263.md) 6 | 264. [Viết chương trình để tính định thức của một ma trận.](./264.md) 7 | 265. [Viết chương trình để tính ma trận nghịch đảo của một ma trận.](./265.md) 8 | 266. [Viết chương trình để tính ma trận chuyển vị của một ma trận.](./266.md) 9 | 267. [Viết chương trình để tính hạng của một ma trận.](./267.md) 10 | 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.](./268.md) 11 | 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.](./269.md) 12 | 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.](./270.md) 13 | -------------------------------------------------------------------------------- /code/231_240/239.py: -------------------------------------------------------------------------------- 1 | # 239 - Viết chương trình để tạo một máy chủ UDP đơn giản 2 | 3 | import socket 4 | 5 | def start_udp_server(host='127.0.0.1', port=65432): 6 | # Tạo một socket UDP 7 | server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 8 | 9 | # Gán socket đến một địa chỉ IP và một cổng 10 | server_socket.bind((host, port)) 11 | print(f"Máy chủ UDP đang lắng nghe tại {host}:{port}...") 12 | 13 | while True: 14 | # Nhận dữ liệu từ máy khách 15 | data, client_address = server_socket.recvfrom(1024) 16 | print(f"Nhận được từ {client_address}: {data.decode()}") 17 | 18 | # Phản hồi lại cho máy khách 19 | response = f"Đã nhận được: {data.decode()}" 20 | server_socket.sendto(response.encode(), client_address) 21 | 22 | # Bắt đầu máy chủ UDP 23 | start_udp_server() 24 | -------------------------------------------------------------------------------- /code/241_250/244.py: -------------------------------------------------------------------------------- 1 | # 244 - Viết chương trình để gửi yêu cầu PUT đến API và cập nhật dữ liệu 2 | 3 | import requests 4 | 5 | # Bước 2: Định nghĩa URL của API và dữ liệu gửi kèm 6 | api_url = "https://api.example.com/data/1" 7 | payload = { 8 | "key1": "new_value1", 9 | "key2": "new_value2" 10 | } 11 | headers = { 12 | "Content-Type": "application/json" 13 | } 14 | 15 | # Bước 3: Gửi yêu cầu PUT đến API 16 | response = requests.put(api_url, json=payload, headers=headers) 17 | 18 | # Bước 4: Nhận và xử lý phản hồi từ API 19 | if response.status_code == 200: 20 | updated_data = response.json() 21 | print("Cập nhật dữ liệu thành công.") 22 | print("Dữ liệu đã cập nhật:") 23 | print(updated_data) 24 | else: 25 | print(f"Lỗi khi gửi yêu cầu PUT: {response.status_code}") 26 | print("Phản hồi từ API:") 27 | print(response.text) 28 | -------------------------------------------------------------------------------- /code/261_270/269.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def is_symmetric_matrix(matrix): 4 | # Kiểm tra ma trận có vuông không 5 | n = len(matrix) 6 | for row in matrix: 7 | if len(row) != n: 8 | return False 9 | 10 | # Kiểm tra tính đối xứng 11 | for i in range(n): 12 | for j in range(n): 13 | if matrix[i][j] != matrix[j][i]: 14 | return False 15 | 16 | return True 17 | 18 | # Ví dụ sử dụng 19 | A = [ 20 | [1, 2, 3], 21 | [2, 4, 5], 22 | [3, 5, 6] 23 | ] 24 | 25 | B = [ 26 | [1, 2, 3], 27 | [2, 4, 5], 28 | [3, 6, 6] 29 | ] 30 | 31 | print("Ma trận A là ma trận đối xứng:", is_symmetric_matrix(A)) # Output: True 32 | print("Ma trận B là ma trận đối xứng:", is_symmetric_matrix(B)) # Output: False 33 | -------------------------------------------------------------------------------- /091_100/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 10 : Ngoại lệ (Exception) 2 | 3 | 91. [Viết chương trình để bắt lỗi chia cho 0.](./091.md) 4 | 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.](./092.md) 5 | 93. [Viết chương trình để bắt lỗi khi truy cập key không tồn tại trong dictionary.](./093.md) 6 | 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ệ.](./094.md) 7 | 95. [Viết chương trình để bắt lỗi khi đọc file không tồn tại.](./095.md) 8 | 96. [Viết chương trình để tự định nghĩa ngoại lệ.](./096.md) 9 | 97. [Viết chương trình để sử dụng khối lệnh try-except-finally.](./097.md) 10 | 98. [Viết chương trình để bắt nhiều lỗi cùng lúc.](./098.md) 11 | 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.](./099.md) 12 | 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.](./100.md) 13 | -------------------------------------------------------------------------------- /code/241_250/242.py: -------------------------------------------------------------------------------- 1 | # 242 - Viết chương trình để gửi yêu cầu POST đến API và lấy dữ liệu 2 | 3 | import requests 4 | 5 | # Bước 2: Định nghĩa URL của API và dữ liệu gửi kèm 6 | api_url = "https://api.example.com/data" 7 | payload = { 8 | "key1": "value1", 9 | "key2": "value2" 10 | } 11 | headers = { 12 | "Content-Type": "application/json" 13 | } 14 | 15 | # Bước 3: Gửi yêu cầu POST đến API 16 | response = requests.post(api_url, json=payload, headers=headers) 17 | 18 | # Bước 4: Nhận và xử lý dữ liệu trả về từ API 19 | if response.status_code == 200: 20 | data = response.json() 21 | else: 22 | data = None 23 | print(f"Lỗi khi gửi yêu cầu POST: {response.status_code}") 24 | 25 | # Bước 5: Hiển thị dữ liệu 26 | if data: 27 | print("Dữ liệu nhận được từ API:") 28 | print(data) 29 | else: 30 | print("Không nhận được dữ liệu từ API.") 31 | -------------------------------------------------------------------------------- /code/261_270/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 27 : Bài toán ma trận cơ bản 2 | 3 | 261. [Viết chương trình để tính tổng của hai ma trận.](./261.py) 4 | 262. [Viết chương trình để tính hiệu của hai ma trận.](./262.py) 5 | 263. [Viết chương trình để tính tích của hai ma trận.](./263.py) 6 | 264. [Viết chương trình để tính định thức của một ma trận.](./264.py) 7 | 265. [Viết chương trình để tính ma trận nghịch đảo của một ma trận.](./265.py) 8 | 266. [Viết chương trình để tính ma trận chuyển vị của một ma trận.](./266.py) 9 | 267. [Viết chương trình để tính hạng của một ma trận.](./267.py) 10 | 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.](./268.py) 11 | 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.](./269.py) 12 | 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.](./270.py) 13 | -------------------------------------------------------------------------------- /code/091_100/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 10 : Ngoại lệ (Exception) 2 | 3 | 91. [Viết chương trình để bắt lỗi chia cho 0.](./091.py) 4 | 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.](./092.py) 5 | 93. [Viết chương trình để bắt lỗi khi truy cập key không tồn tại trong dictionary.](./093.py) 6 | 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ệ.](./094.py) 7 | 95. [Viết chương trình để bắt lỗi khi đọc file không tồn tại.](./095.py) 8 | 96. [Viết chương trình để tự định nghĩa ngoại lệ.](./096.py) 9 | 97. [Viết chương trình để sử dụng khối lệnh try-except-finally.](./097.py) 10 | 98. [Viết chương trình để bắt nhiều lỗi cùng lúc.](./098.py) 11 | 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.](./099.py) 12 | 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.](./100.py) 13 | -------------------------------------------------------------------------------- /code/131_140/132.py: -------------------------------------------------------------------------------- 1 | # 132 - Viết chương trình để in ra 10 số hạnh phúc đầu tiên 2 | 3 | def is_happy_number(n): 4 | """ 5 | Hàm kiểm tra một số có phải là số hạnh phúc hay không. 6 | """ 7 | seen = set() 8 | while n != 1 and n not in seen: 9 | seen.add(n) 10 | n = sum(int(char) ** 2 for char in str(n)) 11 | return n == 1 12 | 13 | def first_n_happy_numbers(n): 14 | """ 15 | Hàm trả về danh sách n số hạnh phúc đầu tiên. 16 | """ 17 | happy_numbers = [] 18 | num = 1 19 | while len(happy_numbers) < n: 20 | if is_happy_number(num): 21 | happy_numbers.append(num) 22 | num += 1 23 | return happy_numbers 24 | 25 | # Số lượng số hạnh phúc cần tìm 26 | n = 10 27 | 28 | # Gọi hàm và in kết quả 29 | happy_numbers = first_n_happy_numbers(n) 30 | print("10 số hạnh phúc đầu tiên:", happy_numbers) 31 | -------------------------------------------------------------------------------- /code/061_070/069.py: -------------------------------------------------------------------------------- 1 | # 069 - Viết chương trình để tách chuỗi thành danh sách các từ 2 | 3 | # Nhập vào một chuỗi 4 | input_str = "Hello world, welcome to the world of Python." 5 | print("Chuỗi ban đầu:", input_str) 6 | 7 | # Tách chuỗi thành danh sách các từ bằng khoảng trắng 8 | words_list = input_str.split() 9 | print("Danh sách các từ (tách bằng khoảng trắng):", words_list) 10 | 11 | # Tách chuỗi bằng dấu phẩy 12 | input_str_comma = "apple,banana,orange,grape" 13 | print("Chuỗi ban đầu:", input_str_comma) 14 | 15 | words_list_comma = input_str_comma.split(',') 16 | print("Danh sách các từ (tách bằng dấu phẩy):", words_list_comma) 17 | 18 | # Tách chuỗi bằng dấu chấm 19 | input_str_dot = "This.is.a.sample.sentence." 20 | print("Chuỗi ban đầu:", input_str_dot) 21 | 22 | words_list_dot = input_str_dot.split('.') 23 | print("Danh sách các từ (tách bằng dấu chấm):", words_list_dot) 24 | -------------------------------------------------------------------------------- /code/261_270/270.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def is_upper_triangular(matrix): 4 | # Kiểm tra ma trận có vuông không 5 | n = len(matrix) 6 | for row in matrix: 7 | if len(row) != n: 8 | return False 9 | 10 | # Kiểm tra các phần tử dưới đường chéo chính 11 | for i in range(n): 12 | for j in range(i): 13 | if matrix[i][j] != 0: 14 | return False 15 | 16 | return True 17 | 18 | # Ví dụ sử dụng 19 | A = [ 20 | [1, 2, 3], 21 | [0, 4, 5], 22 | [0, 0, 6] 23 | ] 24 | 25 | B = [ 26 | [1, 2, 3], 27 | [0, 4, 5], 28 | [7, 0, 6] 29 | ] 30 | 31 | print("Ma trận A là ma trận tam giác trên:", is_upper_triangular(A)) # Output: True 32 | print("Ma trận B là ma trận tam giác trên:", is_upper_triangular(B)) # Output: False 33 | -------------------------------------------------------------------------------- /code/271_280/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 28 : Bài tập về lập trình đồ họa cơ bản 2 | 3 | 271. [Viết chương trình để vẽ hình vuông bằng Turtle.](./271.py) 4 | 272. [Viết chương trình để vẽ hình tam giác bằng Turtle.](./272.py) 5 | 273. [Viết chương trình để vẽ hình tròn bằng Turtle.](./273.py) | [(2)](./273_2.py) 6 | 274. [Viết chương trình để vẽ hình ngôi sao bằng Turtle.](./274.py) | [(2)](./274_2.py) 7 | 275. [Viết chương trình để vẽ hình lục giác bằng Turtle.](./275.py) 8 | 276. [Viết chương trình để vẽ hình ngũ giác bằng Turtle.](./276.py) | [(2)](./276_2.py) 9 | 277. [Viết chương trình để vẽ đường tròn lồng vào nhau bằng Turtle.](./277.py) 10 | 278. [Viết chương trình để vẽ các đường thẳng song song bằng Turtle.](./278.py) | [(2)](./278_2.py) 11 | 279. [Viết chương trình để vẽ các hình chữ nhật lồng vào nhau bằng Turtle.](./279.py) 12 | 280. [Viết chương trình để vẽ hoa bằng Turtle.](./280.py) 13 | -------------------------------------------------------------------------------- /281_290/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 29 : Khoa học dữ liệu cơ bản 2 | 3 | 281. [Viết chương trình để tính trung bình, median và mode của một danh sách số.](./281.md) 4 | 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ố.](./282.md) 5 | 283. [Viết chương trình để vẽ biểu đồ phân phối của một danh sách số.](./283.md) 6 | 284. [Viết chương trình để vẽ biểu đồ boxplot của một danh sách số.](./284.md) 7 | 285. [Viết chương trình để vẽ biểu đồ scatterplot của hai danh sách số.](./285.md) 8 | 286. [Viết chương trình để tính ma trận tương quan của hai danh sách số.](./286.md) 9 | 287. [Viết chương trình để thực hiện phân tích hồi quy đơn giản.](./287.md) 10 | 288. [Viết chương trình để thực hiện phân tích hồi quy đa biến.](./288.md) 11 | 289. [Viết chương trình để phân tích dữ liệu sử dụng Pandas.](./289.md) 12 | 290. [Viết chương trình để phân tích dữ liệu sử dụng Numpy.](./290.md) 13 | -------------------------------------------------------------------------------- /code/091_100/096.py: -------------------------------------------------------------------------------- 1 | ## 096 - Viết chương trình để tự định nghĩa ngoại lệ 2 | 3 | class CustomException(Exception): 4 | """ 5 | Đây là một lớp ngoại lệ tùy chỉnh. 6 | 7 | Lớp này được sử dụng để đại diện cho một ngoại lệ tùy chỉnh trong Python. 8 | Khi một ngoại lệ tùy chỉnh được ném ra, chương trình sẽ dừng lại và xử lý ngoại lệ này theo cách mà người dùng mong muốn. 9 | 10 | Trong trường hợp này, từ khóa 'pass' được sử dụng để không thực hiện bất kỳ hành động nào trong lớp ngoại lệ này. 11 | Nó chỉ đơn giản là để đảm bảo rằng lớp ngoại lệ không có bất kỳ phương thức hoặc thuộc tính nào khác ngoài việc kế thừa từ lớp Exception. 12 | """ 13 | 14 | pass 15 | 16 | def raise_custom_exception(): 17 | try: 18 | raise CustomException("This is a custom exception!") 19 | except CustomException as e: 20 | print(e) 21 | 22 | raise_custom_exception() -------------------------------------------------------------------------------- /code/261_270/262.py: -------------------------------------------------------------------------------- 1 | # 262 - Viết chương trình để tính hiệu của hai ma trận 2 | 3 | def subtract_matrices(A, B): 4 | # Kiểm tra kích thước ma trận 5 | if len(A) != len(B) or len(A[0]) != len(B[0]): 6 | raise ValueError("Hai ma trận phải có cùng kích thước") 7 | 8 | # Khởi tạo ma trận kết quả với cùng kích thước 9 | rows = len(A) 10 | cols = len(A[0]) 11 | C = [[0 for _ in range(cols)] for _ in range(rows)] 12 | 13 | # Tính hiệu của từng phần tử 14 | for i in range(rows): 15 | for j in range(cols): 16 | C[i][j] = A[i][j] - B[i][j] 17 | 18 | return C 19 | 20 | # Ví dụ sử dụng 21 | A = [ 22 | [1, 2, 3], 23 | [4, 5, 6], 24 | [7, 8, 9] 25 | ] 26 | 27 | B = [ 28 | [9, 8, 7], 29 | [6, 5, 4], 30 | [3, 2, 1] 31 | ] 32 | 33 | result = subtract_matrices(A, B) 34 | for row in result: 35 | print(row) 36 | -------------------------------------------------------------------------------- /251_260/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 26 : Bài tập với web scraping cơ bản 2 | 3 | 251. [Viết chương trình để tải xuống trang web.](./251.md) 4 | 252. [Viết chương trình để trích xuất tiêu đề của trang web.](./252.md) 5 | 253. [Viết chương trình để trích xuất tất cả các liên kết từ trang web.](./253.md) 6 | 254. [Viết chương trình để trích xuất tất cả các hình ảnh từ trang web.](./254.md) 7 | 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.](./255.md) 8 | 256. [Viết chương trình để trích xuất tất cả các đoạn văn từ trang web.](./256.md) 9 | 257. [Viết chương trình để trích xuất tất cả các bảng từ trang web.](257.md) 10 | 258. [Viết chương trình để trích xuất tất cả các tiêu đề từ trang web.](./258.md) 11 | 259. [Viết chương trình để trích xuất tất cả các đoạn mã nguồn từ trang web.](./259.md) 12 | 260. [Viết chương trình để trích xuất tất cả các thẻ meta từ trang web.](./260.md) 13 | -------------------------------------------------------------------------------- /code/111_120/117.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | from datetime import datetime 4 | 5 | def tinh_so_ngay_den_ngay_dich(ngay_dich, dinh_dang): 6 | """ 7 | Hàm để tính số ngày từ ngày hiện tại đến một ngày nhất định. 8 | """ 9 | # Lấy ngày hiện tại 10 | ngay_hien_tai = datetime.now() 11 | 12 | # Chuyển đổi chuỗi ngày tháng của ngày đích thành đối tượng datetime 13 | ngay_dich_obj = datetime.strptime(ngay_dich, dinh_dang) 14 | 15 | # Tính toán chênh lệch ngày 16 | chenh_lech = ngay_dich_obj - ngay_hien_tai 17 | 18 | return chenh_lech.days 19 | 20 | # Ngày đích đầu vào 21 | ngay_dich = "31-12-2024" 22 | dinh_dang = "%d-%m-%Y" 23 | 24 | # Gọi hàm và in kết quả 25 | so_ngay = tinh_so_ngay_den_ngay_dich(ngay_dich, dinh_dang) 26 | print("Số ngày từ ngày hiện tại đến ngày đích là:", so_ngay) 27 | -------------------------------------------------------------------------------- /code/281_290/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 29 : Khoa học dữ liệu cơ bản 2 | 3 | 281. [Viết chương trình để tính trung bình, median và mode của một danh sách số.](./281.py) 4 | 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ố.](./282.py) 5 | 283. [Viết chương trình để vẽ biểu đồ phân phối của một danh sách số.](./283.py) 6 | 284. [Viết chương trình để vẽ biểu đồ boxplot của một danh sách số.](./284.py) 7 | 285. [Viết chương trình để vẽ biểu đồ scatterplot của hai danh sách số.](./285.py) 8 | 286. [Viết chương trình để tính ma trận tương quan của hai danh sách số.](./286.py) 9 | 287. [Viết chương trình để thực hiện phân tích hồi quy đơn giản.](./287.py) 10 | 288. [Viết chương trình để thực hiện phân tích hồi quy đa biến.](./288.py) 11 | 289. [Viết chương trình để phân tích dữ liệu sử dụng Pandas.](./289.py) 12 | 290. [Viết chương trình để phân tích dữ liệu sử dụng Numpy.](./290.py) 13 | -------------------------------------------------------------------------------- /code/111_120/112.py: -------------------------------------------------------------------------------- 1 | # 112 - Viết chương trình để lấy ngày hiện tại 2 | 3 | from datetime import datetime 4 | 5 | def lay_ngay_thang_nam_gio_phut_giay_hien_tai(): 6 | """ 7 | 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. 8 | """ 9 | # Lấy thời gian hiện tại 10 | hien_tai = datetime.now() 11 | 12 | # Truy xuất từng thành phần ngày, tháng, năm, giờ, phút, giây 13 | nam = hien_tai.year 14 | thang = hien_tai.month 15 | ngay = hien_tai.day 16 | gio = hien_tai.hour 17 | phut = hien_tai.minute 18 | giay = hien_tai.second 19 | 20 | # In từng thành phần ra từng dòng 21 | print("Năm:", nam) 22 | print("Tháng:", thang) 23 | print("Ngày:", ngay) 24 | print("Giờ:", gio) 25 | print("Phút:", phut) 26 | print("Giây:", giay) 27 | 28 | # Gọi hàm và in kết quả 29 | lay_ngay_thang_nam_gio_phut_giay_hien_tai() 30 | -------------------------------------------------------------------------------- /code/251_260/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 26 : Bài tập với web scraping cơ bản 2 | 3 | 251. [Viết chương trình để tải xuống trang web.](./251.py) 4 | 252. [Viết chương trình để trích xuất tiêu đề của trang web.](./252.py) 5 | 253. [Viết chương trình để trích xuất tất cả các liên kết từ trang web.](./253.py) 6 | 254. [Viết chương trình để trích xuất tất cả các hình ảnh từ trang web.](./254.py) 7 | 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.](./255.py) 8 | 256. [Viết chương trình để trích xuất tất cả các đoạn văn từ trang web.](./256.py) 9 | 257. [Viết chương trình để trích xuất tất cả các bảng từ trang web.](257.py) 10 | 258. [Viết chương trình để trích xuất tất cả các tiêu đề từ trang web.](./258.py) 11 | 259. [Viết chương trình để trích xuất tất cả các đoạn mã nguồn từ trang web.](./259.py) 12 | 260. [Viết chương trình để trích xuất tất cả các thẻ meta từ trang web.](./260.py) 13 | -------------------------------------------------------------------------------- /code/111_120/114.py: -------------------------------------------------------------------------------- 1 | # 114 - Viết chương trình để chuyển đổi định dạng ngày tháng 2 | 3 | from datetime import datetime 4 | 5 | def chuyen_doi_dinh_dang_ngay_thang(ngay_thang, dinh_dang_cu, dinh_dang_moi): 6 | """ 7 | Hàm để chuyển đổi định dạng ngày tháng. 8 | """ 9 | # Chuyển đổi chuỗi ngày tháng thành đối tượng datetime 10 | ngay_thang_obj = datetime.strptime(ngay_thang, dinh_dang_cu) 11 | 12 | # Chuyển đổi đối tượng datetime thành chuỗi theo định dạng mới 13 | ngay_thang_moi = ngay_thang_obj.strftime(dinh_dang_moi) 14 | 15 | return ngay_thang_moi 16 | 17 | # Định dạng cũ và mới 18 | ngay_thang_cu = "24-05-2024" 19 | dinh_dang_cu = "%d-%m-%Y" 20 | dinh_dang_moi = "%Y/%m/%d" 21 | 22 | # Gọi hàm và in kết quả 23 | ngay_thang_moi = chuyen_doi_dinh_dang_ngay_thang(ngay_thang_cu, dinh_dang_cu, dinh_dang_moi) 24 | print("Ngày tháng mới theo định dạng:", ngay_thang_moi) 25 | -------------------------------------------------------------------------------- /code/251_260/252.py: -------------------------------------------------------------------------------- 1 | # 252 - Viết chương trình để trích xuất tiêu đề của trang web 2 | 3 | import requests 4 | from bs4 import BeautifulSoup 5 | 6 | def extract_title(url): 7 | # Gửi yêu cầu HTTP tới URL 8 | response = requests.get(url) 9 | 10 | # Kiểm tra mã trạng thái HTTP 11 | if response.status_code == 200: 12 | # Phân tích nội dung HTML 13 | soup = BeautifulSoup(response.content, 'html.parser') 14 | 15 | # Trích xuất tiêu đề trang web 16 | title = soup.title.string 17 | 18 | # Trả về tiêu đề 19 | return title 20 | else: 21 | return None 22 | 23 | # URL của trang web cần trích xuất tiêu đề 24 | url = "http://example.com" 25 | title = extract_title(url) 26 | if title: 27 | print(f"Tiêu đề của trang web là: {title}") 28 | else: 29 | print("Không thể truy cập trang web hoặc trang web không có tiêu đề.") 30 | -------------------------------------------------------------------------------- /191_200/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 20 : Generator 2 | 3 | 191. [Viết chương trình để tạo một generator sinh ra các số nguyên từ 1 đến n.](./191.md) 4 | 192. [Viết chương trình để tạo một generator sinh ra các số Fibonacci.](./192.md) 5 | 193. [Viết chương trình để tạo một generator sinh ra các số nguyên tố.](./193.md) 6 | 194. [Viết chương trình để tạo một generator sinh ra các số chẵn.](./194.md) 7 | 195. [Viết chương trình để tạo một generator sinh ra các số lẻ.](./195.md) 8 | 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ừ.](./196.md) 9 | 197. [Viết chương trình để tạo một generator sinh ra các chuỗi hoàn hảo.](./197.md) 10 | 198. [Viết chương trình để tạo một generator sinh ra các số Armstrong.](./198.md) 11 | 199. [Viết chương trình để tạo một generator sinh ra các số hoàn hảo.](./199.md) 12 | 200. [Viết chương trình để tạo một generator sinh ra các số chính phương.](./200.md) 13 | -------------------------------------------------------------------------------- /code/041_050/044.py: -------------------------------------------------------------------------------- 1 | # 044 - Viết chương trình để xóa một cặp key-value khỏi dictionary 2 | 3 | # Khởi tạo một dictionary với các cặp key-value ban đầu 4 | my_dict = { 5 | 'name': 'Alice', 6 | 'age': 25, 7 | 'city': 'New York' 8 | } 9 | 10 | # In dictionary ban đầu 11 | print("Dictionary ban đầu:", my_dict) 12 | 13 | # Nhập khóa cần xóa từ người dùng 14 | key_to_delete = input("Nhập khóa cần xóa: ") 15 | 16 | # Kiểm tra xem khóa có tồn tại trong dictionary hay không 17 | if key_to_delete in my_dict: 18 | # Xóa cặp key-value bằng phương thức pop() 19 | my_dict.pop(key_to_delete) 20 | print(f"Đã xóa cặp key-value có khóa '{key_to_delete}'.") 21 | else: 22 | # Thông báo khóa không tồn tại trong dictionary 23 | print(f"Khóa '{key_to_delete}' không tồn tại trong dictionary.") 24 | 25 | # In ra dictionary sau khi xóa cặp key-value 26 | print("Dictionary sau khi xóa cặp key-value:", my_dict) -------------------------------------------------------------------------------- /171_180/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 18 : Decorator 2 | 3 | 171. [Viết chương trình để tạo một decorator đơn giản.](./171.md) 4 | 172. [Viết chương trình để tạo một decorator chấp nhận đối số.](172.md) 5 | 173. [Viết chương trình để tạo một decorator với nhiều hàm trả về.](./173.md) 6 | 174. [Viết chương trình để tạo một decorator gọi một hàm nhiều lần.](./174.md) 7 | 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.](./175.md) 8 | 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.](./176.md) 9 | 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.](./177.md) 10 | 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.](./178.md) 11 | 179. [Viết chương trình để tạo một decorator nhận một đối số từ bên ngoài.](./179.md) 12 | 180. [Viết chương trình để tạo một decorator sử dụng hàm generator.](./180.md) 13 | -------------------------------------------------------------------------------- /211_220/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 22 : Bài tập với SQL 2 | 3 | 211. [Viết chương trình để kết nối với cơ sở dữ liệu SQL.](./211.md) 4 | 212. [Viết chương trình để tạo bảng trong cơ sở dữ liệu SQL.](./212.md) 5 | 213. [Viết chương trình để chèn dữ liệu vào bảng trong cơ sở dữ liệu SQL.](./213.md) 6 | 214. [Viết chương trình để truy vấn dữ liệu từ bảng trong cơ sở dữ liệu SQL.](./214.md) 7 | 215. [Viết chương trình để cập nhật dữ liệu trong bảng trong cơ sở dữ liệu SQL.](./215.md) 8 | 216. [Viết chương trình để xóa dữ liệu trong bảng trong cơ sở dữ liệu SQL.](./216.md) 9 | 217. [Viết chương trình để tạo bảng quan hệ trong cơ sở dữ liệu SQL.](./217.md) 10 | 218. [Viết chương trình để thực hiện join giữa hai bảng trong cơ sở dữ liệu SQL.](./218.md) 11 | 219. [Viết chương trình để thực hiện aggregate functions trong cơ sở dữ liệu SQL.](./219.md) 12 | 220. [Viết chương trình để thực hiện subquery trong cơ sở dữ liệu SQL.](./220.md) 13 | -------------------------------------------------------------------------------- /code/111_120/116.py: -------------------------------------------------------------------------------- 1 | # 116 - Viết chương trình để tính thời gian chênh lệch giữa hai thời gian 2 | 3 | from datetime import datetime 4 | 5 | def tinh_thoi_gian_chenh_lech(thoi_gian1, thoi_gian2, dinh_dang): 6 | """ 7 | Hàm để tính thời gian chênh lệch giữa hai thời gian. 8 | """ 9 | # Chuyển đổi chuỗi thời gian thành đối tượng datetime 10 | thoi_gian1_obj = datetime.strptime(thoi_gian1, dinh_dang) 11 | thoi_gian2_obj = datetime.strptime(thoi_gian2, dinh_dang) 12 | 13 | # Tính toán chênh lệch thời gian 14 | chenh_lech = thoi_gian2_obj - thoi_gian1_obj 15 | 16 | return chenh_lech 17 | 18 | # Thời gian đầu vào 19 | thoi_gian1 = "14:30:00" 20 | thoi_gian2 = "18:45:01" 21 | dinh_dang = "%H:%M:%S" 22 | 23 | # Gọi hàm và in kết quả 24 | chenh_lech = tinh_thoi_gian_chenh_lech(thoi_gian1, thoi_gian2, dinh_dang) 25 | print("Chênh lệch thời gian giữa hai thời gian là:", chenh_lech) 26 | -------------------------------------------------------------------------------- /code/191_200/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 20 : Generator 2 | 3 | 191. [Viết chương trình để tạo một generator sinh ra các số nguyên từ 1 đến n.](./191.py) 4 | 192. [Viết chương trình để tạo một generator sinh ra các số Fibonacci.](./192.py) 5 | 193. [Viết chương trình để tạo một generator sinh ra các số nguyên tố.](./193.py) 6 | 194. [Viết chương trình để tạo một generator sinh ra các số chẵn.](./194.py) 7 | 195. [Viết chương trình để tạo một generator sinh ra các số lẻ.](./195.py) 8 | 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ừ.](./196.py) 9 | 197. [Viết chương trình để tạo một generator sinh ra các chuỗi hoàn hảo.](./197.py) 10 | 198. [Viết chương trình để tạo một generator sinh ra các số Armstrong.](./198.py) 11 | 199. [Viết chương trình để tạo một generator sinh ra các số hoàn hảo.](./199.py) 12 | 200. [Viết chương trình để tạo một generator sinh ra các số chính phương.](./200.py) 13 | -------------------------------------------------------------------------------- /code/071_080/080.py: -------------------------------------------------------------------------------- 1 | # 080 - Viết chương trình để sao chép nội dung của một file sang file khác 2 | 3 | # Đường dẫn đến file nguồn và file đích 4 | source_file_path = 'source.txt' 5 | destination_file_path = 'destination.txt' 6 | 7 | try: 8 | # Mở file nguồn với chế độ đọc 9 | with open(source_file_path, 'r') as source_file: 10 | # Đọc toàn bộ nội dung của file nguồn 11 | content = source_file.read() 12 | 13 | # Mở file đích với chế độ ghi 14 | with open(destination_file_path, 'w') as destination_file: 15 | # Ghi toàn bộ nội dung vào file đích 16 | destination_file.write(content) 17 | 18 | print(f"Nội dung đã được sao chép từ '{source_file_path}' sang '{destination_file_path}'.") 19 | except FileNotFoundError: 20 | print(f"Không tìm thấy file: {source_file_path} hoặc {destination_file_path}") 21 | except Exception as e: 22 | print(f"Đã xảy ra lỗi: {e}") 23 | -------------------------------------------------------------------------------- /code/171_180/176.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | import time 4 | 5 | def timing_decorator(func): 6 | def wrapper(*args, **kwargs): 7 | start_time = time.time() # Lấy thời gian bắt đầu 8 | result = func(*args, **kwargs) # Gọi hàm gốc 9 | end_time = time.time() # Lấy thời gian kết thúc 10 | execution_time = end_time - start_time # Tính toán thời gian thực thi 11 | print(f"Function {func.__name__} took {execution_time:.6f} seconds to execute") 12 | return result 13 | return wrapper 14 | 15 | @timing_decorator 16 | def example_function(): 17 | #time.sleep(2) # Giả lập một công việc tốn thời gian 18 | for _ in range(1000000): # Giả lập một công việc tốn thời gian 19 | pass 20 | return "Function execution complete" 21 | 22 | # Calling the decorated function 23 | print(example_function()) -------------------------------------------------------------------------------- /code/171_180/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 18 : Decorator 2 | 3 | 171. [Viết chương trình để tạo một decorator đơn giản.](./171.py) 4 | 172. [Viết chương trình để tạo một decorator chấp nhận đối số.](172.py) 5 | 173. [Viết chương trình để tạo một decorator với nhiều hàm trả về.](./173.py) 6 | 174. [Viết chương trình để tạo một decorator gọi một hàm nhiều lần.](./174.py) 7 | 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.](./175.py) 8 | 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.](./176.py) 9 | 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.](./177.py) 10 | 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.](./178.py) 11 | 179. [Viết chương trình để tạo một decorator nhận một đối số từ bên ngoài.](./179.py) 12 | 180. [Viết chương trình để tạo một decorator sử dụng hàm generator.](./180.py) 13 | -------------------------------------------------------------------------------- /code/211_220/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 22 : Bài tập với SQL 2 | 3 | 211. [Viết chương trình để kết nối với cơ sở dữ liệu SQL.](./211.py) 4 | 212. [Viết chương trình để tạo bảng trong cơ sở dữ liệu SQL.](./212.py) 5 | 213. [Viết chương trình để chèn dữ liệu vào bảng trong cơ sở dữ liệu SQL.](./213.py) 6 | 214. [Viết chương trình để truy vấn dữ liệu từ bảng trong cơ sở dữ liệu SQL.](./214.py) 7 | 215. [Viết chương trình để cập nhật dữ liệu trong bảng trong cơ sở dữ liệu SQL.](./215.py) 8 | 216. [Viết chương trình để xóa dữ liệu trong bảng trong cơ sở dữ liệu SQL.](./216.py) 9 | 217. [Viết chương trình để tạo bảng quan hệ trong cơ sở dữ liệu SQL.](./217.py) 10 | 218. [Viết chương trình để thực hiện join giữa hai bảng trong cơ sở dữ liệu SQL.](./218.py) 11 | 219. [Viết chương trình để thực hiện aggregate functions trong cơ sở dữ liệu SQL.](./219.py) 12 | 220. [Viết chương trình để thực hiện subquery trong cơ sở dữ liệu SQL.](./220.py) 13 | -------------------------------------------------------------------------------- /code/261_270/261.py: -------------------------------------------------------------------------------- 1 | # 261 - Viết chương trình để tính tổng của hai ma trận 2 | 3 | def add_matrices(matrix1, matrix2): 4 | # Kiểm tra kích thước của hai ma trận 5 | if len(matrix1) != len(matrix2) or len(matrix1[0]) != len(matrix2[0]): 6 | raise ValueError("Hai ma trận phải có cùng kích thước") 7 | 8 | # Tạo ma trận kết quả với kích thước tương tự 9 | result_matrix = [] 10 | for i in range(len(matrix1)): 11 | row = [] 12 | for j in range(len(matrix1[0])): 13 | row.append(matrix1[i][j] + matrix2[i][j]) 14 | result_matrix.append(row) 15 | 16 | return result_matrix 17 | 18 | # Ví dụ về cách sử dụng hàm 19 | matrix1 = [ 20 | [1, 2, 3], 21 | [4, 5, 6], 22 | [7, 8, 9] 23 | ] 24 | 25 | matrix2 = [ 26 | [9, 8, 7], 27 | [6, 5, 4], 28 | [3, 2, 1] 29 | ] 30 | 31 | result = add_matrices(matrix1, matrix2) 32 | for row in result: 33 | print(row) 34 | -------------------------------------------------------------------------------- /code/261_270/263.py: -------------------------------------------------------------------------------- 1 | # 263 - Viết chương trình để tính tích của hai ma trận 2 | 3 | def multiply_matrices(A, B): 4 | # Kiểm tra kích thước ma trận 5 | if len(A[0]) != len(B): 6 | raise ValueError("Số cột của ma trận A phải bằng số hàng của ma trận B") 7 | 8 | # 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) 9 | m = len(A) 10 | n = len(A[0]) 11 | p = len(B[0]) 12 | C = [[0 for _ in range(p)] for _ in range(m)] 13 | 14 | # Tính tích của từng phần tử 15 | for i in range(m): 16 | for j in range(p): 17 | for k in range(n): 18 | C[i][j] += A[i][k] * B[k][j] 19 | 20 | return C 21 | 22 | # Ví dụ sử dụng 23 | A = [ 24 | [1, 2, 3], 25 | [4, 5, 6] 26 | ] 27 | 28 | B = [ 29 | [7, 8], 30 | [9, 10], 31 | [11, 12] 32 | ] 33 | 34 | result = multiply_matrices(A, B) 35 | for row in result: 36 | print(row) 37 | -------------------------------------------------------------------------------- /code/131_140/138.py: -------------------------------------------------------------------------------- 1 | # 138 - Viết chương trình để tính Lôgarit tự nhiên ln(x) 2 | 3 | def taylor_ln(x, terms): 4 | if x <= 0: 5 | raise ValueError("Giá trị của x phải lớn hơn 0") 6 | if x == 1: 7 | return 0 8 | 9 | # Sử dụng ln(x) = 2 * sum((y^n / n) for n in range(1, terms + 1)) 10 | # với y = (x - 1) / (x + 1) 11 | y = (x - 1) / (x + 1) 12 | ln_x = 0 13 | for n in range(1, terms + 1): 14 | ln_x += (y**(2*n - 1)) / (2*n - 1) 15 | return 2 * ln_x 16 | 17 | # Nhập giá trị x từ người dùng 18 | x = float(input("Nhập giá trị của x (x > 0 và x ≠ 1): ")) 19 | 20 | # Nhập số lượng phần tử của chuỗi Taylor 21 | terms = int(input("Nhập số lượng phần tử của chuỗi Taylor: ")) 22 | 23 | # Tính giá trị ln(x) bằng chuỗi Taylor 24 | try: 25 | ln_x = taylor_ln(x, terms) 26 | print(f"Giá trị ln({x}) bằng chuỗi Taylor với {terms} phần tử là: {ln_x}") 27 | except ValueError as e: 28 | print(e) 29 | -------------------------------------------------------------------------------- /code/221_230/229.py: -------------------------------------------------------------------------------- 1 | # 229 - Viết chương trình để phân tích dữ liệu từ tệp JSON 2 | 3 | class Student: 4 | def __init__(self, name, age, city): 5 | self.name = name 6 | self.age = age 7 | self.city = city 8 | 9 | def __repr__(self): 10 | return f"Student(name={self.name}, age={self.age}, city={self.city})" 11 | 12 | import json 13 | 14 | # Đường dẫn đến tệp JSON 15 | file_path = 'students.json' 16 | 17 | # Đọc dữ liệu từ tệp JSON 18 | with open(file_path, 'r', encoding='utf-8') as jsonfile: 19 | data = json.load(jsonfile) 20 | 21 | # Danh sách để lưu trữ các đối tượng Student 22 | students = [] 23 | 24 | # Tạo các đối tượng Student từ dữ liệu đọc được 25 | for item in data: 26 | student = Student(name=item['name'], age=item['age'], city=item['city']) 27 | students.append(student) 28 | 29 | # Hiển thị danh sách các đối tượng Student 30 | for student in students: 31 | print(student) 32 | -------------------------------------------------------------------------------- /code/171_180/172.py: -------------------------------------------------------------------------------- 1 | # 172 - Viết chương trình để tạo một decorator chấp nhận đối số 2 | 3 | # Ví dụ 1 4 | def repeat(n): 5 | def decorator(func): 6 | def wrapper(*args, **kwargs): 7 | for _ in range(n): 8 | func(*args, **kwargs) 9 | return wrapper 10 | return decorator 11 | 12 | @repeat(3) 13 | def say_hello(): 14 | print("Hello!") 15 | 16 | # Calling the decorated function 17 | print("Ví dụ 1") 18 | say_hello() 19 | 20 | # ================================================================================================== # 21 | # Ví dụ 2 22 | def multiply_by(factor): 23 | def multiply_decorator(func): 24 | def wrapper(*args, **kwargs): 25 | return func(*args, **kwargs) * factor 26 | return wrapper 27 | return multiply_decorator 28 | 29 | @multiply_by(2) 30 | def add_numbers(a, b): 31 | return a + b 32 | 33 | print("Ví dụ 2") 34 | print(add_numbers(3, 4)) # Output: 14 -------------------------------------------------------------------------------- /code/231_240/233.py: -------------------------------------------------------------------------------- 1 | # 233 - Viết chương trình để kiểm tra tốc độ internet 2 | 3 | import speedtest 4 | 5 | def check_internet_speed(): 6 | # Khởi tạo đối tượng Speedtest 7 | st = speedtest.Speedtest() 8 | 9 | # Chọn máy chủ tốt nhất dựa trên ping 10 | st.get_best_server() 11 | 12 | # Đo tốc độ tải xuống 13 | download_speed = st.download() 14 | 15 | # Đo tốc độ tải lên 16 | upload_speed = st.upload() 17 | 18 | # Đo độ trễ (ping) 19 | ping = st.results.ping 20 | 21 | # Chuyển đổi tốc độ từ bps sang Mbps 22 | download_speed_mbps = download_speed / 1_000_000 23 | upload_speed_mbps = upload_speed / 1_000_000 24 | 25 | # In kết quả 26 | print(f"Tốc độ tải xuống: {download_speed_mbps:.2f} Mbps") 27 | print(f"Tốc độ tải lên: {upload_speed_mbps:.2f} Mbps") 28 | print(f"Độ trễ (ping): {ping:.2f} ms") 29 | 30 | # Gọi hàm kiểm tra tốc độ internet 31 | check_internet_speed() 32 | -------------------------------------------------------------------------------- /code/271_280/279.py: -------------------------------------------------------------------------------- 1 | # 279 - Viết chương trình để vẽ các hình chữ nhật lồng vào nhau bằng Turtle 2 | 3 | import turtle 4 | 5 | def draw_rectangle(t, width, height): 6 | for _ in range(2): 7 | t.forward(width) 8 | t.right(90) 9 | t.forward(height) 10 | t.right(90) 11 | 12 | def nested_rectangles(initial_width, initial_height, num_rectangles, decrement): 13 | screen = turtle.Screen() 14 | t = turtle.Turtle() 15 | 16 | width = initial_width 17 | height = initial_height 18 | 19 | for _ in range(num_rectangles): 20 | draw_rectangle(t, width, height) 21 | width -= decrement 22 | height -= decrement 23 | t.penup() 24 | t.goto(t.xcor() + decrement / 2, t.ycor() - decrement / 2) 25 | t.pendown() 26 | 27 | screen.mainloop() 28 | 29 | # 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 30 | nested_rectangles(200, 100, 10, 10) 31 | -------------------------------------------------------------------------------- /code/011_020/020.py: -------------------------------------------------------------------------------- 1 | # 020 - Viết hàm để tính chu vi và diện tích hình chữ nhật 2 | 3 | # Hàm tính chu vi hình chữ nhật 4 | def rectangle_perimeter(length, width): 5 | return 2 * (length + width) 6 | 7 | # Hàm tính diện tích hình chữ nhật 8 | def rectangle_area(length, width): 9 | return length * width 10 | 11 | # Nhập chiều dài và chiều rộng từ người dùng 12 | try: 13 | length = float(input("Nhập chiều dài của hình chữ nhật: ")) 14 | width = float(input("Nhập chiều rộng của hình chữ nhật: ")) 15 | 16 | if length < 0 or width < 0: 17 | print("Chiều dài và chiều rộng phải là những số không âm.") 18 | else: 19 | perimeter = rectangle_perimeter(length, width) 20 | area = rectangle_area(length, width) 21 | print(f"Chu vi của hình chữ nhật là: {perimeter}") 22 | print(f"Diện tích của hình chữ nhật là: {area}") 23 | except ValueError: 24 | print("Vui lòng nhập một giá trị hợp lệ cho chiều dài và chiều rộng.") 25 | -------------------------------------------------------------------------------- /code/151_160/155.py: -------------------------------------------------------------------------------- 1 | # 155 - Viết chương trình để thêm menu vào cửa sổ GUI 2 | 3 | import tkinter as tk 4 | from tkinter import Menu 5 | 6 | def show_selected(option): 7 | label.config(text=f"Bạn đã chọn: {option}") 8 | 9 | # Tạo cửa sổ chính 10 | window = tk.Tk() 11 | window.title("Fx Studio") 12 | 13 | # Tạo nhãn 14 | label = tk.Label(window, text="Chọn một mục từ menu") 15 | label.pack() 16 | 17 | # Tạo menu 18 | menu_bar = Menu(window) 19 | window.config(menu=menu_bar) 20 | 21 | # Tạo menu chính 22 | main_menu = Menu(menu_bar, tearoff=0) 23 | menu_bar.add_cascade(label="Menu", menu=main_menu) 24 | 25 | # Thêm các mục vào menu chính 26 | main_menu.add_command(label="Tùy chọn 1", command=lambda: show_selected("Tùy chọn 1")) 27 | main_menu.add_command(label="Tùy chọn 2", command=lambda: show_selected("Tùy chọn 2")) 28 | main_menu.add_command(label="Tùy chọn 3", command=lambda: show_selected("Tùy chọn 3")) 29 | 30 | # Chạy vòng lặp chính của Tkinter 31 | window.mainloop() 32 | -------------------------------------------------------------------------------- /code/021_030/024.py: -------------------------------------------------------------------------------- 1 | # 024 - Viết chương trình để xóa một phần tử khỏi danh sách 2 | 3 | # Khởi tạo danh sách ban đầu 4 | my_list = [1, 2, 3, 4, 5] 5 | 6 | # Nhập phần tử muốn xóa từ người dùng 7 | element_to_remove = input("Nhập phần tử muốn xóa khỏi danh sách: ") 8 | 9 | # Chuyển đổi phần tử nhập vào từ người dùng thành kiểu dữ liệu tương ứng 10 | try: 11 | # Cố gắng chuyển đổi phần tử nhập vào thành số nguyên 12 | element_to_remove = int(element_to_remove) 13 | except ValueError: 14 | try: 15 | # Nếu không phải số nguyên, cố gắng chuyển đổi thành số thực 16 | element_to_remove = float(element_to_remove) 17 | except ValueError: 18 | # Nếu không phải số thực, giữ nguyên dưới dạng chuỗi 19 | pass 20 | 21 | # Xóa phần tử khỏi danh sách nếu tồn tại 22 | if element_to_remove in my_list: 23 | my_list.remove(element_to_remove) 24 | print("Danh sách sau khi xóa phần tử:", my_list) 25 | else: 26 | print("Phần tử không tồn tại trong danh sách.") -------------------------------------------------------------------------------- /code/031_040/037.py: -------------------------------------------------------------------------------- 1 | # 037 - Viết chương trình để kiểm tra một phần tử có tồn tại trong tuple không 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 40, 50) 5 | 6 | # In tuple đã tạo 7 | print("Tuple đã tạo:", my_tuple) 8 | 9 | # Nhập phần tử cần kiểm tra từ người dùng 10 | element = input("Nhập phần tử cần kiểm tra: ") 11 | 12 | # Chuyển đổi phần tử nhập vào từ người dùng thành kiểu dữ liệu tương ứng 13 | try: 14 | # Cố gắng chuyển đổi phần tử nhập vào thành số nguyên 15 | element = int(element) 16 | except ValueError: 17 | try: 18 | # Nếu không phải số nguyên, cố gắng chuyển đổi thành số thực 19 | element = float(element) 20 | except ValueError: 21 | # Nếu không phải số thực, giữ nguyên dưới dạng chuỗi 22 | pass 23 | 24 | # Kiểm tra xem phần tử có tồn tại trong tuple không 25 | if element in my_tuple: 26 | print(f"Phần tử {element} tồn tại trong tuple.") 27 | else: 28 | print(f"Phần tử {element} không tồn tại trong tuple.") 29 | -------------------------------------------------------------------------------- /code/261_270/268.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | def is_identity_matrix(matrix): 4 | # Kiểm tra ma trận có vuông không 5 | n = len(matrix) 6 | for row in matrix: 7 | if len(row) != n: 8 | return False 9 | 10 | # Kiểm tra các phần tử của ma trận 11 | for i in range(n): 12 | for j in range(n): 13 | if i == j: 14 | if matrix[i][j] != 1: 15 | return False 16 | else: 17 | if matrix[i][j] != 0: 18 | return False 19 | 20 | return True 21 | 22 | # Ví dụ sử dụng 23 | A = [ 24 | [1, 0, 0], 25 | [0, 1, 0], 26 | [0, 0, 1] 27 | ] 28 | 29 | B = [ 30 | [1, 0, 0], 31 | [0, 0, 0], 32 | [0, 0, 1] 33 | ] 34 | 35 | print("Ma trận A là ma trận đơn vị:", is_identity_matrix(A)) # Output: True 36 | print("Ma trận B là ma trận đơn vị:", is_identity_matrix(B)) # Output: False 37 | -------------------------------------------------------------------------------- /code/221_230/228.py: -------------------------------------------------------------------------------- 1 | # 228 - Viết chương trình để phân tích dữ liệu từ tệp Excel 2 | 3 | class Student: 4 | def __init__(self, name, age, city): 5 | self.name = name 6 | self.age = age 7 | self.city = city 8 | 9 | def __repr__(self): 10 | return f"Student(name={self.name}, age={self.age}, city={self.city})" 11 | 12 | import openpyxl 13 | 14 | # Đường dẫn đến tệp Excel 15 | file_path = 'example.xlsx' 16 | 17 | # Danh sách để lưu trữ các đối tượng Student 18 | students = [] 19 | 20 | # Mở tệp Excel và đọc nội dung 21 | workbook = openpyxl.load_workbook(file_path) 22 | sheet = workbook.active 23 | 24 | # Đọc dữ liệu từ sheet và tạo các đối tượng Student 25 | for row in sheet.iter_rows(min_row=2, values_only=True): # Bỏ qua dòng tiêu đề 26 | name, age, city = row 27 | student = Student(name=name, age=age, city=city) 28 | students.append(student) 29 | 30 | # Hiển thị danh sách các đối tượng Student 31 | for student in students: 32 | print(student) 33 | -------------------------------------------------------------------------------- /code/031_040/038.py: -------------------------------------------------------------------------------- 1 | # 038 - Viết chương trình để đếm số lần xuất hiện của một phần tử trong tuple 2 | 3 | # Khởi tạo một tuple 4 | my_tuple = (10, 20, 30, 20, 40, 50, 20, 60) 5 | 6 | # In tuple đã tạo 7 | print("Tuple đã tạo:", my_tuple) 8 | 9 | # Nhập phần tử cần đếm số lần xuất hiện từ người dùng 10 | element = input("Nhập phần tử cần đếm số lần xuất hiện: ") 11 | 12 | # Chuyển đổi phần tử nhập vào từ người dùng thành kiểu dữ liệu tương ứng 13 | try: 14 | # Cố gắng chuyển đổi phần tử nhập vào thành số nguyên 15 | element = int(element) 16 | except ValueError: 17 | try: 18 | # Nếu không phải số nguyên, cố gắng chuyển đổi thành số thực 19 | element = float(element) 20 | except ValueError: 21 | # Nếu không phải số thực, giữ nguyên dưới dạng chuỗi 22 | pass 23 | 24 | # Đếm số lần xuất hiện của phần tử trong tuple 25 | count = my_tuple.count(element) 26 | 27 | # In ra số lần xuất hiện của phần tử 28 | print(f"Phần tử {element} xuất hiện {count} lần trong tuple.") 29 | -------------------------------------------------------------------------------- /code/281_290/290.py: -------------------------------------------------------------------------------- 1 | # 290 - Viết chương trình để phân tích dữ liệu sử dụng Numpy 2 | 3 | import numpy as np 4 | 5 | def analyze_data(data): 6 | # Chuyển đổi dữ liệu đầu vào thành mảng numpy 7 | data = np.array(data) 8 | 9 | # Tính toán các giá trị thống kê cơ bản 10 | mean = np.mean(data) 11 | variance = np.var(data) 12 | std_deviation = np.std(data) 13 | median = np.median(data) 14 | min_value = np.min(data) 15 | max_value = np.max(data) 16 | sum_value = np.sum(data) 17 | 18 | return { 19 | "mean": mean, 20 | "variance": variance, 21 | "std_deviation": std_deviation, 22 | "median": median, 23 | "min_value": min_value, 24 | "max_value": max_value, 25 | "sum_value": sum_value 26 | } 27 | 28 | # Ví dụ sử dụng 29 | data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 30 | statistics = analyze_data(data) 31 | 32 | print("Data Analysis Results:") 33 | for key, value in statistics.items(): 34 | print(f"{key}: {value}") 35 | -------------------------------------------------------------------------------- /code/111_120/118.py: -------------------------------------------------------------------------------- 1 | # 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 2 | 3 | from datetime import datetime 4 | 5 | def tinh_so_giay_den_thoi_gian_dich(thoi_gian_dich, dinh_dang): 6 | """ 7 | Hàm để tính số giây từ thời gian hiện tại đến một thời gian nhất định. 8 | """ 9 | # Lấy thời gian hiện tại 10 | thoi_gian_hien_tai = datetime.now() 11 | 12 | # Chuyển đổi chuỗi thời gian của thời gian đích thành đối tượng datetime 13 | thoi_gian_dich_obj = datetime.strptime(thoi_gian_dich, dinh_dang) 14 | 15 | # Tính toán chênh lệch thời gian 16 | chenh_lech = thoi_gian_dich_obj - thoi_gian_hien_tai 17 | 18 | return chenh_lech.total_seconds() 19 | 20 | # Thời gian đích đầu vào 21 | thoi_gian_dich = "31-12-2024 23:59:59" 22 | dinh_dang = "%d-%m-%Y %H:%M:%S" 23 | 24 | # Gọi hàm và in kết quả 25 | so_giay = tinh_so_giay_den_thoi_gian_dich(thoi_gian_dich, dinh_dang) 26 | print("Số giây từ thời gian hiện tại đến thời gian đích là:", so_giay) 27 | -------------------------------------------------------------------------------- /code/291_300/298.py: -------------------------------------------------------------------------------- 1 | # 298 - Viết chương trình để thay đổi kích thước ảnh 2 | 3 | import cv2 4 | from matplotlib import pyplot as plt 5 | 6 | # Đường dẫn tới file ảnh 7 | image_path = 'img2.jpeg' 8 | 9 | # Đọc ảnh từ file 10 | image = cv2.imread(image_path) 11 | 12 | # Kiểm tra xem ảnh đã được đọc thành công chưa 13 | if image is not None: 14 | # Kích thước mới (chiều rộng và chiều cao) 15 | new_width = 800 16 | new_height = 600 17 | 18 | # Thay đổi kích thước ảnh 19 | resized_image = cv2.resize(image, (new_width, new_height)) 20 | 21 | # Hiển thị ảnh gốc và ảnh đã thay đổi kích thước 22 | plt.figure(figsize=(10, 10)) 23 | 24 | plt.subplot(1, 2, 1) 25 | plt.title('Original Image') 26 | plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) 27 | 28 | plt.subplot(1, 2, 2) 29 | plt.title('Resized Image') 30 | plt.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)) 31 | 32 | plt.show() 33 | else: 34 | print("Failed to load image. Check the input path and file format.") -------------------------------------------------------------------------------- /code/221_230/227.py: -------------------------------------------------------------------------------- 1 | # 227 - Viết chương trình để phân tích dữ liệu từ tệp CSV 2 | 3 | class Student: 4 | def __init__(self, name, age, city): 5 | self.name = name 6 | self.age = age 7 | self.city = city 8 | 9 | def __repr__(self): 10 | return f"Student(name={self.name}, age={self.age}, city={self.city})" 11 | 12 | import csv 13 | 14 | # Đường dẫn đến tệp CSV 15 | file_path = 'students.csv' 16 | 17 | # Danh sách để lưu trữ các đối tượng Student 18 | students = [] 19 | 20 | # Đọc dữ liệu từ tệp CSV và tạo các đối tượng Student 21 | with open(file_path, newline='', encoding='utf-8') as csvfile: 22 | csvreader = csv.reader(csvfile) 23 | header = next(csvreader) # Đọc dòng tiêu đề 24 | for row in csvreader: 25 | # Tạo đối tượng Student và thêm vào danh sách 26 | student = Student(name=row[0], age=int(row[1]), city=row[2]) 27 | students.append(student) 28 | 29 | # Hiển thị danh sách các đối tượng Student 30 | for student in students: 31 | print(student) 32 | -------------------------------------------------------------------------------- /141_150/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 15 : Bài toán số học 2 | 3 | 141. [Viết chương trình để tính tổng, hiệu, tích và thương của hai phân số.](./141.md) 4 | 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).](./142.md) 5 | 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.](./143.md) 6 | 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.](./144.md) 7 | 145. [Viết chương trình để tính lũy thừa của một số.](./145.md) 8 | 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.](./146.md) 9 | 147. [Viết chương trình để kiểm tra một số có phải là số hoàn hảo không.](./147.md) 10 | 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.](./148.md) 11 | 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ố.](./149.md) 12 | 150. [Viết chương trình để tìm khoảng cách của 2 điểm A & B trong hệ tọa độ Oxy.](./150.md) 13 | -------------------------------------------------------------------------------- /code/101_110/107.py: -------------------------------------------------------------------------------- 1 | # 107 - Viết chương trình để nối các từ trong danh sách thành một chuỗi 2 | 3 | # Cách 1: Sử dụng hàm join() 4 | def noi_tu_thanh_chuoi(danh_sach_tu): 5 | """ 6 | Hàm để nối các từ trong danh sách thành một chuỗi. 7 | """ 8 | chuoi_ket_qua = ' '.join(danh_sach_tu) 9 | return chuoi_ket_qua 10 | 11 | # Cách 2: Sử dụng vòng lặp 12 | def noi_tu_thanh_chuoi2(danh_sach_tu): 13 | """ 14 | Hàm để nối các từ trong danh sách thành một chuỗi. 15 | """ 16 | chuoi_ket_qua = "" 17 | for tu in danh_sach_tu: 18 | chuoi_ket_qua += tu + " " 19 | chuoi_ket_qua = chuoi_ket_qua.strip() # Loại bỏ khoảng trắng dư thừa ở cuối chuỗi 20 | return chuoi_ket_qua 21 | 22 | # Khởi tạo danh sách các từ 23 | danh_sach_tu = ["Đây", "là", "một", "chuỗi", "các", "từ"] 24 | 25 | # Gọi hàm và in kết quả 26 | chuoi_ket_qua = noi_tu_thanh_chuoi(danh_sach_tu) 27 | print(chuoi_ket_qua) 28 | 29 | # Gọi hàm và in kết quả 30 | chuoi_ket_qua2 = noi_tu_thanh_chuoi2(danh_sach_tu) 31 | print(chuoi_ket_qua2) 32 | 33 | -------------------------------------------------------------------------------- /code/141_150/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 15 : Bài toán số học 2 | 3 | 141. [Viết chương trình để tính tổng, hiệu, tích và thương của hai phân số.](./141.py) 4 | 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).](./142.py) 5 | 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.](./143.py) 6 | 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.](./144.py) 7 | 145. [Viết chương trình để tính lũy thừa của một số.](./145.py) 8 | 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.](./146.py) 9 | 147. [Viết chương trình để kiểm tra một số có phải là số hoàn hảo không.](./147.py) 10 | 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.](./148.py) 11 | 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ố.](./149.py) 12 | 150. [Viết chương trình để tìm khoảng cách của 2 điểm A & B trong hệ tọa độ Oxy.](./150.py) 13 | -------------------------------------------------------------------------------- /121_130/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 13 : Lập trình hàm 2 | 3 | 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.](./121.md) 4 | 122. [Viết chương trình để sử dụng hàm filter để lọc các số chẵn trong danh sách.](./122.md) 5 | 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.](./123.md) 6 | 124. [Viết chương trình để sử dụng hàm lambda để tính lũy thừa của một số.](./124.md) 7 | 125. [Viết chương trình để sử dụng hàm lambda để kiểm tra số chẵn lẻ.](./125.md) 8 | 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.](./126.md) 9 | 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.](./127.md) 10 | 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.](./128.md) 11 | 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ị.](./129.md) 12 | 130. [Viết chương trình để sử dụng hàm lambda để tìm số lớn nhất trong danh sách.](./130.md) 13 | -------------------------------------------------------------------------------- /code/291_300/300.py: -------------------------------------------------------------------------------- 1 | # 300 - Viết chương trình để xoay ảnh 2 | 3 | from PIL import Image 4 | from matplotlib import pyplot as plt 5 | 6 | # Đường dẫn tới file ảnh 7 | image_path = 'img2.jpeg' 8 | 9 | # Đọc ảnh từ file 10 | image = Image.open(image_path) 11 | 12 | # Kiểm tra xem ảnh đã được đọc thành công chưa 13 | if image is not None: 14 | def rotate_image(image, angle): 15 | return image.rotate(angle, expand=True) 16 | 17 | # Xoay ảnh với các góc khác nhau 18 | angles = [30, 60, 90, 180] 19 | rotated_images = [rotate_image(image, angle) for angle in angles] 20 | 21 | # Hiển thị ảnh gốc và ảnh đã xoay 22 | plt.figure(figsize=(15, 10)) 23 | 24 | plt.subplot(2, 3, 1) 25 | plt.title('Original Image') 26 | plt.imshow(image) 27 | 28 | for i, angle in enumerate(angles): 29 | plt.subplot(2, 3, i+2) 30 | plt.title(f'Rotated {angle} degrees') 31 | plt.imshow(rotated_images[i]) 32 | 33 | plt.show() 34 | else: 35 | print("Failed to load image. Check the input path and file format.") -------------------------------------------------------------------------------- /code/121_130/Readme.md: -------------------------------------------------------------------------------- 1 | # Chương 13 : Lập trình hàm 2 | 3 | 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.](./121.py) 4 | 122. [Viết chương trình để sử dụng hàm filter để lọc các số chẵn trong danh sách.](./122.py) 5 | 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.](./123.py) 6 | 124. [Viết chương trình để sử dụng hàm lambda để tính lũy thừa của một số.](./124.py) 7 | 125. [Viết chương trình để sử dụng hàm lambda để kiểm tra số chẵn lẻ.](./125.py) 8 | 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.](./126.py) 9 | 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.](./127.py) 10 | 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.](./128.py) 11 | 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ị.](./129.py) 12 | 130. [Viết chương trình để sử dụng hàm lambda để tìm số lớn nhất trong danh sách.](./130.py) 13 | -------------------------------------------------------------------------------- /code/141_150/141_2.py: -------------------------------------------------------------------------------- 1 | from fractions import Fraction 2 | 3 | class MyFraction: 4 | def __init__(self, numerator, denominator): 5 | self.numerator = numerator 6 | self.denominator = denominator 7 | 8 | def add(self, other): 9 | return Fraction(self.numerator, self.denominator) + Fraction(other.numerator, other.denominator) 10 | 11 | def subtract(self, other): 12 | return Fraction(self.numerator, self.denominator) - Fraction(other.numerator, other.denominator) 13 | 14 | def multiply(self, other): 15 | return Fraction(self.numerator, self.denominator) * Fraction(other.numerator, other.denominator) 16 | 17 | def divide(self, other): 18 | return Fraction(self.numerator, self.denominator) / Fraction(other.numerator, other.denominator) 19 | 20 | 21 | # Test 22 | frac1 = MyFraction(1, 2) 23 | frac2 = MyFraction(2, 3) 24 | 25 | print(f"Tổng: {frac1.add(frac2)}") 26 | print(f"Hiệu: {frac1.subtract(frac2)}") 27 | print(f"Tích: {frac1.multiply(frac2)}") 28 | print(f"Thương: {frac1.divide(frac2)}") -------------------------------------------------------------------------------- /code/101_110/110.py: -------------------------------------------------------------------------------- 1 | # 110 - Viết chương trình để kiểm tra một chuỗi có phải là palindrome không 2 | 3 | # Cách 1: Sử dụng cách đảo ngược chuỗi 4 | def kiem_tra_palindrome(chuoi): 5 | """ 6 | Hàm để kiểm tra một chuỗi có phải là palindrome không. 7 | """ 8 | chuoi = chuoi.replace(" ", "").lower() 9 | return chuoi == chuoi[::-1] 10 | 11 | # Cách 2: Sử dụng vòng lặp 12 | def kiem_tra_palindrome2(chuoi): 13 | """ 14 | Hàm để kiểm tra một chuỗi có phải là palindrome không. 15 | """ 16 | chuoi = chuoi.replace(" ", "").lower() 17 | n = len(chuoi) 18 | for i in range(n // 2): 19 | if chuoi[i] != chuoi[n - i - 1]: 20 | return False 21 | return True 22 | 23 | # Chuỗi cần kiểm tra 24 | chuoi1 = "A man a plan a canal Panama" 25 | chuoi2 = "Hello World" 26 | 27 | # Gọi hàm và in kết quả 28 | print(kiem_tra_palindrome(chuoi1)) # True 29 | print(kiem_tra_palindrome(chuoi2)) # False 30 | 31 | # Gọi hàm và in kết quả 32 | print(kiem_tra_palindrome2(chuoi1)) # True 33 | print(kiem_tra_palindrome2(chuoi2)) # False 34 | -------------------------------------------------------------------------------- /code/251_260/253.py: -------------------------------------------------------------------------------- 1 | # 253 - Viết chương trình để trích xuất tất cả các liên kết từ trang web 2 | 3 | import requests 4 | from bs4 import BeautifulSoup 5 | 6 | def extract_links(url): 7 | # Gửi yêu cầu HTTP tới URL 8 | response = requests.get(url) 9 | 10 | # Kiểm tra mã trạng thái HTTP 11 | if response.status_code == 200: 12 | # Phân tích nội dung HTML 13 | soup = BeautifulSoup(response.content, 'html.parser') 14 | 15 | # Trích xuất tất cả các liên kết 16 | links = [] 17 | for link in soup.find_all('a', href=True): 18 | links.append(link['href']) 19 | 20 | # Trả về danh sách các liên kết 21 | return links 22 | else: 23 | return None 24 | 25 | # Nhập URL của trang web từ người dùng 26 | url = input("Nhập URL của trang web: ") 27 | links = extract_links(url) 28 | if links: 29 | print("Các liên kết trên trang web:") 30 | for link in links: 31 | print(link) 32 | else: 33 | print("Không thể truy cập trang web hoặc trang web không có liên kết.") 34 | -------------------------------------------------------------------------------- /code/251_260/254.py: -------------------------------------------------------------------------------- 1 | # 254 - Viết chương trình để trích xuất tất cả các hình ảnh từ trang web 2 | 3 | import requests 4 | from bs4 import BeautifulSoup 5 | 6 | def extract_images(url): 7 | # Gửi yêu cầu HTTP tới URL 8 | response = requests.get(url) 9 | 10 | # Kiểm tra mã trạng thái HTTP 11 | if response.status_code == 200: 12 | # Phân tích nội dung HTML 13 | soup = BeautifulSoup(response.content, 'html.parser') 14 | 15 | # Trích xuất tất cả các hình ảnh 16 | images = [] 17 | for img in soup.find_all('img', src=True): 18 | images.append(img['src']) 19 | 20 | # Trả về danh sách các hình ảnh 21 | return images 22 | else: 23 | return None 24 | 25 | # Nhập URL của trang web từ người dùng 26 | url = input("Nhập URL của trang web: ") 27 | images = extract_images(url) 28 | if images: 29 | print("Các hình ảnh trên trang web:") 30 | for img in images: 31 | print(img) 32 | else: 33 | print("Không thể truy cập trang web hoặc trang web không có hình ảnh.") 34 | --------------------------------------------------------------------------------