Trang chủ Python Lập trình cơ bản 50 ví dụ Python cơ bản cho người mới bắt đầu học

50 ví dụ Python cơ bản cho người mới bắt đầu học

6499
0

Dưới đây là 50 bài tập Python cơ bản giúp bạn học và hiểu sâu hơn về ngôn ngữ này. Chuỗi bài tập dưới đây sẽ bao quát ngôn ngữ Python, giúp bạn hiểu sâu hơn về ngôn ngữ này. Bạn có thể sử dụng danh sách ví dụ này như một bảng ghi chú cho dù bạn đang chuẩn bị cho một kỳ thi, một cuộc phỏng vấn hay đơn giản chỉ là tò mò về Python.

===> Học Python cơ bản tại: 36 bài Python cơ bản

Tóm tắt nội dung

Những nguyên tắc cơ bản của Python (Fundamentals of Python)

Variables (Biến)

Một biến có thể lưu trữ một giá trị. Giá trị có thể là số, danh sách hoặc bất kỳ thứ gì khác là đối tượng trong Python.

Các bạn hãy xem một số ví dụ sau:

number = 10
name = "Type"
data = {"name": "Yên Nguyễn", age: 40}
numbers = [1, 2, 3, 4, 5]

Strings (Chuỗi)

Strings đại diện cho văn bản trong Python.

Ví dụ: bạn có thể tạo một biến lưu trữ tên của một người:

name = "Yên Nguyễn"

Numbers (Số)

Python hỗ trợ các giá trị số, nghĩa là số nguyên và số float. Nếu một số có nhiều chữ số, bạn có thể sử dụng dấu gạch dưới làm dấu phân cách trực quan để nhóm các chữ số.

Ví du:

number = 6

ten_thousand = 10_000
billion = 1_000_000_000

decimal_number = 4.23
pi_approx = 3.142

earth_mass = 5.972e24
proton_mass = 1.6726e-27

Booleans (Đúng hoặc Sai)

Biến boolean chỉ trả về giá trị hoặc true hoặc false. Ví dụ:

is_raining = False
is_sunny = True

Constants (Hằng số)

Hằng số là biến có giá trị không thay đổi. Để khai báo biến hằng số, hãy đảm bảo tên hằng được viết hoa.

Ví dụ:

NUM = 10
NAME = "Yên Nguyễn"
PARTICIPANTS = ["Yên Nguyễn", "Thanh Long", "Thiên Trường"]

Comments (Chú thích)

Việc để lại nhận xét – chú thích về mã code là chuyện cần thiết. Viết chú thích để giải thích về đoạn mã của bạn, trình thông dịch của Python sẽ biết rằng dòng nào là comment mà không thực thi nó.

Ví dụ:

# Đây là 1 dòng chú thích. Được bắt đầu bằng dấu '#'
# Bạn có viết tất cả những gì mình thích.

'''
Viết một cái gì đó dài ra.
Chú thích của bạn
có thể có nhiều dòng.
'''

Type Conversions (Đổi kiểu)

Trong Python, có nhiều loại biến khác nhau, chẳng hạn như: số nguyên – integer, số thực – float hay đúng sai – boolean. Bạn có thể chuyển đổi từ kiểu này sang kiểu khác bằng cách sử dụng các chức năng chuyển đổi tích hợp.

Ví dụ:

num_string = "10"

# Đổi kiểu string sang integer và float
num_int    = int(num_string)
num_float  = float(num_string)
is_rainy = "True"

# Đổi kiểu string sang boolean
is_rainy = bool(is_rainy)

Python cũng có thể thực hiện việc chuyển đổi kiểu tự động. Ví dụ: khi bạn cộng một số nguyên với số float, nó sẽ chuyển số nguyên thành float cho bạn:

num1 = 10
num2 = 12.32

res = num1 + num2

print(type(res))

Kết quả:

<class 'float'>

===> Gợi ý cho bạn: Chia sẻ 98 bài tập & code mẫu học Python cơ bản đến nâng cao

Các phép toán trong Python (Math Operators in Python)

Toán tửGiải thíchVí dụ
**Exponent (Power)2 ** 4 = 16
%Modulus (Remainder)5 % 3 = 2
//Integer division20 // 7 = 2
/Division11 / 5 = 2.2
*Multiplication2 * 3 = 6
Subtraction4 - 3 = 1
+Addition1 + 1 = 2

Luồng điều khiển trong Python (Control Flow in Python)

Comparison Operators in Python (Phép so sánh)

Toán tửGiải thích
==So sánh bằng
!=So sánh khác
<So sánh nhỏ hơn
>So sánh lớn hơn
<=So sánh nhỏ hơn hoặc bằng
>=So sánh lớn hơn hoặc bằng

Ví dụ:

5 == 5             # True
5 == 6             # False

1 < 2              # True
2 <= 1             # False

"Alice" == "Alice" # True
"Alice" == "Bob"   # False

True == True       # True
Flase == False     # False

Thực hành câu lệnh If…Else (If…Else Statements)

Câu lệnh if…else được sử dụng để kiểm tra xem một điều kiện có đúng hay không.

  • Nếu điều kiện được đáp ứng, một đoạn mã sẽ được thực thi.
  • Nếu điều kiện không được đáp ứng, một đoạn mã khác sẽ được thực thi thay thế.

Ví dụ:

age = 20

if age <= 18:
    print("Bạn không thể lái xe")
else:
    print("Bạn đã đủ tuổi lái xe")

Kết quả:

You are old enough to drive

Câu lệnh If…Elif…Else (If…Elif…Else Statements)

Nếu bạn có nhiều điều kiện muốn kiểm tra cùng một lúc, bạn có thể thêm các câu lệnh elif giữa if…else

Ví dụ:

age = 17

if age < 17:
    print("Bạn không thể lái xe")
elif age == 17:
    print("Bạn có thể bắt đầu học lái xe")
else:
    print("Bạn đã đủ tuổi lái xe")

Kết quả:

You can start at driving school

Toán tử bậc ba (Ternary Operator)

Trong Python, có một cách viết tắt của câu lệnh if…else được gọi là toán tử bậc ba.

Ví dụ:

age = 50

# Regular if-else statement
description = ""

if age > 100:
    description = "Old"
else:
    description = "Young"

# The same using ternary operator as a shorthand
description = "Old" if age > 100 else "Young"

Vòng lặp For (For Loop)

Hướng dẫn dưới đây giúp bạn hiểu và sử dụng vòng lặp for trong Python.

Ví dụ: nếu bạn muốn in danh sách các số, bạn có thể sử dụng vòng lặp for như thế này:

numbers = [1, 2, 3, 4, 5]

for number in numbers:
    print(number)

Kết quả:

1
2
3
4
5

Vòng lặp While (While Loop)

Hướng dẫn dưới đây giúp bạn hiểu và sử dụng vòng lặp while trong Python.

Ví dụ: nếu bạn muốn in danh sách các số, bạn có thể sử dụng vòng lặp while:

numbers = [1, 2, 3, 4, 5]

i = 0
while i < len(numbers):
    print(numbers[i])
    i += 1

Kết quả:

1
2
3
4
5

Câu lệnh Break (Break Statement)

Để thoát khỏi vòng lặp, bạn có thể sử dụng câu lệnh break. Thoát vòng lặp sau khi tìm thấy một giá trị cụ thể.

Ví dụ:

numbers = [1,4,3,2,5,19,5,0]

target = 3

for number in numbers:
    print("Current number", number)
    if number == target:
        print("Đã tìm thấy mục tiêu. Thoát thôi...")
        break

Kết quả:

Current number 1
Current number 4
Current number 3
Đã tìm thấy mục tiêu. Thoát thôi...

Câu lệnh Continue (Continue Statement)

Để kết thúc vòng lặp hiện tại, hãy sử dụng câu lệnh continue. Việc làm này sẽ chuyển trực tiếp sang lần lặp tiếp theo và bỏ qua bất cứ hành động gì nó đang làm trong lần lặp hiện tại.

Ví dụ:

n = 0
while n < 10:
    n += 1
    if n % 2 == 0:
        continue
    print(n)

Kết quả:

1
3
5
7
9

Câu lệnh Pass (Pass Statement)

Để chuyển hoặc bỏ qua việc thực thi trong Python, hãy sử dụng câu lệnh pass.

Ví dụ:

def my_function():
    pass
numbers = [1, 2, 3, 4, 5]

for number in numbers:
    pass

Hàm trong Python (Functions in Python)

Function là một tập hợp các đoạn mã code được sử dụng để thực hiện nhiệm vụ nào đó. Function có thể được gọi, tái sử dụng nhiều lần trong việc lập trình. Bạn cũng có thể chuyển tham số – thông tin cần thiết vào một Function. Đồng thời, Function cũng có thể trả lại dữ liệu. Hàm thật là tuyệt vời!

Ví du:

def greet(name):
    print(f"Hello, {name}. Nice to meet you!")

greet("Alice")
greet("Bob")

Kết quả:

Hello, Vy Nguyễn. Nice to meet you!
Hello, Yên Nguyễn. Nice to meet you!

Truyền Tham số vào Hàm trong Python (Python Function Default Parameters)

Hàm trong Python có thể lấy tham số được mặc định. Nói cách khác, nếu hàm được gọi mà không có tham số truyền vào thì tham số mặc định sẽ được sử dụng.

Ví dụ:

def greet(name="there"):
    print(f"Hello, {name}. Nice to meet you!")

greet()
greet("Bob")

Kết quả:

Chào, đằng ấy. Nice to meet you!
Hello, Yên Nguyễn. Nice to meet you!

Đối số của Hàm trong Python (Python Function Keyword Arguments)

Ngoài việc truyền các tham số vô hàm cơ bản ra thì bạn có thể gắn giá trị cho những tham số đó. Đối số của hàm được gắn giá trị được gọi là đối số từ khóa.

Ví dụ:

def email(firstname, lastname):
    print(f"{firstname.lower()}.{lastname.lower()}@type.vn")

# Regular arguments
email("Vy", "Nguyễn")

# Keyword arguments
email(lastname="Nguyễn", firstname="Vy")
vy.nguyen@type.vn
nguyen.vy@type.vn

Tham số *args (The *args Parameters)

Cho phép số lượng tham số là bất kỳ, bao nhiêu cũng được cho một hàm. Ví dụ:

def add(*args):
    result = 0
    for number in args:
        result += number
    return result


print(add(1, 2, 3))
print(add(1, 2, 3, 4, 5))
print(add(1))

Kết quả:

6
15
1

Tham số **kwargs (The **kwargs Parameters)

Cho phép bất kỳ số lượng đối số từ khóa nào vào một hàm. Ví dụ:

def scan(**kwargs):
    for item, brand in kwargs.items():
        print(f"{item}: {brand}")


scan(shoes="Adidas", shirt="H&M", sweater="Zara")
scan(socks="Nike")

Kết quả:

shoes: Adidas
shirt: H&M
sweater: Zara

socks: Nike

Đệ quy trong Python (Recursion)

Đệ quy có nghĩa là một hàm gọi chính nó bên trong hàm.

Ví dụ: để tính giai thừa, bạn có thể sử dụng hàm đệ quy.

def factorial(n):
    if n == 1:
        return n
    else:
        # Function calls itself from within
        return n * factorial(n - 1)

f = factorial(4)

# factorial(4) = 4! = 4 * 3 * 2 * 1 = 24
print(f)

Kết quả:

24

Giới thiệu Hàm Lambda (Lambda Functions)

Hàm Lambda hoặc biểu thức lambda là các hàm ẩn danh.

Ví dụ:

five_squared = (lambda x: x ** 2)(5)
print(five_squared)

Kết quả:

25

Ví dụ trên không hữu ích ngoài việc nó minh họa cách bạn có thể tạo lambda.

Hãy xem lambdas hoạt động thực tế:

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

even_nums = filter(lambda n: n % 2 == 0, numbers)

print(list(even_nums))

Kết quả:

[2, 4, 6, 8, 10]

Giới thiệu Hàm Docstrings (Function Docstrings)

Để ghi lại một hàm, bạn có thể viết một chuỗi tài liệu để mô tả chức năng của nó. Ví dụ:

def sum(a, b):
    """ Returns the sum of two numbers."""
    return a + b

# Ask to see the docstring of a function:
help(sum)

Kết quả:

Help on function sum in module __main__:

sum(a, b)
    Returns the sum of two numbers.

Kiểu List trong Python (Lists in Python)

List là cấu trúc dữ liệu có thể chứa nhiều mục cùng một lúc. List rất dễ đọc, cập nhật và sửa đổi. Ví du:

numbers = [1, 2, 3, 4, 5]

# Access elements of a list
first = numbers[0]

# Add new element to the end of a list
numbers.append(6)

# Remove the last element from a list
numbers.pop()

Sắp xếp List (Sorting a List)

Sắp xếp List các số theo thứ tự tăng dần:

numbers = [8, 3, 1, 3, 4, 9, 10, 7, 2]

numbers.sort()

print(numbers)

Kết quả:

[1, 2, 3, 3, 4, 7, 8, 9, 10]

Hoặc là sắp xếp theo chiều giảm dần. Ví dụ:

numbers = [8, 3, 1, 3, 4, 9, 10, 7, 2]

numbers.sort(reverse=True)

print(numbers)

Kết quả:

[10, 9, 8, 7, 4, 3, 3, 2, 1]

Sắp xếp List bằng cách tạo một bản copy được sắp xếp

Để tạo một bản copy thay vì sắp xếp List một cách trực tiếp, hãy sử dụng hàm sorted(). Ví dụ:

numbers = [8, 3, 1, 3, 4, 9, 10, 7, 2]

sorted_numbers = sorted(numbers)

print(sorted_numbers)

Kết quả:

[1, 2, 3, 3, 4, 7, 8, 9, 10]

Chia cắt List (Slicing a List)

Để lấy một phần của List, hãy sử dụng toán tử : với dấu ngoặc vuông và xác định phạm vi. Ví dụ:

numbers = [8, 3, 1, 3, 4, 9, 10, 7, 2]

subset = numbers[0:3]
print(subset)

Kết quả:

[8, 3, 1]

Giải nén 1 List (Unpacking a List)

Bạn có thể giải nén hoặc hủy cấu trúc List bằng cách gán từng giá trị vào một biến riêng biệt. Ví dụ:

point = [0, 1, 2]

x, y, z = point

print(x)
print(y)
print(z)

Kết quả:

0
1
2

Lặp lại List bằng vòng lặp For (Iterating Over a List Using a For Loop)

Bạn có thể sử dụng vòng lặp for để lặp qua List trong Python. Ví dụ:

numbers = [1, 2, 3, 4, 5]

for number in numbers:
    print(number)

Kết quả:

1
2
3
4
5

Tìm Index của một phần tử cụ thể (Finding Index of a Specific Element)

Để tìm ra index mà tại đó một phần tử cụ thể nào đó xuất hiện lần đầu tiên trong List, ta sử dụng phương thức index().

Ví dụ:

names = ["Yên Nguyễn", "Vy Nguyễn", "Na", "Vy Nguyễn", "Bưởi"]

bob_position = names.index("Vy Nguyễn")

print(f"Vy Nguyễn is first met at position {bob_position}")

Kết quả:

Vy Nguyễn is first met at position 1

Iterables và Iterators

Vòng lặp for có thể được sử dụng để lặp một List trong Python như thế này:

numbers = [1, 2, 3, 4, 5]

for number in numbers_list:
    print(number)

Kết quả:

1
2
3
4
5

Bên trong, vòng lặp for lấy vòng lặp của List và gọi next trên đó để lấy số tiếp theo. Ví dụ:

numbers = [1, 2, 3, 4, 5]

numbers_iterator = iter(numbers)

print(next(numbers_iterator))
print(next(numbers_iterator))
print(next(numbers_iterator))
print(next(numbers_iterator))
print(next(numbers_iterator))

Kết qủa:

1
2
3
4
5

Ví dụ trên mô phỏng các vòng lặp hoạt động.

Chuyển đổi các thành phần List bằng chức năng Map

Để chạy một thao tác nào đó cho từng phần tử của một iterable (chẳng hạn như List), bạn có thể sử dụng hàm map() được tích hợp sẵn.

Ví dụ:

numbers = [1, 2, 3, 4, 5]

squared_numbers = map(lambda x: x ** 2, numbers)

print(list(squared_numbers))

Kết quả:

[1, 4, 9, 16, 25]

Lọc các phần tử trong List bằng hàm Filter (Filtering List Elements Using Filter Function)

Để lọc các thành phần trong List dựa trên một điều kiện nào đó, hãy sử dụng hàm filter() được tích hợp sẵn.

Ví dụ, lấy tất cả số chẵn trong List:

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

even_nums = filter(lambda n: n % 2 == 0, numbers)

print(list(even_nums))

Kết quả:

[2, 4, 6, 8, 10]

Giảm các thành phần trong List bằng hàm Reduce

Để cộng dồn một List bằng cách thực hiện một thao tác trên hai phần tử liên tiếp, hãy sử dụng hàm functools less().

Ví dụ: hãy đếm tổng các phần tử của List

from functools import reduce
numbers = [1, 2, 3, 4, 5]

sum = reduce(lambda x, y: x + y, numbers)

print(f"The sum of numbers is {sum}")

Kết quả:

The sum of numbers is 15

List Comprehensions

Bạn có thể sử dụng khả năng List Comprehensions để rút ngắn vòng lặp for của mình. Ví dụ:

numbers = [1, 2, 3, 4, 5]
squared_nums = [number ** 2 for number in numbers]

print(squared_nums)

Kết quả:

[1, 4, 9, 16, 25]

Hoặc

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squared_even_nums = [number ** 2 for number in numbers if number % 2 == 0]

print(squared_even_nums)

Kết quả là tất cả các số chẵn được bình phương. Các số lẻ sẽ bị bỏ đi.

[4, 16, 36, 64, 100]

Tuples trong Python

Tuple giống như một List không thể thay đổi sau khi tạo. Bạn chỉ có thể tạo một và đọc các giá trị từ nó.

Ví dụ:

names = ("Yên Nguyễn", "Vy Nguyễn", "Bưởi")

first = names[0] # Returns "Yên Nguyễn"

Bung lụa Tuples

Để đọc các giá trị của một Tuple thành các biến riêng biệt, bạn có thể sử dụng unpacking. Ví dụ:

location = (0, 1, 3)

x, y, z = location

print(x)
print(y)
print(z)

Kết quả:

0
1
3

Từ điển dữ liệu trong Python (Dictionaries in Python)

Từ điển dữ liệu – Dictionarie trong Python kiểu key-data. Ví dụ:

student = {
    "name": "Alice",
    "age": 30,
    "major": "Physics",
    "married": False,
    "hobbies": ["Jogging", "Cycling", "Gym"]
}

Bạn đọc dữ liệu trên như sau.

print(student["name"])

for hobby in student["hobbies"]:
    print(f"I love {hobby}")

Kết quả:

Alice
I love Jogging
I love Cycling
I love Gym

Sau đó, bạn có thể thay đổi chúng:

# Update an existing item
student["age"] = 31

# Add a new item
student["graduated"] = False

print(student)

Kết quả

{'name': 'Alice', 'age': 31, 'major': 'Physics', 'married': False, 'hobbies': ['Jogging', 'Cycling', 'Gym'], 'graduated': False}

Dictionary Comprehension

Để loop một Dictionary trong Python, bạn có thể sử dụng vòng lặp for thông thường, hoặc bạn có thể sử dụng khả năng Dictionary Comprehension.

Để truy cập các mục Dictionary cho vòng lặp, hãy gọi hàm items() của Dictionary.

Ví dụ:

data = {"first": 1, "second": 2, "third": 3}

data_squared_values = {value ** 2 for key, value in data.items()}

print(data_squared_values)

Kết quả:

{1, 4, 9}

Sets trong Python

Set là tập hợp các giá trị duy nhất. Nói cách khác, một Set không thể chứa hai giá trị giống hệt nhau.

Ví dụ:

numbers = {1, 2, 3, 3, 3, 3, 3, 2, 1, 1, 0}

# Each value can occur only once in a set
print(numbers)

Kết quả:

{0, 1, 2, 3}

Set Comprehension

Để loop qua một collection, bạn có thể sử dụng vòng lặp thông thường. Nhưng bạn cũng có thể sử dụng cách viết tắt Set Comprehension.

Ví dụ:

numbers = {1, 2, 3, 4, 5}

squared_numbers = {number ** 2 for number in numbers}

print(squared_numbers)

Kết quả:

{1, 4, 9, 16, 25}

Tiếp theo, chúng ta hãy xem các phương thức tích hợp hữu ích của một tập hợp.

Nhóm các Set (Union of Sets)

numbers1 = {1, 2, 3}
numbers2 = {3, 4, 5}

union = numbers1.union(numbers2)

print(union)

Kết quả:

{3}

Sự khác nhau giữa các Set

numbers1 = {1, 2, 3}
numbers2 = {3, 4, 5}

difference = numbers1.difference(numbers2)

print(difference)

Kết quả:

{1, 2}

Sự khác nhau mang tính đối xứng của Set

numbers1 = {1, 2, 3}
numbers2 = {3, 4, 5}

sym_difference = numbers1.symmetric_difference(numbers2)

print(sym_difference)

Kết quả:

{1, 2, 4, 5}

Tập hợp con (Subset)

numbers1 = {1, 2, 3}
numbers2 = {3, 4, 5}

print({1, 2}.issubset(numbers1))
print({1, 2}.issubset(numbers2))

Kết quả:

True
False

Siêu tập hợp (Superset)

numbers1 = {1, 2, 3}
numbers2 = {3, 4, 5}

print({1, 2, 3, 4}.issuperset(numbers1))
print({1, 2, 3, 4}.issuperset(numbers2))

Kết quả:

True
False

Disjoint Sets

print({1, 2, 3}.isdisjoint({4, 5, 6}))
print({1, 2, 3}.isdisjoint({1, 100, 1000}))

Kết quả:

True
False

Điểu khiển Error trong Python (Error Handling in Python)

Cấu trúc Try…Except (Try…Except Structure)

Có thể xử lý lỗi cơ bản trong Python bằng cách thử chạy một biểu thức và tìm ra lỗi có thể xảy ra. Điều này có thể được thực hiện bằng cách sử dụng cấu trúc Try…Except.

Ví dụ:

try:
    result = x / y
except ZeroDivisionError:
    print("Cannot divide by 0")
except NameError:
    print("Define both numbers first")

Kết quả:

Define both numbers first

Cấu trúc Try…Except…Finally (Try…Except…Finally Structure)

Để luôn chạy một block của mã sau khi xử lý lỗi, hãy sử dụng finally block. Ví dụ:

try:
    y = 10
    print(y)
except:
    print("There was an error")
finally:
    print("Process completed.")

Kết quả:

The number is 10
Process completed.

Cấu trúc Try…Except…Else (Try…Except…Else Structure)

Bạn có thể chạy mã nếu không phát sinh lỗi trong biểu thức bạn chạy trong try bằng cách sử dụng câu lệnh else. Ví dụ:

try:
    y = 10
    print(y)
except:
    print("There was an error")
else:
    print("There were no errors.")
finally:
    print("Process completed.")

Kết quả:

The number is 10
There were no errors.
Process completed.

Vòng lặp với else trong Python (Python Loops with Else)

For…Else

numbers = [1, 2, 3]

for n in numbers:
    print(n)
else:
    print("Loop completed")

Kết quả:

1
2
3
Loop completed

While…Else

numbers = [1, 2, 3]

i = 0
while i < len(numbers):
    print(numbers[i])
    i += 1
else:
    print("Loop completed")

Kết quả:

1
2
3
Loop completed

Điều khiển Files in Python (Files in Python)

Đọc file text (Read a Text File)

with open('example.txt') as file:
    lines = file.readlines()

Nếu tệp không nằm trong cùng thư mục với mã của bạn, hãy nhớ thay thế example.txt bằng đường dẫn đến tệp.

Ghi lên file text (Write to a Text File)

with open('example.txt', 'w') as f:
    f.write('Hello world!')

Nếu bạn muốn tạo một tập tin, hãy sử dụng cú pháp tương tự. Nếu tệp nó cố mở không tồn tại, một tệp mới sẽ được tạo.

Nếu bạn muốn tạo tệp vào thư mục khác, hãy thay thế example.txt bằng đường dẫn mong muốn đến tệp.

Kiểm tra sự tồn tại của File

from os.path import exists

if exists(path_to_file):
    # Do something

Lời kết

Như vậy là các bạn đã trải qua 50 ví dụ đơn giản và cơ bản nhất để có thể nắm rõ ngôn ngữ Python. Hãy đọc và làm thử các đoạn mã trên nhé. Chúc các bạn thành công!

Type tổng hợp

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.