BÀI 27: THAM SỐ CỦA HÀM
A. Yêu cầu cần đạt
- Hiểu cách thiết lập tham số của hàm và cách truyền giá trị qua đối số.
- Biết cách viết chương trình có sử dụng chương trình con.
B. Nội dung bài học
1. Tham số và đối số của hàm
Ví dụ: Cách truyền dữ liệu qua tham số
# Hàm f() có 3 tham số a, b, c
def f(a, b, c):
return a + b + c
# Gọi hàm với giá trị cụ thể
print(f(1, 2, 3)) # Kết quả: 6
# Sử dụng biến đã có giá trị
x, y, z = 10, 20, 5
print(f(x, y, z)) # Kết quả: 35
# Lỗi nếu biến chưa được định nghĩa
print(f(a, b, c)) # Lỗi: NameError: name 'a' is not defined
Ghi nhớ
- Tham số (parameter): Được định nghĩa khi khai báo hàm và hoạt động như biến bên trong hàm.
- Đối số (argument): Là giá trị được truyền vào hàm khi gọi hàm.
- Số lượng đối số truyền vào phải khớp với số tham số của hàm.
2. Cách sử dụng chương trình con
Ví dụ 1: Kiểm tra số nguyên tố bằng hàm
def prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
# Kiểm tra một số có phải số nguyên tố không
print(prime(5)) # Kết quả: True
print(prime(10)) # Kết quả: False
Ví dụ 2: Tính tổng các số dương trong danh sách
def tongduong(A):
return sum(x for x in A if x > 0)
B = [-1, 3, 5, -2, 8]
C = [0, -4, 7, 2, -3]
print(tongduong(B)) # Kết quả: 16
print(tongduong(C)) # Kết quả: 9
Tóm lại
- Chia bài toán lớn thành các bài toán nhỏ dễ quản lý hơn.
- Chương trình có cấu trúc rõ ràng, dễ bảo trì và mở rộng.
C. Củng cố - Vận dụng
Thực hành truyền giá trị cho đối số của hàm
Nhiệm vụ 1: Hàm tính tổng có điều kiện
def f_sum(A, b):
if b == 0:
return sum(A)
return sum(x for x in A if x > 0)
print(f_sum([1, -2, 3, 4], 0)) # Kết quả: 6
print(f_sum([1, -2, 3, 4], 1)) # Kết quả: 8
Nhiệm vụ 2: Hàm đếm số từ trong chuỗi
def f_dem(msg, sep):
return len(msg.split(sep))
print(f_dem("Mùa thu lịch sử", " ")) # Kết quả: 3
print(f_dem("Mùa thu lịch sử", " . ")) # Kết quả: 1
Nhiệm vụ 3: Hàm ghép hai chuỗi theo kiểu xen kẽ
def merge_str(s1, s2):
S = "".join(a + b for a, b in zip(s1, s2))
return S + s1[len(S)//2:] + s2[len(S)//2:]
print(merge_str("1111", "0000")) # Kết quả: "10101010"
TRẮC NGHIỆM
Chủ đề:
Tin Học 10