Tác giả: Tạ Nguyễn Mạnh Trung
▲ Về mục lục
-Phần 1: GIỚI THIỆU PYTHON VÀ CHƯƠNG TRÌNH ĐẦU TIÊN
-Phần 2: ĐỊNH DANH VÀ TỪ KHÓA
-Phần 3: CÚ PHÁP CƠ BẢN
-Phần 4: BIẾN VÀ KIỂU DỮ LIỆU
-Phần 5: TOÁN TỬ TRONG PYTHON
1.1. Python là gì? Python là ngôn ngữ lập trình bậc cao, được tạo ra bởi Guido van Rossum và ra mắt lần đầu năm 1991.
Đặc điểm nổi bật:
- Cú pháp đơn giản, dễ học
- Mã nguồn mở, hoàn toàn miễn phí
- Đa nền tảng (Windows, macOS, Linux)
- Hỗ trợ nhiều mô hình lập trình
Ứng dụng của Python:
- Phát triển web (Django, Flask)
- Phân tích dữ liệu (Pandas, NumPy)
- Trí tuệ nhân tạo (TensorFlow, PyTorch)
- Tự động hóa các tác vụ
- Khoa học máy tính
1.2. Cài đặt môi trường Python
Bước 1: Tải Python
- Truy cập python.org
- Tải phiên bản mới nhất (Python 3.x)
- Chọn đúng phiên bản cho hệ điều hành
Bước 2: Cài đặt
- Chạy file cài đặt
- Tick vào ô "Add Python to PATH"
- Chọn "Install Now"
Bước 3: Kiểm tra cài đặt
Mở Command Prompt/Terminal và gõ:
python --version
1.3. Chương trình Hello World
Cách 1: Chế độ tương tác (Interactive Mode)
>>> print("Hello World!")
Hello World!
Cách 2: Chạy từ file
Tạo file hello.py:
# Đây là chương trình đầu tiên
message = "Hello World!"
print(message)
Chạy chương trình:
python hello.py
Kết quả:
Hello World!
1.4. Các công cụ lập trình Python
IDLE (Python's Integrated Development Environment)
- Có sẵn khi cài đặt Python
- Giao diện đơn giản, dễ sử dụng
- Hỗ trợ highlight syntax
Visual Studio Code (VS Code)
- Editor mạnh mẽ, nhiều extension
- Debugging tích hợp
- Hỗ trợ nhiều ngôn ngữ
PyCharm
- IDE chuyên cho Python
- Nhiều tính năng nâng cao
- Phiên bản Community miễn phí
2.1. Định danh (Identifier) trong Python
Định nghĩa: Định danh là tên dùng để nhận diện biến, hàm, lớp, đối tượng.
Quy tắc đặt tên định danh:
# ĐÚNG - Bắt đầu bằng chữ cái*
ten_bien = "giá trị"
_bien_rieng = "private"
bien123 = 100
# SAI - Không hợp lệ
2ten = "value" # Bắt đầu bằng số
ten-bien = "value" # Chứa ký tự đặc biệt
class = "Python" # Trùng từ khóa
Quy ước đặt tên:
# Biến thông thường (snake_case)
ten_bien_dai = "snake_case"
# Hằng số (UPPER_CASE)
HANG_SO_PI = 3.14
MAX_SIZE = 100
# Biến private
_bien_rieng_tu = "internal"
__bien_rat_rieng = "very private"
# Tên đặc biệt (dunder methods)
__init__ = "constructor"
__name__ = "module name"
2.2. Từ khóa trong Python
Danh sách đầy đủ các từ khóa:
# Các từ khóa cơ bản
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise
Kiểm tra từ khóa:
import keyword
print("Tổng số từ khóa:", len(keyword.kwlist))
print("Danh sách từ khóa:")
for i, kw in enumerate(keyword.kwlist, 1):
print(f"{i:2d}. {kw}")
Kết quả:
Tổng số từ khóa: 35
Danh sách từ khóa:
1. False
2. None
3. True
4. and
5. as
6. assert
7. async
8. await
9. break
10. class
11. continue
12. def
13. del
14. elif
15. else
16. except
17. finally
18. for
19. from
20. global
21. if
22. import
23. in
24. is
25. lambda
26. nonlocal
27. not
28. or
29. pass
30. raise
31. return
32. try
33. while
34. with
35. yield
3.1. Dòng lệnh và thụt lề
Quy tắc thụt lề:
# ĐÚNG - Thụt lề 4 spaces
def hello():
print("Hello") # 4 spaces
return "World" # 4 spaces
# SAI - Không thụt lề
def hello():
print("Hello") # Lỗi: expected an indented block
# SAI - Thụt lề không nhất quán
def hello():
print("Hello") # 4 spaces
return "World" # 2 spaces - Lỗi
Ví dụ về cấu trúc khối code:
# Khối code với thụt lề hợp lệ
def tinh_toan(a, b):
ket_qua = a + b # Thụt lề 4 spaces
return ket_qua # Thụt lề 4 spaces
# Gọi hàm
tinh_toan(5, 3)
3.2. Các lệnh trên nhiều dòng
Sử dụng dấu \ cho các biểu thức dài:
# Phép tính dài trên nhiều dòng
tong = (so_thu_nhat +
so_thu_hai +
so_thu_ba +
so_thu_tu)
# Hoặc sử dụng dấu \
tong = so_thu_nhat + \
so_thu_hai + \
so_thu_ba + \
so_thu_tu
Không cần \ với các cấu trúc container:
# List trên nhiều dòng*
danh_sach = [
"item1",
"item2",
"item3",
"item4"
]
# Dictionary trên nhiều dòng
sinh_vien = {
"ten": "Nguyễn Văn A",
"tuoi": 20,
"diem": 8.5,
"lop": "CNTT"
}
# Tuple trên nhiều dòng
coordinates = (
10.123456,
106.654321,
15.000000
)
3.3. Comment trong Python
Comment một dòng:
# Đây là comment một dòng
gia_tri = 100 # Comment sau code
# Comment giải thích code phức tạp
# Tính tổng các số từ 1 đến n
# Sử dụng công thức n\*(n+1)/2
tong = n * (n + 1) // 2
Comment nhiều dòng:
"""
ĐÂY LÀ COMMENT NHIỀU DÒNG
Chương trình: Quản lý sinh viên
Tác giả: Nguyễn Văn A
Ngày tạo: 2024-01-01
Phiên bản: 1.0
"""
# Hoặc sử dụng nhiều comment một dòng
# ===============================
# CHƯƠNG TRÌNH QUẢN LÝ SINH VIÊN
# Tác giả: Nguyễn Văn A
# Ngày tạo: 2024-01-01
# ===============================
Docstring - Comment đặc biệt cho hàm:
# Hàm tính bình phương với Docstring
def tinh_binh_phuong(x):
"""
Tính bình phương của một số
Args:
x (int/float): Số cần tính bình phương
Returns:
int/float: Bình phương của x
Ví dụ:
>>> tinh_binh_phuong(5)
25
>>> tinh_binh_phuong(2.5)
6.25
"""
return x ** 2
# Xem docstring
print(tinh_binh_phuong.__doc__)
4.1. Biến trong Python
Khái niệm: Biến là vùng nhớ dùng để lưu trữ dữ liệu.
Khai báo biến:
# Khai báo biến đơn
ten = "Nguyễn Văn A"
tuoi = 20
diem_trung_binh = 8.5
la_sinh_vien = True
print("Tên:", ten)
print("Tuổi:", tuoi)
print("Điểm TB:", diem_trung_binh)
print("Là sinh viên:", la_sinh_vien)
Kiểu động (Dynamic Typing):
# Biến có thể thay đổi kiểu dữ liệu
bien_linh_hoat = 10 # int
print(type(bien_linh_hoat)) # <class 'int'>
bien_linh_hoat = "Hello" # str
print(type(bien_linh_hoat)) # <class 'str'>
bien_linh_hoat = 3.14 # float
print(type(bien_linh_hoat)) # <class 'float'>
4.2. Phép gán
Gán đơn:
a = 10
b = 20.5
c = "Python"
d = True
Đa gán (Multiple Assignment):
# Gán một giá trị cho nhiều biến
x = y = z = 100
print(f"x={x}, y={y}, z={z}") # x=100, y=100, z=100
# Gán nhiều giá trị cho nhiều biến
a, b, c = 5, 10, 15
print(f"a={a}, b={b}, c={c}") # a=5, b=10, c=15
# Hoán đổi giá trị
x, y = 10, 20
x, y = y, x # Hoán đổi
print(f"x={x}, y={y}") # x=20, y=10
4.3. Các kiểu dữ liệu cơ bản
Các kiểu dữ liệu cơ bản trong Python bao gồm:
-
Number (Số): int, float, complex
-
String (Chuỗi): str
-
List (Danh sách): list
-
Tuple (Bộ): tuple
-
Dictionary (Từ điển): dict
-
Set (Tập hợp): set
-
Boolean (Logic): bool
Kiểm tra kiểu dữ liệu:
# Các biến với kiểu dữ liệu khác nhau
so_nguyen = 42
so_thuc = 3.14159
chuoi = "Hello Python"
danh_sach = [1, 2, 3]
bo_gia_tri = (1, 2, 3)
tu_dien = {"tên": "Alice", "tuổi": 25}
tap_hop = {1, 2, 3}
la_dung = True
print(f"so_nguyen: {so_nguyen} - {type(so_nguyen)}")
print(f"so_thuc: {so_thuc} - {type(so_thuc)}")
print(f"chuoi: {chuoi} - {type(chuoi)}")
print(f"danh_sach: {danh_sach} - {type(danh_sach)}")
print(f"bo_gia_tri: {bo_gia_tri} - {type(bo_gia_tri)}")
print(f"tu_dien: {tu_dien} - {type(tu_dien)}")
print(f"tap_hop: {tap_hop} - {type(tap_hop)}")
print(f"la_dung: {la_dung} - {type(la_dung)}")
Kết quả:
so_nguyen: 42 - <class 'int'>
so_thuc: 3.14159 - <class 'float'>
chuoi: Hello Python - <class 'str'>
danh_sach: [1, 2, 3] - <class 'list'>
bo_gia_tri: (1, 2, 3) - <class 'tuple'>
tu_dien: {'tên': 'Alice', 'tuổi': 25} - <class 'dict'>
tap_hop: {1, 2, 3} - <class 'set'>
la_dung: True - <class 'bool'>
5.1. Toán tử số học (Arithmetic Operators)
a = 10
b = 3
print("=== TOÁN TỬ SỐ HỌC ===")
print(f"{a} + {b} = {a + b}") # 13 - Cộng
print(f"{a} - {b} = {a - b}") # 7 - Trừ
print(f"{a} * {b} = {a * b}") # 30 - Nhân
print(f"{a} / {b} = {a / b}") # 3.333... - Chia thường
print(f"{a} // {b} = {a // b}") # 3 - Chia nguyên
print(f"{a} % {b} = {a % b}") # 1 - Chia lấy dư
print(f"{a} ** {b} = {a ** b}") # 1000 - Lũy thừa
Toán tử trên chuỗi:
chuoi = "Python"
print(chuoi * 3) # PythonPythonPython
print("Hello " + chuoi) # Hello Python
5.2. Toán tử so sánh (Comparison Operators)
x = 10
y = 5
print("=== TOÁN TỬ SO SÁNH ===")
print(f"{x} == {y}: {x == y}") # False - Bằng
print(f"{x} != {y}: {x != y}") # True - Khác
print(f"{x} > {y}: {x > y}") # True - Lớn hơn
print(f"{x} < {y}: {x < y}") # False - Nhỏ hơn
print(f"{x} >= {y}: {x >= y}") # True - Lớn hơn hoặc bằng
print(f"{x} <= {y}: {x <= y}") # False - Nhỏ hơn hoặc bằng
So sánh chuỗi:
print("apple" == "apple") # True
print("apple" == "banana") # False
print("a" < "b") # True (so sánh theo thứ tự alphabet)
5.3. Toán tử gán (Assignment Operators)
a = 10
print(f"Khởi tạo: a = {a}")
a += 5 # a = a + 5
print(f"Sau a += 5: a = {a}")
a -= 3 # a = a - 3
print(f"Sau a -= 3: a = {a}")
a *= 2 # a = a * 2
print(f"Sau a *= 2: a = {a}")
a /= 4 # a = a / 4
print(f"Sau a /= 4: a = {a}")
a //= 2 # a = a // 2
print(f"Sau a //= 2: a = {a}")
a %= 3 # a = a % 3
print(f"Sau a %= 3: a = {a}")
a **= 3 # a = a ** 3
print(f"Sau a **= 3: a = {a}")
5.4. Toán tử logic (Logical Operators)
x = True
y = False
print("=== TOÁN TỬ LOGIC ===")
print(f"{x} and {y}: {x and y}") # False - VÀ (cả hai đều True)
print(f"{x} or {y}: {x or y}") # True - HOẶC (một trong hai True)
print(f"not {x}: {not x}") # False - PHỦ ĐỊNH
print(f"not {y}: {not y}") # True - PHỦ ĐỊNH
Ứng dụng thực tế:
diem_toan = 8
diem_van = 6
# Kiểm tra điều kiện
dat_chuan = (diem_toan >= 5) and (diem_van >= 5)
hoc_sinh_gioi = (diem_toan >= 8) or (diem_van >= 8)
print(f"Đạt chuẩn: {dat_chuan}") # True
print(f"Học sinh giỏi: {hoc_sinh_gioi}") # True
5.5. Toán tử membership (in, not in)
chuoi = "Hello Python"
danh_sach = [1, 2, 3, 4, 5]
print("=== TOÁN TỬ MEMBERSHIP ===")
print(f"'H' in '{chuoi}': {'H' in chuoi}") # True
print(f"'Z' in '{chuoi}': {'Z' in chuoi}") # False
print(f"3 in {danh_sach}: {3 in danh_sach}") # True
print(f"10 in {danh_sach}: {10 in danh_sach}") # False
print(f"10 not in {danh_sach}: {10 not in danh_sach}") # True
5.6. Toán tử identity (is, is not)
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print("=== TOÁN TỬ IDENTITY ===")
print(f"a is b: {a is b}") # False - Khác đối tượng
print(f"a is c: {a is c}") # True - Cùng đối tượng
print(f"a == b: {a == b}") # True - Giá trị giống nhau
print(f"a is not b: {a is not b}") # True