Hướng dẫn học Python: Học lập trình Python từ cơ bản đến nâng cao
By khoanc, at: 22:46 Ngày 21 tháng 12 năm 2022
Thời gian đọc ước tính: __READING_TIME__ minutes


Python là một ngôn ngữ lập trình mạnh mẽ và đa năng đã đạt được sự phổ biến rộng rãi trong những năm gần đây. Nó được biết đến với sự đơn giản, dễ đọc và dễ sử dụng, làm cho nó trở thành sự lựa chọn lý tưởng cho cả người mới bắt đầu cũng như các nhà phát triển dày dạn kinh nghiệm. Hướng dẫn này nhằm mục đích cung cấp một giới thiệu toàn diện về Python, bao gồm các chủ đề như kiểu dữ liệu, cấu trúc điều khiển, hàm, mô-đun và gói, lập trình hướng đối tượng, ngoại lệ và xử lý lỗi, gỡ lỗi và kiểm thử. Cho dù bạn là người mới bắt đầu hay là một lập trình viên giàu kinh nghiệm, hướng dẫn này sẽ cung cấp cho bạn một nền tảng vững chắc trong lập trình Python và giúp bạn phát triển các kỹ năng để giải quyết một loạt các dự án. Vì vậy, hãy bắt đầu nào!
Có rất nhiều bài tập trong hướng dẫn này, và chúng tôi đã cung cấp các giải pháp tại đây
1. Giới thiệu về Python: Cái gì, tại sao và làm thế nào
Python là một ngôn ngữ lập trình phổ biến được các nhà phát triển sử dụng cho một loạt các ứng dụng, từ phát triển web đến học máy. Trong bài viết này, chúng ta sẽ khám phá Python là gì, tại sao bạn nên sử dụng nó và cách thiết lập môi trường Python của bạn. Hãy bắt đầu nào!
1.1 Python là gì?
Python là một ngôn ngữ lập trình cấp cao được thông dịch, lần đầu tiên được phát hành vào năm 1991 bởi Guido van Rossum. Python được biết đến với cú pháp đơn giản và dễ đọc, làm cho nó trở thành một ngôn ngữ lý tưởng cho người mới bắt đầu học lập trình. Sự phổ biến của Python đã tăng lên đáng kể trong những năm qua nhờ thư viện mô-đun khổng lồ và khả năng được sử dụng cho nhiều ứng dụng khác nhau, chẳng hạn như phân tích dữ liệu, phát triển web và học máy.
1.2 Tại sao nên sử dụng Python?
Python đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới, và có một số lý do tại sao bạn nên cân nhắc sử dụng nó. Dưới đây là một vài lợi ích chính của việc sử dụng Python:
- Dễ học: Cú pháp đơn giản và trực quan của Python giúp người mới bắt đầu dễ dàng học lập trình.
- Phạm vi ứng dụng rộng: Python có thể được sử dụng cho nhiều tác vụ khác nhau, chẳng hạn như phát triển web, phân tích dữ liệu và học máy.
- Cộng đồng lớn: Python có một cộng đồng các nhà phát triển lớn và năng động, điều này có nghĩa là có rất nhiều tài nguyên sẵn có để học tập và giải quyết vấn đề.
- Mở nguồn: Python là một ngôn ngữ mã nguồn mở, có nghĩa là nó miễn phí để sử dụng và có thể được sửa đổi để phù hợp với nhu cầu cụ thể của bạn.
1.3 Thiết lập môi trường Python của bạn
Trước khi bạn có thể bắt đầu viết mã bằng Python, bạn cần thiết lập môi trường Python của mình. Dưới đây là các bước cơ bản để bắt đầu:
- Tải xuống và cài đặt Python: Bạn có thể tải xuống phiên bản Python mới nhất từ trang web chính thức của Python. Sau khi bạn đã tải xuống trình cài đặt, hãy chạy nó và làm theo các hướng dẫn để cài đặt Python trên máy của bạn.
- Chọn một trình soạn thảo: Mã Python có thể được viết trong bất kỳ trình soạn thảo văn bản nào, nhưng thường hữu ích khi sử dụng một trình soạn thảo được thiết kế đặc biệt cho phát triển Python, chẳng hạn như PyCharm, VS Code hoặc Sublime Text.
- Kiểm tra cài đặt của bạn: Sau khi bạn đã cài đặt Python và chọn một trình soạn thảo, tốt nhất là nên kiểm tra cài đặt của bạn bằng cách chạy một chương trình "Hello, World!" đơn giản.
1.4 Chương trình Python đầu tiên - Ví dụ "Hello, World!"
"Hello, World!" là một chương trình đơn giản xuất thông báo "Hello, World!" ra màn hình. Dưới đây là cách bạn có thể viết và chạy chương trình trong Python:
Mở trình soạn thảo văn bản của bạn và tạo một tệp mới. Nhập mã sau vào tệp
print("Hello, World!")
Lưu tệp dưới dạng "hello.py".
Mở một thiết bị đầu cuối hoặc dấu nhắc lệnh và điều hướng đến thư mục nơi bạn đã lưu tệp.
Nhập và nhấn Enter
python hello.py
Bạn sẽ thấy thông báo "Hello, World!" được in ra màn hình.
2. Biến và Kiểu dữ liệu
2.1 Biến
Trong Python, một biến là một vị trí lưu trữ được đặt tên lưu trữ một giá trị hoặc dữ liệu. Một biến được tạo khi một giá trị được gán cho nó bằng toán tử gán "=".
Dưới đây là một ví dụ về cách tạo một biến:
x = 5
Trong ví dụ này, chúng ta đã tạo một biến có tên là "x" và gán giá trị 5 cho nó. Bây giờ chúng ta có thể sử dụng biến "x" trong chương trình của mình để tham chiếu đến giá trị 5.
2.2 Kiểu dữ liệu
Trong Python, có một số kiểu dữ liệu có thể được sử dụng để biểu diễn các loại dữ liệu khác nhau. Các kiểu dữ liệu phổ biến nhất trong Python là:
- Kiểu văn bản: str
- Kiểu số: int, float
- Kiểu chuỗi: list, tuple
- Kiểu ánh xạ: dict
- Kiểu tập hợp: set
- Kiểu boolean: bool
- Kiểu None: NoneType
Dưới đây là một ví dụ về cách tạo các biến có các kiểu dữ liệu khác nhau:
a_str = "this is a string"
int_number = 10 # đây là một int
float_number = 2.6 # đây là một float
a_list = [1, 2, 3] # đây là một list
a_tuple = ((1, 2), (3, 4)) # đây là một tuple
a_dict = {"name": "Joe", "age": 10, "male": True, "having_car": None} # đây là một dictionary
a_set = {1, 2, 3, 4} # Đây là một set, một set chứa các đối tượng/giá trị duy nhất
a_bool = True # đây là một boolean
a_none = None
2.3 Chuyển đổi kiểu
Trong Python, chúng ta có thể chuyển đổi các giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác bằng các hàm chuyển đổi kiểu. Dưới đây là một số hàm chuyển đổi kiểu phổ biến:
- int() - chuyển đổi một giá trị thành số nguyên.
- float() - chuyển đổi một giá trị thành số thực.
- str() - chuyển đổi một giá trị thành chuỗi.
- bool() - chuyển đổi một giá trị thành boolean.
- dict() - chuyển đổi một giá trị thành dict.
- list() - chuyển đổi một giá trị thành list.
- set() - chuyển đổi một giá trị thành set.
Dưới đây là một ví dụ về cách sử dụng các hàm chuyển đổi kiểu:
x = 5
y = 3.14
z = "10"
# chuyển đổi x thành float
x_float = float(x)
# chuyển đổi y thành số nguyên
y_int = int(y)
# chuyển đổi z thành số nguyên
z_int = int(z)
2.4 In các biến
Trong Python, chúng ta có thể in các giá trị của biến bằng hàm print(). Chúng ta cũng có thể bao gồm văn bản và các giá trị khác trong đầu ra bằng cách sử dụng nối chuỗi hoặc định dạng chuỗi.
Dưới đây là một ví dụ về cách in các biến bằng cách nối chuỗi:
x = 5
y = 3.14
z = "Python"
# in các biến bằng cách nối chuỗi
print("x is " + str(x) + ", y is " + str(y) + ", and z is " + z)
# in các biến bằng định dạng chuỗi
print("x is {}, y is {}, and z is {}".format(x, y, z))
# in các biến bằng f-strings
print(f"x is {x}, y is {y}, and z is {z}")
2.5 Bài tập mẫu
- Viết một chương trình tính diện tích của một hình chữ nhật. Chương trình nên yêu cầu người dùng nhập chiều rộng và chiều cao của hình chữ nhật, sau đó in diện tích.
- Viết một chương trình chuyển đổi kilômét sang dặm. Chương trình nên yêu cầu người dùng nhập khoảng cách tính bằng kilômét và in khoảng cách tương đương tính bằng dặm.
- Viết một chương trình nhận một chuỗi làm đầu vào và in xem chuỗi đó có chỉ chứa các chữ số hay không.
- Viết một chương trình nhận một danh sách các số nguyên làm đầu vào và in tổng của các số lẻ trong danh sách.
- Viết một chương trình nhận một chuỗi làm đầu vào và in số từ trong chuỗi.
- Viết một chương trình nhận một danh sách các chuỗi làm đầu vào và in chuỗi ngắn nhất trong danh sách.
- Tạo một tuple các món ăn yêu thích của bạn và in độ dài của tuple.
- Tạo một tập hợp các số duy nhất từ một danh sách các số và in tập hợp đó.
- Tạo một dictionary ánh xạ các quốc gia với các thủ đô của chúng và in khóa và giá trị của dictionary được sắp xếp theo khóa.
- Sắp xếp một danh sách các chuỗi theo thứ tự bảng chữ cái và in danh sách đã được sắp xếp.
- Tạo một danh sách các số và tính trung bình cộng của các số đó.
- Chuyển đổi một số thực thành số nguyên và in số nguyên đó.
- Tạo một tuple các số và kiểm tra xem một số cụ thể có nằm trong tuple hay không.
- Tạo một dictionary các từ và định nghĩa của chúng. In định nghĩa của một từ cụ thể.
- Sắp xếp một danh sách các số theo thứ tự giảm dần và in danh sách đã được sắp xếp.
- Tạo một tập hợp các số và loại bỏ bất kỳ số chẵn nào khỏi tập hợp đó.
Các giải pháp đề xuất có thể được tìm thấy tại đây
3. Toán tử và Biểu thức
Trong Python, toán tử là các ký hiệu hoặc từ khóa thực hiện các phép toán cụ thể trên các biến hoặc giá trị. Biểu thức là sự kết hợp của các biến, giá trị và toán tử tạo ra một kết quả. Hiểu về toán tử và biểu thức là điều cần thiết để viết mã Python hiệu quả và hiệu suất cao.
3.1 Toán tử số học
Toán tử số học được sử dụng để thực hiện các phép toán như cộng, trừ, nhân, chia, chia lấy dư và lũy thừa.
Ví dụ:
# Cộng
x = 10
y = 5
result = x + y
print(result) # Đầu ra: 15
# Trừ
x = 10
y = 5
result = x - y
print(result) # Đầu ra: 5
# Nhân
x = 10
y = 5
result = x * y
print(result) # Đầu ra: 50
# Chia
x = 10
y = 5
result = x / y
print(result) # Đầu ra: 2.0
# Chia lấy dư
x = 10
y = 3
result = x % y
print(result) # Đầu ra: 1
# Lũy thừa
x = 2
y = 3
result = x ** y
print(result) # Đầu ra: 8
3.2 Toán tử so sánh
Toán tử so sánh được sử dụng để so sánh hai giá trị và trả về một giá trị boolean (True hoặc False) dựa trên kết quả của phép so sánh.
Ví dụ:
# Bằng
x = 10
y = 5
result = x == y
print(result) # Đầu ra: False
# Không bằng
x = 10
y = 5
result = x != y
print(result) # Đầu ra: True
# Lớn hơn
x = 10
y = 5
result = x > y
print(result) # Đầu ra: True
# Nhỏ hơn
x = 10
y = 5
result = x < y
print(result) # Đầu ra: False
# Lớn hơn hoặc bằng
x = 10
y = 5
result = x >= y
print(result) # Đầu ra: True
# Nhỏ hơn hoặc bằng
x = 10
y = 5
result = x <= y
print(result) # Đầu ra: False
3.3 Toán tử logic
Toán tử logic được sử dụng để kết hợp hai hoặc nhiều điều kiện và trả về một giá trị boolean dựa trên kết quả của sự kết hợp.
Ví dụ:
# Toán tử AND
x = 10
y = 5
z = 8
result = (x > y) and (y < z)
print(result) # Đầu ra: True
# Toán tử OR
x = 10
y = 5
z = 3
result = (x < y) or (y > z)
print(result) # Đầu ra: True
# Toán tử NOT
x = 10
y = 5
result = not(x > y)
print(result) # Đầu ra: False
3.4 Thứ tự ưu tiên toán tử
Thứ tự ưu tiên toán tử xác định thứ tự các toán tử được đánh giá trong một biểu thức. Các toán tử có độ ưu tiên cao hơn được đánh giá trước các toán tử có độ ưu tiên thấp hơn.
Ví dụ:
# Nhân có độ ưu tiên cao hơn cộng
result = 10 + 5 * 3
print(result) # Đầu ra: 25
# Dấu ngoặc đơn có thể được sử dụng để thay đổi thứ tự đánh giá
result = (10 + 5) * 3
print(result) # Đầu ra: 45
# Toán tử so sánh có độ ưu tiên cao hơn toán tử logic
result = 10 > 5 and 5 < 3
print(result) # Đầu ra: False
# Toán tử logic có thể được sử dụng để kết hợp nhiều điều kiện với các độ ưu tiên toán tử khác nhau
result = (10 > 5) or not(5 < 3) and (4 == 4)
print(result) # Đầu ra: True
3.5 Bài tập mẫu
- Viết một chương trình Python nhận hai số nguyên làm đầu vào và trả về tổng, hiệu, tích và thương của chúng.
- Viết một chương trình Python nhận một danh sách các số nguyên và trả về tổng của tất cả các số chẵn trong danh sách.
- Viết một chương trình Python nhận một chuỗi làm đầu vào và trả về chuỗi đó theo thứ tự ngược lại.
- Viết một chương trình Python nhận một danh sách các số nguyên và trả về số lớn nhất và nhỏ nhất trong danh sách.
- Viết một chương trình Python nhận một danh sách các chuỗi và trả về số lượng chuỗi chứa chữ cái 'a'.
- Viết một chương trình Python nhận một danh sách các số nguyên và trả về một danh sách mới chỉ chứa các số chẵn từ danh sách ban đầu.
- Viết một chương trình Python nhận một chuỗi làm đầu vào và trả về số nguyên âm trong chuỗi.
- Viết một chương trình Python nhận hai danh sách các số nguyên và trả về một danh sách mới chỉ chứa các phần tử chung giữa hai danh sách.
- Viết một chương trình Python nhận một danh sách các số nguyên và trả về một danh sách mới chứa bình phương của mỗi số trong danh sách ban đầu.
- Viết một chương trình Python nhận một dictionary làm đầu vào và trả về một dictionary mới chỉ chứa các cặp khóa-giá trị trong đó giá trị là một chuỗi.
Các giải pháp đề xuất có thể được tìm thấy tại đây
4. Cấu trúc điều khiển
4.1 Câu lệnh điều kiện (if-else)
Câu lệnh điều kiện được sử dụng trong lập trình để kiểm tra xem một điều kiện nhất định có đúng hay không. Trong Python, chúng ta sử dụng các từ khóa if và else để tạo các câu lệnh điều kiện.
Ví dụ:
age = 25
if age >= 18:
print("Bạn là người lớn")
else:
print("Bạn chưa đủ tuổi")
4.2 Vòng lặp (for, while)
Vòng lặp được sử dụng trong lập trình để lặp lại trên một chuỗi các giá trị. Trong Python, chúng ta sử dụng các từ khóa for và while để tạo vòng lặp.
Ví dụ sử dụng vòng lặp for:
num_list = [1, 2, 3, 4, 5]
for num in num_list:
print(num)
Ví dụ sử dụng vòng lặp while:
i = 0
while i < 5:
print(i)
i += 1
4.3 Câu lệnh điều khiển (break, continue)
Câu lệnh điều khiển được sử dụng trong lập trình để thay đổi luồng thực thi. Trong Python, chúng ta sử dụng các từ khóa break và continue để tạo các câu lệnh điều khiển.
Ví dụ sử dụng break:
num_list = [1, 2, 3, 4, 5]
for num in num_list:
if num == 3:
break
print(num)
Ví dụ sử dụng continue:
num_list = [1, 2, 3, 4, 5]
for num in num_list:
if num == 3:
continue
print(num)
4.4 Bài tập mẫu
- Viết một chương trình in tất cả các số chẵn từ 1 đến 20 bằng vòng lặp for
- Viết một chương trình in tất cả các số từ 1 đến 50 chia hết cho 3 hoặc 5 bằng vòng lặp while.
- Viết một chương trình nhận một danh sách các số và chỉ in các số lẻ bằng vòng lặp for.
- Viết một chương trình nhận một danh sách các tên và chỉ in các tên bắt đầu bằng chữ cái 'S' bằng vòng lặp for.
- Viết một chương trình nhận một chuỗi và in số nguyên âm trong chuỗi bằng vòng lặp for.
- Viết một chương trình nhận một danh sách các số và trả về tổng của tất cả các số chẵn bằng vòng lặp for.
- Viết một chương trình nhận một danh sách các chuỗi và trả về chuỗi dài nhất bằng vòng lặp for.
- Viết một chương trình nhận một danh sách các số và trả về tích của tất cả các số bằng vòng lặp while.
- Viết một chương trình nhận một danh sách các số và trả về một danh sách mới chỉ có các số dương bằng vòng lặp for.
- Viết một chương trình nhận một dictionary các mặt hàng và giá cả của chúng
Các giải pháp đề xuất có thể được tìm thấy tại đây
5. Hàm
5.1 Định nghĩa hàm
Hàm trong Python là các khối mã thực hiện một tác vụ cụ thể. Chúng giúp sắp xếp mã và làm cho mã dễ đọc và mô đun hơn. Việc định nghĩa một hàm trong Python liên quan đến việc sử dụng từ khóa def theo sau là tên của hàm, theo sau là dấu ngoặc đơn và dấu hai chấm. Mã thuộc về hàm được thụt lề.
Ví dụ:
def greet(name):
print(f'Hello, {name}!')
Trong ví dụ này, chúng ta định nghĩa một hàm có tên là greet nhận một tham số name. Hàm in ra lời chào bằng giá trị của name.
5.2 Tham số và đối số
Tham số là các biến được định nghĩa trong chữ ký hàm và được sử dụng trong hàm. Đối số là các giá trị được truyền cho một hàm khi nó được gọi.
Ví dụ:
def add_numbers(num1, num2):
sum = num1 + num2
print(f'The sum of {num1} and {num2} is {sum}')
add_numbers(2, 3)
Trong ví dụ này, chúng ta định nghĩa một hàm add_numbers nhận hai tham số num1 và num2. Khi hàm được gọi với các đối số 2 và 3, hàm cộng hai số và in ra kết quả.
5.3 Trả về giá trị
Hàm cũng có thể trả về một giá trị bằng cách sử dụng từ khóa return. Giá trị được trả về sau đó có thể được sử dụng bởi các phần khác của mã.
Ví dụ:
def multiply(num1, num2):
product = num1 * num2
return product
result = multiply(2, 3)
print(result)
Trong ví dụ này, chúng ta định nghĩa một hàm multiply nhận hai tham số num1 và num2. Hàm tính tích của hai số và trả về nó. Khi hàm được gọi với các đối số 2 và 3, giá trị được trả về được lưu trữ trong biến result và sau đó được in ra.
5.4 Đệ quy
Đệ quy là một kỹ thuật trong đó một hàm