Skip to content

🏷️ 4.1 Khai báo biến

📖 Giới thiệu

Biến (variable) là "hộp chứa" để lưu trữ dữ liệu trong chương trình. Hiểu cách khai báo và sử dụng biến là bước đầu tiên để thành thạo lập trình Python.

Mục tiêu bài học:

  • Hiểu khái niệm biến và cách hoạt động
  • Biết cách khai báo biến đúng cách
  • Nắm vững quy tắc đặt tên biến
  • Hiểu về phạm vi biến (scope)

🔧 Cú pháp

Cú pháp khai báo biến:

python
ten_bien = gia_tri

Các cách khai báo:

python
# 1. Khai báo đơn giản
ten = "Python"
tuoi = 25

# 2. Khai báo nhiều biến cùng lúc
a, b, c = 1, 2, 3

# 3. Gán cùng giá trị cho nhiều biến
x = y = z = 0

# 4. Hoán đổi giá trị
a, b = b, a

🔬 Phân tích & Giải thích chi tiết

1. 🎯 Biến là gì?

Khái niệm:

  • Biến là tên gọi cho một vùng nhớ lưu trữ dữ liệu
  • Python tự động quản lý bộ nhớ (không cần khai báo kiểu)
  • Biến có thể thay đổi giá trị trong quá trình chạy

Ví dụ minh họa:

python
# Tạo biến - như dán nhãn lên hộp
ten = "Minh"        # Hộp có nhãn "ten" chứa "Minh"
tuoi = 20           # Hộp có nhãn "tuoi" chứa 20

# Thay đổi giá trị - thay nội dung hộp
tuoi = 21           # Bây giờ hộp "tuoi" chứa 21

2. 📋 Quy tắc đặt tên biến

Quy tắc bắt buộc:

python
# ✅ Đúng
ten = "Python"
age_2024 = 25
_temp = 100
userName = "admin"

# ❌ Sai
2age = 25           # Không bắt đầu bằng số
user-name = "admin" # Không dùng dấu gạch ngang
class = "12A"       # Không dùng từ khóa Python

Quy tắc khuyến nghị:

python
# ✅ Tốt - snake_case (Python style)
ten_hoc_sinh = "Minh"
diem_trung_binh = 8.5
so_dien_thoai = "0123456789"

# ⚠️ Được nhưng không khuyến khích
tenHocSinh = "Minh"      # camelCase
TenHocSinh = "Minh"      # PascalCase

Tên biến có nghĩa:

python
# ✅ Tốt - tên có nghĩa
luong_co_ban = 5000000
so_nam_kinh_nghiem = 3
email_khach_hang = "customer@email.com"

# ❌ Không tốt - tên không có nghĩa
x = 5000000          # x là gì?
data = 3             # data gì?
s = "customer@email.com"  # s là gì?

3. 🔄 Gán và thay đổi giá trị

python
# Gán giá trị ban đầu
diem_toan = 8.0
print(diem_toan)     # 8.0

# Thay đổi giá trị
diem_toan = 8.5
print(diem_toan)     # 8.5

# Thay đổi dựa trên giá trị cũ
diem_toan = diem_toan + 0.5
print(diem_toan)     # 9.0

# Viết tắt
diem_toan += 0.5     # Tương đương diem_toan = diem_toan + 0.5
print(diem_toan)     # 9.5

4. 📚 Các cách khai báo nâng cao

Khai báo nhiều biến:

python
# Cách 1: Từng dòng
ho = "Nguyễn"
ten = "Minh"
tuoi = 20

# Cách 2: Cùng một dòng
ho, ten, tuoi = "Nguyễn", "Minh", 20

# Cách 3: Từ list
thong_tin = ["Nguyễn", "Minh", 20]
ho, ten, tuoi = thong_tin

Hoán đổi giá trị:

python
# Cách truyền thống (ngôn ngữ khác)
# temp = a
# a = b  
# b = temp

# Cách Python - Elegant!
a = 5
b = 10
a, b = b, a        # Hoán đổi trong 1 dòng
print(a, b)        # 10 5

5. 🎯 Phạm vi biến (Variable Scope)

python
# Biến toàn cục (global)
ten_truong = "THPT Nguyễn Huệ"

def thong_tin_hoc_sinh():
    # Biến cục bộ (local)
    ten_hoc_sinh = "Minh"
    lop = "12A1"
    
    # Có thể dùng biến toàn cục
    print(f"Học sinh {ten_hoc_sinh} học tại {ten_truong}")
    
    return ten_hoc_sinh

# Gọi function
hoc_sinh = thong_tin_hoc_sinh()
print(hoc_sinh)           # "Minh"

# Lỗi! Biến cục bộ không truy cập được từ ngoài
# print(ten_hoc_sinh)     # NameError

💻 Ví dụ minh họa

Ví dụ 1: Quản lý thông tin học sinh

python
# Chương trình quản lý thông tin một học sinh
print("=== NHẬP THÔNG TIN HỌC SINH ===")

# Nhập thông tin cơ bản
ho_dem = input("Họ và tên đệm: ")
ten = input("Tên: ")
nam_sinh = int(input("Năm sinh: "))

# Tính tuổi
nam_hien_tai = 2024
tuoi = nam_hien_tai - nam_sinh

# Nhập điểm số
print("\nNhập điểm các môn:")
diem_toan = float(input("Toán: "))
diem_ly = float(input("Lý: "))
diem_hoa = float(input("Hóa: "))

# Tính điểm trung bình
tong_diem = diem_toan + diem_ly + diem_hoa
so_mon = 3
diem_trung_binh = tong_diem / so_mon

# Xác định xếp loại
if diem_trung_binh >= 8.0:
    xep_loai = "Giỏi"
    emoji = "🏆"
elif diem_trung_binh >= 6.5:
    xep_loai = "Khá"
    emoji = "👍"
elif diem_trung_binh >= 5.0:
    xep_loai = "Trung bình"
    emoji = "📚"
else:
    xep_loai = "Yếu"
    emoji = "💪"

# Hiển thị kết quả
print("\n" + "=" * 40)
print("THÔNG TIN HỌC SINH")
print("=" * 40)
print(f"Họ tên: {ho_dem} {ten}")
print(f"Tuổi: {tuoi}")
print(f"Điểm TB: {diem_trung_binh:.2f}")
print(f"Xếp loại: {emoji} {xep_loai}")

Ví dụ 2: Tính toán lương nhân viên

python
# Chương trình tính lương nhân viên
print("=== TÍNH LƯƠNG NHÂN VIÊN ===\n")

# Thông tin cơ bản
ten_nhan_vien = input("Tên nhân viên: ")
chuc_vu = input("Chức vụ: ")

# Thông tin lương
luong_co_ban = float(input("Lương cơ bản (VNĐ): "))
so_ngay_lam = int(input("Số ngày làm việc trong tháng: "))
so_ngay_chuan = 22  # Số ngày làm việc chuẩn

# Tính các khoản
# Lương theo ngày làm việc
luong_thuc_te = luong_co_ban * (so_ngay_lam / so_ngay_chuan)

# Phụ cấp
if chuc_vu.lower() == "trưởng phòng":
    phu_cap = 2000000
elif chuc_vu.lower() == "phó phòng":
    phu_cap = 1000000
else:
    phu_cap = 0

# Thưởng chuyên cần
if so_ngay_lam >= so_ngay_chuan:
    thuong_chuyen_can = luong_co_ban * 0.1  # 10% lương cơ bản
else:
    thuong_chuyen_can = 0

# Tổng lương
tong_luong = luong_thuc_te + phu_cap + thuong_chuyen_can

# Thuế thu nhập (giả định đơn giản)
if tong_luong > 11000000:
    thue = tong_luong * 0.1  # 10%
else:
    thue = 0

# Lương thực nhận
luong_thuc_nhan = tong_luong - thue

# Hiển thị bảng lương
print("\n" + "=" * 45)
print("BẢNG LƯƠNG THÁNG")
print("=" * 45)
print(f"Nhân viên: {ten_nhan_vien}")
print(f"Chức vụ: {chuc_vu}")
print("-" * 45)
print(f"Lương cơ bản:        {luong_co_ban:>12,.0f} VNĐ")
print(f"Lương thực tế:       {luong_thuc_te:>12,.0f} VNĐ")
print(f"Phụ cấp chức vụ:     {phu_cap:>12,.0f} VNĐ")
print(f"Thưởng chuyên cần:   {thuong_chuyen_can:>12,.0f} VNĐ")
print("-" * 45)
print(f"Tổng lương:          {tong_luong:>12,.0f} VNĐ")
print(f"Thuế TNCN:           {thue:>12,.0f} VNĐ")
print("=" * 45)
print(f"LƯƠNG THỰC NHẬN:     {luong_thuc_nhan:>12,.0f} VNĐ")
print("=" * 45)

Ví dụ 3: Hoán đổi và manipulate biến

python
# Demo các thao tác với biến
print("=== DEMO THAO TÁC BIẾN ===\n")

# 1. Khai báo và gán giá trị
print("1. Khai báo biến:")
a = 10
b = 20
print(f"   a = {a}, b = {b}")

# 2. Hoán đổi giá trị
print("\n2. Hoán đổi giá trị:")
print(f"   Trước: a = {a}, b = {b}")
a, b = b, a
print(f"   Sau:   a = {a}, b = {b}")

# 3. Khai báo nhiều biến cùng lúc
print("\n3. Khai báo nhiều biến:")
x, y, z = 1, 2, 3
print(f"   x = {x}, y = {y}, z = {z}")

# 4. Gán cùng giá trị cho nhiều biến
print("\n4. Gán cùng giá trị:")
m = n = p = 0
print(f"   m = {m}, n = {n}, p = {p}")

# 5. Cập nhật giá trị
print("\n5. Cập nhật giá trị:")
diem = 8.0
print(f"   Điểm ban đầu: {diem}")

diem += 0.5  # Tương đương: diem = diem + 0.5
print(f"   Sau khi cộng 0.5: {diem}")

diem *= 1.1  # Tương đương: diem = diem * 1.1
print(f"   Sau khi nhân 1.1: {diem:.2f}")

# 6. Kiểm tra kiểu dữ liệu
print("\n6. Kiểm tra kiểu dữ liệu:")
ten = "Python"
tuoi = 30
diem = 9.5
la_hoc_sinh = True

print(f"   {ten} có kiểu: {type(ten)}")
print(f"   {tuoi} có kiểu: {type(tuoi)}")
print(f"   {diem} có kiểu: {type(diem)}")
print(f"   {la_hoc_sinh} có kiểu: {type(la_hoc_sinh)}")

🏋️ Thực hành

Bài tập 1: Khai báo biến cơ bản

Khai báo biến cho thông tin cá nhân của bạn:

python
# TODO: Khai báo các biến sau với thông tin của bạn
# - Họ tên
# - Tuổi  
# - Thành phố
# - Email
# - Số điện thoại

# TODO: In ra tất cả thông tin

Đáp án:

python
ho_ten = "Nguyễn Văn An"
tuoi = 22
thanh_pho = "Hà Nội"
email = "van.an@email.com"
so_dien_thoai = "0123456789"

print(f"Họ tên: {ho_ten}")
print(f"Tuổi: {tuoi}")
print(f"Thành phố: {thanh_pho}")
print(f"Email: {email}")
print(f"Số điện thoại: {so_dien_thoai}")

Bài tập 2: Hoán đổi giá trị

Cho hai biến, hãy hoán đổi giá trị của chúng:

python
# Cho trước
so_thu_nhat = 100
so_thu_hai = 200

print(f"Trước: {so_thu_nhat}, {so_thu_hai}")

# TODO: Hoán đổi giá trị
# Viết code hoán đổi ở đây

print(f"Sau: {so_thu_nhat}, {so_thu_hai}")
# Kết quả mong muốn: Sau: 200, 100

Đáp án:

python
so_thu_nhat = 100
so_thu_hai = 200

print(f"Trước: {so_thu_nhat}, {so_thu_hai}")

# Hoán đổi
so_thu_nhat, so_thu_hai = so_thu_hai, so_thu_nhat

print(f"Sau: {so_thu_nhat}, {so_thu_hai}")

Bài tập 3: Tính toán với biến

Viết chương trình tính diện tích hình chữ nhật:

python
# TODO: Nhập chiều dài và chiều rộng
# TODO: Tính diện tích và chu vi
# TODO: Hiển thị kết quả đẹp mắt

Đáp án:

python
print("=== TÍNH DIỆN TÍCH HÌNH CHỮ NHẬT ===")

# Nhập dữ liệu
chieu_dai = float(input("Chiều dài (m): "))
chieu_rong = float(input("Chiều rộng (m): "))

# Tính toán
dien_tich = chieu_dai * chieu_rong
chu_vi = 2 * (chieu_dai + chieu_rong)

# Hiển thị kết quả
print(f"\nKết quả:")
print(f"Diện tích: {dien_tich:.2f} m²")
print(f"Chu vi: {chu_vi:.2f} m")

Bài tập 4: Kiểm tra tên biến

Biến nào sau đây hợp lệ? Sửa những biến không hợp lệ:

python
# TODO: Xác định biến nào hợp lệ, biến nào không
1_ten = "Python"        # ?
user-age = 25          # ?
_temp = 100            # ?
class = "12A"          # ?
userName = "admin"     # ?
tên_học_sinh = "Minh"  # ?

Đáp án:

python
# 1_ten = "Python"        # ❌ Sai - bắt đầu bằng số
ten_1 = "Python"          # ✅ Sửa

# user-age = 25          # ❌ Sai - dùng dấu gạch ngang  
user_age = 25             # ✅ Sửa

_temp = 100              # ✅ Đúng

# class = "12A"          # ❌ Sai - từ khóa Python
lop_hoc = "12A"          # ✅ Sửa

userName = "admin"       # ✅ Đúng (nhưng nên dùng snake_case)
user_name = "admin"      # ✅ Tốt hơn

# tên_học_sinh = "Minh"  # ✅ Đúng (Python hỗ trợ Unicode)
ten_hoc_sinh = "Minh"    # ✅ Tốt hơn (dùng ASCII)

📋 Tóm tắt

Những điều quan trọng về biến:

  1. 🎯 Khái niệm: Biến là tên gọi cho vùng nhớ lưu trữ dữ liệu

  2. 📋 Quy tắc đặt tên:

    • Bắt đầu bằng chữ cái hoặc dấu gạch dưới
    • Chỉ chứa chữ cái, số, dấu gạch dưới
    • Phân biệt hoa thường
    • Không dùng từ khóa Python
  3. 🎨 Convention Python:

    python
    # ✅ Khuyến nghị
    ten_hoc_sinh = "Minh"     # snake_case
    SO_PI = 3.14159           # CONSTANT
  4. 🔄 Thao tác cơ bản:

    python
    # Gán giá trị
    bien = gia_tri
    
    # Thay đổi
    bien = gia_tri_moi
    
    # Cập nhật
    bien += gia_tri_tang
    
    # Hoán đổi
    a, b = b, a
  5. 📚 Patterns thường dùng:

    python
    # Khai báo nhiều biến
    x, y, z = 1, 2, 3
    
    # Gán cùng giá trị
    a = b = c = 0
    
    # Unpacking
    thong_tin = ["Minh", 20, "Hà Nội"]
    ten, tuoi, thanh_pho = thong_tin

Chuẩn bị cho bài tiếp theo:

Bài tiếp theo sẽ học về 🔢 Kiểu số (int, float, complex) - các kiểu dữ liệu số trong Python và cách sử dụng chúng hiệu quả!


💡 Mẹo: Đặt tên biến có nghĩa giúp code dễ đọc và maintain. Tránh dùng a, b, c... cho các biến quan trọng!

🎯 Thực hành: Hãy thực hiện các bài tập để thành thạo việc khai báo và thao tác với biến!

🐍 Khóa học Python căn bản bằng tiếng Việt