Bài tập Hàm (Function)
Chủ đề:
def, tham số, giá trị mặc định,*args,**kwargs,return, hàm đệ quy, lambda.
Phần 1 – Trắc Nghiệm
Câu 1. Hàm sau trả về giá trị gì?
def tinh(a, b=5):
return a + b
print(tinh(3))
- A.
3 - B.
5 - C.
8 - D. Lỗi
Câu 2. lambda x: x * x tương đương với hàm nào?
- A.
def f(x): x * x - B.
def f(x): return x * x - C.
def f(): return x * x - D. Không có hàm tương đương
Câu 3. Kết quả của đoạn code sau?
def dem(*args):
return len(args)
print(dem(1, 2, 3, 4, 5))
- A.
args - B.
5 - C.
(1, 2, 3, 4, 5) - D. Lỗi
Phần 2 – Điền Khuyết
Bài 1. Điền để hoàn thành hàm tính giai thừa đệ quy:
def giai_thua(n):
if n ___ 1:
return 1
return n * giai_thua(___)
print(giai_thua(5)) # 120
Đáp án
def giai_thua(n):
if n <= 1:
return 1
return n * giai_thua(n - 1)
Phần 3 – Lập Trình Thực Hành
Bài 1 – Tính diện tích các hình
Viết các hàm tính diện tích: hình tròn, hình chữ nhật, hình tam giác.
Đáp án mẫu
import math
def dien_tich_hinh_tron(r):
return math.pi * r ** 2
def dien_tich_hinh_chu_nhat(dai, rong):
return dai * rong
def dien_tich_tam_giac(day, chieu_cao):
return 0.5 * day * chieu_cao
r = float(input("Bán kính: "))
print(f"Diện tích hình tròn: {dien_tich_hinh_tron(r):.2f}")
d, r2 = map(float, input("Chiều dài, chiều rộng: ").split())
print(f"Diện tích hình chữ nhật: {dien_tich_hinh_chu_nhat(d, r2):.2f}")
day, cao = map(float, input("Đáy, chiều cao: ").split())
print(f"Diện tích tam giác: {dien_tich_tam_giac(day, cao):.2f}")
Bài 2 – Kiểm tra palindrome
Viết hàm kiểm tra chuỗi có phải palindrome (đọc xuôi ngược như nhau) không.
Ví dụ: "racecar", "level", "121" là palindrome.
Đáp án mẫu
def la_palindrome(s):
s = s.lower().replace(" ", "")
return s == s[::-1]
chuoi = input("Nhập chuỗi: ")
if la_palindrome(chuoi):
print(f'"{chuoi}" là palindrome ')
else:
print(f'"{chuoi}" không phải palindrome ')
Bài 3 – Đệ quy: dãy Fibonacci
Viết hàm đệ quy tính số Fibonacci thứ n.
Lưu ý: Thêm bộ nhớ đệm (memoization) để tối ưu hiệu suất.
Đáp án mẫu
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
n = int(input("Tính Fibonacci thứ n (n = ): "))
print(f"Fibonacci({n}) = {fib(n)}")
Bài 4 – Máy tính đơn giản
Viết trình máy tính với các hàm: cong, tru, nhan, chia. Người dùng chọn phép tính.
Đáp án mẫu
def cong(a, b): return a + b
def tru(a, b): return a - b
def nhan(a, b): return a * b
def chia(a, b): return a / b if b != 0 else "Lỗi: Chia cho 0"
phep_tinh = {'+': cong, '-': tru, '*': nhan, '/': chia}
a = float(input("Nhập số a: "))
toan_tu = input("Nhập phép tính (+, -, *, /): ")
b = float(input("Nhập số b: "))
if toan_tu in phep_tinh:
ket_qua = phep_tinh[toan_tu](a, b)
print(f"Kết quả: {a} {toan_tu} {b} = {ket_qua}")
else:
print("Phép tính không hợp lệ!")
Tiếp theo: 5 – List & Dictionary