1. Khởi động (Engagement)
Các chương trình giải những bài toán thực tế phức tạp thường có rất nhiều dòng lệnh, trong đó có không ít những khối lệnh tương ứng với một số thao tác được lặp đi lặp lại nhiều lần ở những vị trí khác nhau. Để đỡ công viết đi viết lại các khối lệnh đó, trong tổ chức chương trình viết bằng ngôn ngữ lập trình bậc cao, người ta thường gom các khối lệnh như vậy thành những chương trình con.
💡 Câu hỏi suy ngẫm: Em có thể kể tên một số hàm trong số các lệnh đã học hay không? Các hàm đó có những đặc điểm chung gì?
Trong Python, các hàm chính là các chương trình con. Khi đó, trong chương trình người ta chỉ cần thay cả khối lệnh bằng một lệnh gọi chương trình con tương ứng.
2. Hình thành kiến thức (Knowledge)
1. Một số hàm thiết kế sẵn của Python
Quan sát một số câu lệnh trong bảng sau và cho biết những câu lệnh này có điểm chung gì:
| abs() | len() | range() | bool() | float() |
|---|---|---|---|---|
| list() | round() | chr() | input() | ord() |
| str() | divmod() | int() | print() | type() |
Điểm chung:
- Về hình thức, các lệnh trên đều có các dấu mở đóng ngoặc đi sau tên lệnh
- Bên trong các dấu ngoặc, nói chung, có thể cần ghi thêm các tham số là các đại lượng, các biến hoặc thậm chí cả các biểu thức
Ví dụ:
- Lệnh
print("Thời khoá biểu")thực hiện việc in xâu kí tự "Thời khoá biểu" trong dấu ngoặc ra màn hình - Lệnh
x = int("52")chuyển xâu "52" thành số nguyên 52 - Lệnh
type(y)trả lại kiểu dữ liệu của biến y
Trong một số trường hợp bên trong dấu ngoặc có thể bỏ trống. Ví dụ, lệnh x = input() thực hiện yêu cầu nhập vào một xâu kí tự bất kì và gán cho biến x.
Các lệnh trên chính là các chương trình con được thiết kế sẵn của Python, cho phép người dùng tuỳ ý sử dụng trong các chương trình của riêng mình.
Trong các ví dụ trên, xâu kí tự bên trong ngoặc của các hàm int() và print() là tham số của hàm.
Cú pháp câu lệnh gọi hàm trong Python:
2. Thiết lập các hàm tự định nghĩa
Ngoài các hàm thiết kế sẵn, Python còn cho phép người dùng tự thiết lập các hàm của riêng mình (còn gọi là các hàm tự định nghĩa).
a) Cú pháp định nghĩa hàm
Hàm trong Python được định nghĩa bằng từ khoá def, theo sau là tên hàm (tên hàm sẽ theo quy tắc đặt tên định danh). Hàm có thể có hoặc không có tham số. Khối lệnh mô tả hàm được viết sau dấu ":" và viết lùi vào, thẳng hàng. Hàm có thể có hoặc không có giá trị trả lại sau từ khoá return.
Cú pháp thiết lập hàm có trả lại giá trị:
Cần có lệnh return <giá_trị_trả_về>. Hàm sẽ kết thúc khi gặp lệnh return.
b) Ví dụ về hàm
Ví dụ 1: Hàm có trả lại giá trị
Ví dụ 2: Hàm không trả lại giá trị
3. Mô tả tham số và giá trị trả lại của các hàm
float(): Chuyển đổi tham số thành số thực
- Tham số: số hoặc xâu có thể chuyển thành số thực
- Giá trị trả lại: số thực tương ứng
str(): Chuyển đổi tham số thành xâu kí tự
- Tham số: bất kỳ đối tượng nào
- Giá trị trả lại: xâu kí tự biểu diễn đối tượng đó
len(): Tính độ dài của đối tượng
- Tham số: xâu, danh sách, tuple...
- Giá trị trả lại: số nguyên là độ dài
list(): Chuyển đổi thành danh sách
- Tham số: đối tượng có thể lặp được
- Giá trị trả lại: danh sách các phần tử
3. Luyện tập (Practice)
Bài tập thực hành
Bài tập 1:
Mô tả tham số và giá trị trả lại của mỗi hàm sau:
float()str()len()list()
Bài tập 2:
Viết hàm tinh_tong(a, b) trả về tổng hai số a và b.
Gợi ý:
Bài tập 3:
Viết hàm in_thong_bao(tin_nhan) không trả về giá trị, chỉ in ra thông báo.
Gợi ý:
Bài tập 4:
Viết hàm kiem_tra_chan_le(n) trả về "Chẵn" nếu n là số chẵn, "Lẻ" nếu n là số lẻ.
Gợi ý:
Thực hành tại máy:
Viết chương trình sử dụng các hàm đã viết ở trên để giải bài toán:
- Nhập hai số, tính tổng bằng hàm
tinh_tong() - Kiểm tra kết quả là chẵn hay lẻ bằng hàm
kiem_tra_chan_le() - In thông báo kết quả bằng hàm
in_thong_bao()
4. Vận dụng (Application)
Bài tập vận dụng
Bài tập 1: Hàm tính diện tích hình tròn
Viết hàm dien_tich_hinh_tron(ban_kinh) tính và trả về diện tích hình tròn với công thức S = π × r².
Gợi ý:
Bài tập 2: Hàm kiểm tra số nguyên tố
Viết hàm la_so_nguyen_to(n) trả về True nếu n là số nguyên tố, False nếu không phải.
Gợi ý:
Bài tập 3: Hàm đổi nhiệt độ
Viết hàm doi_do_C_sang_F(do_C) chuyển đổi từ độ C sang độ F theo công thức: F = (C × 9/5) + 32.
Gợi ý:
Thảo luận:
- Lợi ích của việc sử dụng hàm trong lập trình là gì?
- Khi nào nên viết hàm có trả về giá trị, khi nào nên viết hàm không trả về giá trị?
- Tại sao nên đặt tên hàm có ý nghĩa rõ ràng?
Ghi nhớ kiến thức 🎯
- ✅ def là từ khóa định nghĩa hàm trong Python.
- ✅ Hàm có thể có hoặc không có tham số.
- ✅ return dùng để trả về giá trị từ hàm.
- ✅ Hàm không có return thì trả về None.
- ✅ Hàm giúp tái sử dụng mã và làm chương trình gọn gàng hơn.
- ✅ Tên hàm nên có ý nghĩa và tuân theo quy tắc đặt tên.