Trắc nghiệm Cánh diều Tin học 11 KHMT bài 14 Thực hành về thư viện các hàm tự định nghĩa
1. Tại sao việc chia nhỏ chương trình thành các hàm tự định nghĩa lại quan trọng trong phát triển phần mềm?
A. Giúp mã nguồn dễ đọc, dễ bảo trì, dễ gỡ lỗi và tăng khả năng tái sử dụng.
B. Làm cho chương trình phức tạp hơn và khó hiểu hơn.
C. Chỉ có tác dụng khi chương trình rất lớn.
D. Làm chậm quá trình thực thi của chương trình.
2. Đâu là một lợi ích quan trọng của việc sử dụng hàm trong việc phát triển phần mềm, xét từ góc độ cấu trúc chương trình?
A. Giúp chương trình tuân theo nguyên tắc chia để trị, làm cho mã nguồn mạch lạc và dễ quản lý hơn.
B. Tự động hóa việc kiểm thử chương trình.
C. Cải thiện tốc độ xử lý của CPU.
D. Cho phép chương trình tự động sửa lỗi.
3. Xét hàm sau:
def multiply(a, b):
return a * b
Nếu gọi hàm này với multiply(5, 3), giá trị nào sẽ được trả về?
A. 15
B. 8
C. 53
D. Lỗi vì không có câu lệnh print
4. Hàm nào sau đây không phải là một hàm được định nghĩa sẵn (built-in function) trong Python?
A. print()
B. len()
C. my_custom_function()
D. type()
5. Trong Python, khi định nghĩa một hàm, cú pháp `*args` được sử dụng để làm gì?
A. Cho phép hàm nhận một số lượng không xác định các đối số vị trí.
B. Cho phép hàm nhận một số lượng không xác định các đối số có tên.
C. Xác định giá trị mặc định cho tất cả các tham số.
D. Trả về một tuple chứa tất cả các đối số.
6. Khi sử dụng thư viện các hàm tự định nghĩa, việc đặt tên file chứa các hàm đó nên tuân theo quy tắc nào để dễ dàng import và quản lý?
A. Tên file nên là một định danh Python hợp lệ, thường là snake_case, và có đuôi .py.
B. Tên file có thể chứa khoảng trắng và ký tự đặc biệt.
C. Tên file phải giống với tên của một từ khóa trong Python.
D. Tên file không quan trọng, chỉ cần chứa các hàm.
7. Khi định nghĩa một hàm, mục đích của việc sử dụng tham số có giá trị mặc định là gì?
A. Cho phép người dùng bỏ qua việc cung cấp giá trị cho tham số đó khi gọi hàm.
B. Bắt buộc người dùng phải cung cấp giá trị cho tham số đó.
C. Chỉ định kiểu dữ liệu của tham số.
D. Lưu trữ kết quả của hàm.
8. Trong Python, phạm vi của biến được định nghĩa bên trong một hàm là gì?
A. Biến cục bộ (local variable), chỉ tồn tại trong hàm đó.
B. Biến toàn cục (global variable), có thể truy cập từ mọi nơi.
C. Biến ngoại vi (enclosing variable), chỉ truy cập được trong các hàm lồng nhau.
D. Biến chỉ tồn tại trong lần gọi hàm đầu tiên.
9. Phát biểu nào sau đây mô tả đúng nhất vai trò của từ khóa def trong việc định nghĩa một hàm tự định nghĩa trong Python?
A. def là từ khóa dùng để khai báo bắt đầu một định nghĩa hàm.
B. def được sử dụng để chỉ định giá trị trả về của hàm.
C. def dùng để gọi thực thi một hàm đã được định nghĩa.
D. def là một biến toàn cục được sử dụng trong hàm.
10. Xét hàm sau:
def calculate_sum(numbers):
total = 0
for num in numbers:
total += num
return total
Nếu gọi hàm với calculate_sum([1, 2, 3, 4]), kết quả trả về là gì?
A. 10
B. 1
C. 4
D. Lỗi vì đầu vào không phải là số đơn lẻ.
11. Một hàm có thể gọi lại chính nó trong thân hàm được gọi là gì?
A. Hàm đệ quy (Recursive function).
B. Hàm lặp (Iterative function).
C. Hàm nội tuyến (Inline function).
D. Hàm tham chiếu (Reference function).
12. Khi một hàm trong Python không có câu lệnh return rõ ràng, giá trị mặc định mà hàm sẽ trả về là gì?
A. None
B. 0
C. False
D. Một chuỗi trống
13. Khi định nghĩa một hàm, việc đặt tên hàm cần tuân theo quy tắc nào sau đây để đảm bảo tính rõ ràng và tuân thủ quy ước?
A. Tên hàm nên bắt đầu bằng chữ cái hoặc dấu gạch dưới, không chứa ký tự đặc biệt và có ý nghĩa mô tả chức năng của hàm.
B. Tên hàm có thể bắt đầu bằng số để dễ nhận diện.
C. Tên hàm không cần có ý nghĩa, chỉ cần là một chuỗi ký tự bất kỳ.
D. Tên hàm phải luôn bao gồm các từ khóa function hoặc method.
14. Trong Python, cú pháp `**kwargs` khi định nghĩa một hàm được sử dụng để làm gì?
A. Cho phép hàm nhận một số lượng không xác định các đối số có tên (keyword arguments).
B. Cho phép hàm nhận một số lượng không xác định các đối số vị trí.
C. Xác định giá trị mặc định cho tất cả các tham số.
D. Trả về một dictionary chứa tất cả các đối số.
15. Trong lập trình, một thư viện hàm tự định nghĩa thường được tạo ra với mục đích chính là gì?
A. Tái sử dụng mã nguồn cho các tác vụ phổ biến hoặc phức tạp.
B. Tăng kích thước của chương trình.
C. Giảm hiệu suất thực thi của chương trình.
D. Giới hạn khả năng tùy chỉnh của người dùng.
16. Xét hàm sau:
def greet(name):
print(fXin chào, {name}!)
Khi gọi hàm này với greet(An), kết quả nào sẽ được hiển thị trên màn hình?
A. Xin chào, An!
B. Hello, An!
C. Chương trình sẽ báo lỗi.
D. An
17. Để sử dụng một hàm từ một thư viện tự định nghĩa đã được lưu trong file my_library.py, câu lệnh import nào là chính xác nhất?
A. from my_library import ten_ham
B. import my_library as lib
C. import my_library
D. Cả ba lựa chọn trên đều có thể đúng tùy thuộc vào cách sử dụng.
18. Trong lập trình Python, khi định nghĩa một hàm tự định nghĩa, mục đích chính của việc sử dụng các tham số là gì?
A. Để hàm có thể nhận các giá trị đầu vào và thực hiện các phép toán dựa trên chúng.
B. Để bắt buộc người dùng phải nhập dữ liệu mỗi khi gọi hàm.
C. Để lưu trữ kết quả trả về của hàm.
D. Để chỉ định kiểu dữ liệu mà hàm sẽ trả về.
19. Khi viết một hàm tự định nghĩa, việc bổ sung chuỗi tài liệu (docstring) có ý nghĩa gì?
A. 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 khác hoặc chính mình hiểu cách sử dụng hàm.
B. Tăng tốc độ thực thi của hàm.
C. Chỉ định các biến toàn cục mà hàm sử dụng.
D. Ngăn chặn việc hàm bị gọi sai cách.
20. Trong Python, khi định nghĩa một hàm có nhiều tham số, cách nào sau đây giúp tăng tính rõ ràng và dễ đọc khi gọi hàm?
A. Sử dụng đối số có tên (keyword arguments), ví dụ: ten_ham(tham_so1=gia_tri1, tham_so2=gia_tri2).
B. Chỉ sử dụng đối số vị trí (positional arguments) theo đúng thứ tự.
C. Nối tất cả các tham số thành một chuỗi duy nhất.
D. Bỏ qua việc đặt tên cho các tham số.
21. Trong trường hợp một hàm có nhiều tham số, nếu muốn gọi hàm chỉ với một vài tham số không liền kề, bạn PHẢI sử dụng phương pháp nào?
A. Sử dụng đối số có tên (keyword arguments) cho tất cả các tham số bạn muốn cung cấp.
B. Chỉ truyền các tham số theo đúng thứ tự.
C. Bỏ qua các tham số không cần thiết.
D. Gộp các tham số không cần thiết thành một danh sách.
22. Phân biệt giữa tham số (parameter) và đối số (argument) trong định nghĩa và gọi hàm Python. Theo phân tích phổ biến, đối số là:
A. Giá trị thực tế được truyền vào hàm khi gọi.
B. Biến được liệt kê trong dấu ngoặc đơn của định nghĩa hàm.
C. Tên của hàm.
D. Kết quả trả về của hàm.
23. Phân biệt giữa tham số (parameter) và đối số (argument) trong định nghĩa và gọi hàm Python. Theo phân tích phổ biến, tham số là:
A. Biến được liệt kê trong dấu ngoặc đơn của định nghĩa hàm.
B. Giá trị thực tế được truyền vào hàm khi gọi.
C. Kết quả trả về của hàm.
D. Tên của hàm.
24. Xét hàm sau:
def process_data(data, **options):
print(fProcessing: {data})
if verbose in options and options[verbose]:
print(Verbose mode is ON)
Khi gọi hàm với process_data(Report, verbose=True), kết quả in ra màn hình là gì?
A. Processing: Report
Verbose mode is ON
B. Processing: Report
C. Lỗi do không có tham số verbose định nghĩa rõ ràng.
D. Processing: Report
verbose=True
25. Nếu một hàm định nghĩa tham số mặc định và một tham số không có mặc định, thì tham số nào phải được đặt trước trong danh sách tham số?
A. Tham số không có giá trị mặc định.
B. Tham số có giá trị mặc định.
C. Thứ tự không quan trọng.
D. Tất cả tham số phải có giá trị mặc định.