🔧 14.1 Khái niệm function cơ bản
📖 Giới thiệu
Function (hàm) là khối code được đặt tên để thực hiện một công việc cụ thể. Thay vì viết lại code nhiều lần, ta có thể tạo function để sử dụng lại, giúp code gọn gàng và dễ bảo trì hơn.
Mục tiêu bài học:
- Hiểu khái niệm và lợi ích của function
- Biết cách tạo và gọi function đơn giản
- Sử dụng function để tổ chức code tốt hơn
🔧 Cú pháp
Định nghĩa function:
python
def ten_ham():
# Code thực hiện công việc
print("Hello World")
# Gọi function
ten_ham()Function có tham số:
python
def chao(ten):
print(f"Xin chào {ten}!")
chao("An") # Gọi với tham sốFunction có return:
python
def cong(a, b):
ket_qua = a + b
return ket_qua
tong = cong(3, 5) # tong = 8🔬 Phân tích & Giải thích chi tiết
1. 📋 Function không tham số
python
def chao_hoi():
print("Xin chào!")
print("Chúc bạn học tốt!")
# Gọi function
chao_hoi()
chao_hoi() # Có thể gọi nhiều lần2. 📥 Function có tham số
python
def gioi_thieu(ten, tuoi):
print(f"Tôi tên {ten}")
print(f"Tôi {tuoi} tuổi")
# Gọi với các giá trị khác nhau
gioi_thieu("An", 16)
gioi_thieu("Bình", 17)3. 📤 Function có return
python
def tinh_diem_tb(toan, van):
tong = toan + van
trung_binh = tong / 2
return trung_binh
# Sử dụng kết quả trả về
diem_an = tinh_diem_tb(8, 7)
diem_binh = tinh_diem_tb(9, 6)
print(f"Điểm TB của An: {diem_an}")
print(f"Điểm TB của Bình: {diem_binh}")💻 Ví dụ minh họa
Ví dụ 1: Calculator đơn giản
python
def cong(a, b):
"""Cộng hai số"""
return a + b
def tru(a, b):
"""Trừ hai số"""
return a - b
def nhan(a, b):
"""Nhân hai số"""
return a * b
def chia(a, b):
"""Chia hai số"""
if b != 0:
return a / b
else:
return "Lỗi: Không chia được cho 0"
print("🧮 CALCULATOR ĐƠN GIẢN")
print("=" * 25)
# Test các phép tính
so1 = 10
so2 = 3
print(f"{so1} + {so2} = {cong(so1, so2)}")
print(f"{so1} - {so2} = {tru(so1, so2)}")
print(f"{so1} × {so2} = {nhan(so1, so2)}")
print(f"{so1} ÷ {so2} = {chia(so1, so2):.2f}")
# Test chia cho 0
print(f"{so1} ÷ 0 = {chia(so1, 0)}")Ví dụ 2: Xử lý chuỗi
python
def dem_ky_tu(chuoi):
"""Đếm số ký tự trong chuỗi"""
return len(chuoi)
def in_hoa(chuoi):
"""Chuyển thành chữ hoa"""
return chuoi.upper()
def in_thuong(chuoi):
"""Chuyển thành chữ thường"""
return chuoi.lower()
def dao_nguoc(chuoi):
"""Đảo ngược chuỗi"""
return chuoi[::-1]
print("📝 XỬ LÝ CHUỖI")
print("=" * 20)
ten = "Python"
print(f"Chuỗi gốc: {ten}")
print(f"Số ký tự: {dem_ky_tu(ten)}")
print(f"Chữ hoa: {in_hoa(ten)}")
print(f"Chữ thường: {in_thuong(ten)}")
print(f"Đảo ngược: {dao_nguoc(ten)}")
# Kết hợp nhiều function
chuoi_xu_ly = in_hoa(dao_nguoc(ten))
print(f"Đảo ngược + in hoa: {chuoi_xu_ly}")Ví dụ 3: Quản lý điểm số
python
def nhap_diem():
"""Nhập điểm từ bàn phím"""
toan = float(input("Điểm Toán: "))
van = float(input("Điểm Văn: "))
anh = float(input("Điểm Anh: "))
return toan, van, anh
def tinh_diem_tb(toan, van, anh):
"""Tính điểm trung bình"""
return (toan + van + anh) / 3
def xep_loai(diem_tb):
"""Xếp loại học lực"""
if diem_tb >= 8:
return "Giỏi"
elif diem_tb >= 6.5:
return "Khá"
elif diem_tb >= 5:
return "Trung bình"
else:
return "Yếu"
def hien_thi_ket_qua(ten, toan, van, anh, tb, loai):
"""Hiển thị kết quả"""
print(f"\n📊 KẾT QUẢ HỌC TẬP")
print("-" * 20)
print(f"Học sinh: {ten}")
print(f"Điểm Toán: {toan}")
print(f"Điểm Văn: {van}")
print(f"Điểm Anh: {anh}")
print(f"Điểm TB: {tb:.1f}")
print(f"Xếp loại: {loai}")
# Chương trình chính
print("📚 QUẢN LÝ ĐIỂM SỐ")
print("=" * 25)
ten_hs = input("Tên học sinh: ")
toan, van, anh = nhap_diem()
diem_tb = tinh_diem_tb(toan, van, anh)
hoc_luc = xep_loai(diem_tb)
hien_thi_ket_qua(ten_hs, toan, van, anh, diem_tb, hoc_luc)🏋️ Thực hành
Bài tập 1: Function chào hỏi
python
def chao(ten):
print(f"Xin chào {ten}!")
chao("Minh")
chao("Lan")Bài tập 2: Tính diện tích
python
def dien_tich_hinh_vuong(canh):
return canh * canh
def dien_tich_hinh_chu_nhat(dai, rong):
return dai * rong
# Test
print(f"Hình vuông cạnh 5: {dien_tich_hinh_vuong(5)}")
print(f"HCN 4x6: {dien_tich_hinh_chu_nhat(4, 6)}")Bài tập 3: Kiểm tra số chẵn lẻ
python
def kiem_tra_chan_le(so):
if so % 2 == 0:
return "chẵn"
else:
return "lẻ"
# Test
for i in [1, 2, 3, 4, 5]:
loai = kiem_tra_chan_le(i)
print(f"Số {i} là số {loai}")📋 Tóm tắt
Cấu trúc function:
python
def ten_function(tham_so):
"""Mô tả function"""
# Code xử lý
return ket_qua # (tuỳ chọn)Lợi ích của function:
- 🔄 Tái sử dụng: Viết 1 lần, dùng nhiều lần
- 🧹 Code sạch: Tách biệt các chức năng
- 🐛 Dễ debug: Tìm lỗi nhanh hơn
- 👥 Làm nhóm: Chia task dễ dàng
Các loại function:
| Loại | Ví dụ | Mục đích |
|---|---|---|
| Không tham số | def chao(): | Thực hiện công việc cố định |
| Có tham số | def chao(ten): | Xử lý dữ liệu đầu vào |
| Có return | def cong(a,b): | Trả về kết quả |
Quy tắc đặt tên:
- Dùng động từ:
tinh_tong,hien_thi - Rõ ràng:
tinh_diem_tbthay vìtinh - Snake_case:
ten_functionkhôngtenFunction - Không dùng từ khóa: Tránh
def,if,for...
Lưu ý quan trọng:
- Định nghĩa trước khi gọi: Function phải được def trước
- Indentation: Code trong function phải thụt vào
- return: Không bắt buộc, default là None
- Docstring: Mô tả function bằng """..."""
Chuẩn bị cho bài tiếp theo:
Bài tiếp theo sẽ học về 📥📤 Tham số và return nâng cao!
💡 Mẹo: Chia nhỏ bài toán thành các function đơn giản!
🔧 Thực hành: Thử viết function tính tuổi từ năm sinh!