Trắc nghiệm Tin học 11 Cánh diều KHMT bài 14 Thực hành về thư viện các hàm tự định nghĩa
1. Trong Python, hàm có thể trả về nhiều giá trị cùng một lúc hay không?
A. Không, chỉ có thể trả về một giá trị duy nhất.
B. Có, bằng cách trả về một tuple hoặc một danh sách chứa nhiều giá trị.
C. Có, bằng cách sử dụng nhiều câu lệnh "return" liên tiếp.
D. Chỉ khi sử dụng các kiểu dữ liệu phức tạp.
2. Trong Python, làm thế nào để định nghĩa một hàm có thể nhận vào một số lượng đối số tùy ý (variable-length arguments)?
A. Sử dụng từ khóa "args".
B. Sử dụng tiền tố "*" trước tên tham số (ví dụ: *args).
C. Sử dụng tiền tố "**" trước tên tham số (ví dụ: **kwargs).
D. Không thể định nghĩa hàm nhận số lượng đối số tùy ý.
3. Đâu là cú pháp đúng để định nghĩa một lambda function trong Python trả về tổng của hai số x và y?
A. lambda x, y: x + y
B. lambda (x, y): x + y
C. def lambda x, y: x + y
D. function x, y return x + y
4. Trong Python, làm thế nào để định nghĩa một hàm nhận vào các cặp khóa-giá trị tùy ý (keyword arguments)?
A. Sử dụng tiền tố "*" trước tên tham số.
B. Sử dụng tiền tố "**" trước tên tham số (ví dụ: **kwargs).
C. Sử dụng từ khóa "keyword".
D. Không thể định nghĩa hàm nhận các cặp khóa-giá trị tùy ý.
5. Đâu là cách viết đúng để định nghĩa một hàm không nhận tham số nào và không trả về giá trị nào?
A. def ham_rong():
B. def ham_rong
C. function ham_rong()
D. define ham_rong
6. Trong Python, bạn có thể định nghĩa một hàm mà không cần đặt tên cho nó (anonymous function). Hàm này thường được gọi là gì?
A. Function
B. Lambda function
C. Inline function
D. Subroutine
7. Điều gì xảy ra nếu bạn gọi một hàm với số lượng đối số không khớp với số lượng tham số đã định nghĩa trong hàm (trừ khi có đối số mặc định hoặc đối số biến đổi)?
A. Chương trình sẽ tự động điều chỉnh số lượng đối số.
B. Chương trình sẽ báo lỗi "TypeError".
C. Chương trình sẽ bỏ qua các đối số thừa.
D. Chương trình sẽ sử dụng giá trị mặc định cho các tham số thiếu.
8. Khi sử dụng `import math` trong Python, làm thế nào để gọi hàm tính căn bậc hai (square root) từ thư viện này?
A. math.sqrt(x)
B. sqrt(x)
C. math.square_root(x)
D. math.sqr(x)
9. Xét hàm Python sau:
def chao_mung(ten, loi_nhan="Chào bạn"):
print(f"{loi_nhan}, {ten}!")
Khi gọi hàm này với "ten" là "Alice", kết quả in ra màn hình là gì?
A. Chào bạn, Alice!
B. Alice
C. Chào, Alice!
D. Lỗi
10. Khi định nghĩa một hàm, việc sử dụng docstring (chuỗi tài liệu) nhằm mục đích gì?
A. Tăng hiệu suất thực thi của hàm.
B. Cung cấp mô tả về chức năng, tham số và giá trị trả về của hàm, giúp người dùng hiểu cách sử dụng.
C. Ép buộc người dùng nhập đúng kiểu dữ liệu cho tham số.
D. Ngăn chặn việc gọi hàm từ các module khác.
11. Khi một hàm trong Python không có câu lệnh "return" tường minh, nó sẽ trả về giá trị mặc định nào?
A. 0
B. None
C. True
D. False
12. Xét hàm Python sau:
def lap_lai(chuoi, so_lan):
return chuoi * so_lan
Khi gọi hàm này với "chuoi" là "abc" và "so_lan" là 3, kết quả trả về sẽ là gì?
A. "abcabcabc"
B. "abc"
C. "abc3"
D. Lỗi
13. Đâu là một ví dụ về việc định nghĩa hàm lồng nhau (nested function) trong Python?
A. def outer_func():
def inner_func():
print("Inner")
B. def outer_func(), inner_func()
C. def outer_func():
print("Outer")
def inner_func():
print("Inner")
D. def outer_func(inner_func):
14. Trong một hàm Python, câu lệnh "return" có chức năng gì?
A. Dừng thực thi hàm và không trả về giá trị nào.
B. Trả về một giá trị từ hàm về nơi gọi hàm và dừng thực thi hàm.
C. In giá trị ra màn hình.
D. Nhận giá trị từ người dùng nhập vào.
15. Khi bạn import một module bằng `from module import function`, bạn có thể gọi hàm trực tiếp bằng tên của nó mà không cần tiền tố tên module. Điều này giúp:
A. Giảm khả năng xung đột tên với các hàm khác.
B. Làm cho mã nguồn ngắn gọn hơn và truy cập hàm trực tiếp hơn.
C. Tăng bảo mật cho hàm được import.
D. Buộc phải import tất cả các hàm từ module đó.
16. Trong định nghĩa hàm, tham số có giá trị mặc định cho phép người dùng làm gì?
A. Bắt buộc phải cung cấp giá trị cho tham số đó khi gọi hàm.
B. Tùy chọn cung cấp giá trị cho tham số đó khi gọi hàm; nếu không, giá trị mặc định sẽ được sử dụng.
C. Chỉ có thể sử dụng giá trị mặc định.
D. Thay đổi giá trị mặc định của hàm.
17. Xét hàm Python sau:
def tinh_tong(a, b):
return a + b
Khi gọi hàm này với tham số là 5 và 3, giá trị trả về sẽ là bao nhiêu?
18. Đâu là cách chính xác để gọi hàm `pow(base, exp)` từ thư viện `math` để tính 2 mũ 3?
A. math.pow(2, 3)
B. pow(2, 3)
C. math.power(2, 3)
D. math.exponent(2, 3)
19. Trong lập trình Python, khi định nghĩa một hàm, từ khóa nào được sử dụng để bắt đầu khối định nghĩa hàm?
A. function
B. def
C. define
D. func
20. Đâu là cách gọi hàm `phan_tram` với đối số có tên (keyword argument) cho tham số `gia_tri` là 50 và `tong` là 200?
A. phan_tram(50, 200)
B. phan_tram(gia_tri=50, tong=200)
C. phan_tram(value=50, total=200)
D. phan_tram(200, 50)
21. Xét hàm Python sau:
def tim_max(a, b):
if a > b:
return a
else:
return b
Giá trị trả về của `tim_max(10, 20)` là gì?
A. 10
B. 20
C. Lỗi
D. None
22. Đâu là cách đúng để gọi một hàm đã định nghĩa trong Python?
A. function_name
B. function_name()
C. call function_name
D. run function_name
23. Đâu là lợi ích chính của việc sử dụng các hàm tự định nghĩa trong lập trình?
A. Tăng độ phức tạp của mã nguồn.
B. Giảm khả năng tái sử dụng mã, làm cho việc bảo trì khó khăn hơn.
C. Giúp tổ chức mã nguồn tốt hơn, dễ đọc, dễ hiểu và tái sử dụng.
D. Buộc phải sử dụng các thư viện bên ngoài.
24. Mục đích của việc sử dụng `if __name__ == "__main__":` trong một script Python là gì?
A. Để định nghĩa tất cả các hàm trong script.
B. Để đảm bảo rằng khối mã chỉ chạy khi script được thực thi trực tiếp, chứ không phải khi nó được import vào một script khác.
C. Để khai báo các biến toàn cục.
D. Để gọi tất cả các hàm đã định nghĩa.
25. Khi định nghĩa một hàm, các biến được khai báo bên trong hàm đó có phạm vi (scope) như thế nào?
A. Toàn cục (global).
B. Cục bộ (local).
C. Chỉ có thể truy cập từ bên trong hàm.
D. Cả A và C.