Trắc nghiệm Tin học 11 Kết nối tri thức Bài 31: Thực hành thiết lập thư viện chương trình - Đề 07
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 31: Thực hành thiết lập thư viện chương trình - Đề 07 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Giả sử bạn đã tạo một tệp Python tên là `hinhhoc.py` chứa hàm `tinh_dien_tich_hinh_vuong(canh)`. Để sử dụng hàm này trong một tệp chương trình khác (`main.py`) cùng thư mục, câu lệnh nhập (import) nào sau đây là không đúng cú pháp trong Python?
- A. import hinhhoc
- B. from hinhhoc import tinh_dien_tich_hinh_vuong
- C. import hinhhoc as hh
- D. use hinhhoc
Câu 2: Bạn có một thư viện tên là `toanlib.py` với nội dung sau:
```python
def cong(a, b):
return a + b
def tru(a, b):
return a - b
```
Trong một tệp khác, bạn viết:
```python
from toanlib import cong
ket_qua = cong(10, 5)
```
Hãy cho biết giá trị của biến `ket_qua` sau khi đoạn mã trên được thực thi.
- A. Lỗi, vì không import hàm `tru`.
- B. Lỗi, vì cần import toàn bộ module `toanlib`.
- C. 15
- D. 5
Câu 3: Xét thư viện `hinh_tron.py` có hàm `tinhChuVi(r)` tính chu vi hình tròn bán kính `r` và hàm `tinhDienTich(r)` tính diện tích hình tròn. Cả hai hàm đều sử dụng `math.pi`. Nếu trong chương trình chính, bạn chỉ cần tính diện tích, cách nhập module nào sau đây là hiệu quả nhất về mặt tài nguyên và không gian tên (namespace)?
- A. import hinh_tron
- B. from hinh_tron import *
- C. import hinh_tron as ht
- D. from hinh_tron import tinhDienTich
Câu 4: Thư viện `cong_thuc_ly.py` có hàm `machSongSong(dsDienTro)` tính điện trở tương đương cho mạch song song, trả về -1 nếu bất kỳ giá trị điện trở nào trong danh sách `dsDienTro` <= 0. Nếu bạn gọi hàm này với `cong_thuc_ly.machSongSong([10, -5, 20])`, kết quả trả về sẽ là bao nhiêu và tại sao?
- A. Một giá trị dương, là điện trở tương đương tính theo công thức mạch song song.
- B. -1, vì danh sách chứa giá trị điện trở không hợp lệ.
- C. Lỗi chương trình (exception), vì không thể tính nghịch đảo của số âm.
- D. 0, vì có giá trị âm trong danh sách.
Câu 5: Mục đích chính của việc đóng gói các hàm liên quan vào một tệp `.py` riêng biệt để tạo thành thư viện (module) là gì?
- A. Giúp tái sử dụng mã nguồn hiệu quả và làm cho chương trình chính gọn gàng hơn.
- B. Bắt buộc phải làm như vậy để chương trình Python có thể chạy.
- C. Làm cho chương trình chạy nhanh hơn.
- D. Giúp mã nguồn được bảo vệ, không ai có thể xem được nội dung bên trong thư viện.
Câu 6: Cho thư viện `cong_thuc_hoa.py` với hàm `tinhNtkTB(dsNtk, dstyLe)` tính nguyên tử khối trung bình. Hàm này trả về 0 nếu độ dài của hai danh sách `dsNtk` và `dstyLe` không bằng nhau. Điều này thể hiện nguyên tắc xử lý lỗi nào trong thiết kế hàm thư viện?
- A. Hàm luôn trả về 0 nếu không có đồng vị nào.
- B. Đây là cách tính nguyên tử khối trung bình khi chỉ có một đồng vị.
- C. Hàm tự động sửa lỗi dữ liệu đầu vào.
- D. Một cách báo hiệu dữ liệu đầu vào không hợp lệ hoặc không đủ để tính toán.
Câu 7: Bạn đang phát triển một chương trình và cần tính chu vi của nhiều hình tròn. Thay vì viết công thức `2 * math.pi * r` lặp đi lặp lại, bạn quyết định tạo một thư viện `hinh_tron.py` với hàm `tinhChuVi(r)`. Hành động này minh họa rõ nhất lợi ích nào của việc sử dụng thư viện?
- A. Tái sử dụng mã nguồn (Code Reusability).
- B. Tăng tốc độ thực thi chương trình.
- C. Giảm dung lượng tệp chương trình.
- D. Bắt buộc phải sử dụng thư viện cho các công thức toán học.
Câu 8: Cho đoạn mã sử dụng thư viện `phuong_trinh.py` có hàm `phuongTrinhBac2(a, b, c)`:
```python
import phuong_trinh
phuong_trinh.phuongTrinhBac2(1, -3, 2)
```
Giả sử hàm `phuongTrinhBac2` hoạt động đúng, đoạn mã này sẽ thực hiện hành động nào?
- A. Tính giá trị của biểu thức 1x^2 - 3x + 2.
- B. Giải phương trình bậc hai x^2 - 3x + 2 = 0 và in ra nghiệm của nó.
- C. Trả về một danh sách chứa các nghiệm của phương trình.
- D. Kiểm tra xem 1, -3, 2 có phải là nghiệm của một phương trình nào đó không.
Câu 9: Khi thiết kế một hàm trong thư viện để tính toán (ví dụ: tính diện tích, chu vi), việc trả về kết quả dưới dạng số (ví dụ: `float`) thay vì in trực tiếp ra màn hình có lợi ích gì cho người sử dụng thư viện?
- A. Giúp hàm chạy nhanh hơn.
- B. Bắt buộc phải làm vậy theo quy tắc của Python.
- C. Cho phép chương trình gọi hàm linh hoạt xử lý và sử dụng kết quả trả về.
- D. Làm cho mã nguồn của thư viện ngắn gọn hơn.
Câu 10: Trong thư viện `cong_thuc_ly.py`, hàm `machNoiTiep(dsDienTro)` tính điện trở tương đương của mạch nối tiếp bằng cách tính tổng các giá trị trong danh sách `dsDienTro`. Nếu danh sách này là `[5, 10, 15]`, kết quả trả về sẽ là bao nhiêu?
Câu 11: Giả sử bạn có thư viện `my_math.py` chỉ chứa định nghĩa hằng số `PI = 3.14159`. Để sử dụng hằng số này trong chương trình chính và gọi nó đơn giản là `PI`, bạn nên nhập module như thế nào?
- A. import my_math
- B. from my_math import PI
- C. import my_math as m
- D. from my_math import *
Câu 12: Thư viện `quan_ly_cd.py` có hàm `nhapDL()` được mô tả là dùng để nhập thông tin và thêm bài hát vào đĩa CD, trả về một đối tượng (ví dụ: LinkedList) chứa các bài hát. Nếu bạn gọi hàm này trong chương trình chính và gán kết quả cho biến `dia_cd = quan_ly_cd.nhapDL()`, biến `dia_cd` sẽ chứa gì?
- A. Một số nguyên biểu thị số lượng bài hát.
- B. Một chuỗi thông báo nhập liệu thành công.
- C. Một đối tượng (ví dụ: danh sách liên kết) chứa thông tin các bài hát.
- D. Giá trị `None`, vì hàm chỉ thực hiện hành động nhập liệu.
Câu 13: Khi sử dụng lệnh `import ten_module`, cách truy cập các hàm hoặc biến bên trong `ten_module` là gì?
- A. ten_module.ten_ham_hoac_bien
- B. ten_ham_hoac_bien
- C. gọi trực tiếp ten_ham_hoac_bien()
- D. ten_module::ten_ham_hoac_bien
Câu 14: Giả sử thư viện `cong_thuc_ly.py` có hàm `machSongSong(dsDienTro)`. Để tính điện trở tương đương của mạch song song với các điện trở 20 Ohm và 30 Ohm, bạn cần chuẩn bị dữ liệu đầu vào cho hàm này như thế nào?
- A. Truyền trực tiếp các giá trị: `machSongSong(20, 30)`
- B. Tạo một danh sách chứa các giá trị: `machSongSong([20, 30])`
- C. Tạo một dictionary: `machSongSong({"R1": 20, "R2": 30})`
- D. Đọc các giá trị từ tệp văn bản.
Câu 15: Bạn viết một hàm `kiem_tra_so_nguyen_to(n)` trong tệp `kiemtra.py`. Sau đó, trong tệp `main.py`, bạn muốn sử dụng hàm này. Bạn đã viết `from kiemtra import kiem_tra_so_nguyen_to`. Khi gọi hàm, cú pháp nào sau đây là đúng?
- A. kiemtra.kiem_tra_so_nguyen_to(17)
- B. kiemtra::kiem_tra_so_nguyen_to(17)
- C. kiem_tra_so_nguyen_to(17)
- D. gọi kiem_tra_so_nguyen_to(17)
Câu 16: Giả sử thư viện `cong_thuc_hoa.py` có hàm `tinhNtkTB(dsNtk, dstyLe)`. Công thức tính được mô tả là (text{ntkTB} = sum frac{text{ntk}_i times text{tyLe}_i}{100}). Nếu gọi hàm với `tinhNtkTB([14, 15], [99.6, 0.4])` để tính nguyên tử khối trung bình của Nitơ, kết quả mong đợi sẽ là bao nhiêu?
- A. 14.004
- B. 14.5
- C. 29
- D. Lỗi, vì tỷ lệ phần trăm chưa được chuẩn hóa.
Câu 17: Khi tạo một thư viện Python, các biến được định nghĩa trực tiếp trong tệp `.py` (bên ngoài các hàm) sẽ được coi là gì khi module đó được nhập vào chương trình khác?
- A. Biến cục bộ chỉ có thể dùng trong thư viện.
- B. Không có tác dụng gì.
- C. Biến chỉ dùng được nếu import bằng `from ... import *`.
- D. Các biến toàn cục của module, có thể truy cập thông qua tên module.
Câu 18: Bạn cần giải nhiều phương trình bậc hai khác nhau trong chương trình của mình. Thay vì sao chép mã giải phương trình cho mỗi lần cần, bạn sử dụng thư viện `phuong_trinh.py` với hàm `phuongTrinhBac2(a, b, c)`. Việc này giúp bạn tránh được vấn đề nào phổ biến trong lập trình?
- A. Lặp lại mã nguồn (Code Duplication).
- B. Lỗi cú pháp (Syntax Error).
- C. Chương trình chạy quá nhanh.
- D. Khó đặt tên biến.
Câu 19: Thư viện `hinh_tron.py` chứa hàm `tinhDienTich(r)` sử dụng `math.pi`. Nếu bạn quên dòng `import math` trong tệp `hinh_tron.py`, điều gì sẽ xảy ra khi bạn cố gắng chạy chương trình chính mà nhập và gọi hàm `tinhDienTich`?
- A. Chương trình vẫn chạy nhưng kết quả tính diện tích sẽ sai.
- B. Lỗi khi import thư viện `hinh_tron` trong chương trình chính.
- C. Lỗi `NameError` xảy ra khi hàm `tinhDienTich` được gọi, vì `math` chưa được định nghĩa trong `hinh_tron.py`.
- D. Chương trình sẽ tự động tìm và import thư viện `math`.
Câu 20: Bạn muốn tạo một bí danh (alias) cho thư viện `cong_thuc_ly` khi nhập vào chương trình chính để gọi các hàm dễ dàng hơn, ví dụ gọi `ly.machNoiTiep(...)` thay vì `cong_thuc_ly.machNoiTiep(...)`. Cú pháp nhập module nào sẽ giúp bạn làm điều này?
- A. import cong_thuc_ly as ly
- B. from cong_thuc_ly import ly
- C. alias ly = cong_thuc_ly
- D. import ly from cong_thuc_ly
Câu 21: Trong thư viện `cong_thuc_ly.py`, tại sao hàm `machSongSong` lại kiểm tra và trả về -1 nếu có điện trở <= 0 thay vì chỉ tính toán theo công thức 1/R_td = sum(1/R_i)?
- A. Để làm cho hàm phức tạp hơn.
- B. Vì giá trị điện trở không thể là số âm hoặc bằng 0 trong thực tế, đây là cách xử lý dữ liệu đầu vào không hợp lệ.
- C. Vì Python không thể chia cho số âm hoặc số 0.
- D. Để phân biệt giữa mạch song song và mạch nối tiếp.
Câu 22: Bạn cần viết một chương trình quản lý sách. Bạn tạo một thư viện `quan_ly_sach.py` chứa các hàm như `them_sach(tieu_de, tac_gia)`, `tim_sach(tieu_de)`, `in_danh_sach()`. Hành động này thể hiện nguyên lý thiết kế chương trình nào?
- A. Tính module hóa (Modularity).
- B. Tính đa hình (Polymorphism).
- C. Tính kế thừa (Inheritance).
- D. Tối ưu hóa bộ nhớ.
Câu 23: Giả sử thư viện `hinh_tron.py` có hàm `tinhChuVi(r)` trả về chu vi. Bạn muốn tính chu vi hình tròn bán kính 5 và lưu kết quả vào biến `c`. Cách gọi hàm nào sau đây là đúng và lưu kết quả vào biến `c`?
- A. c = tinhChuVi(5)
- B. hinh_tron.tinhChuVi(c, 5)
- C. c = hinh_tron.tinhChuVi r=5
- D. c = hinh_tron.tinhChuVi(5)
Câu 24: Khi bạn viết một thư viện (ví dụ: `my_lib.py`), các dòng mã nằm trực tiếp trong thân tệp (không thuộc về hàm hay lớp nào) sẽ được thực thi khi nào?
- A. Chỉ khi một trong các hàm trong thư viện được gọi.
- B. Khi thư viện đó được import vào một chương trình khác hoặc được chạy trực tiếp.
- C. Chỉ khi chương trình kết thúc.
- D. Không bao giờ được thực thi.
Câu 25: Giả sử bạn đã tạo thư viện `my_math.py` chỉ chứa hằng số `PI = 3.14159`. Trong chương trình chính, bạn viết `import my_math`. Sau đó, bạn cố gắng in giá trị của PI bằng lệnh `print(PI)`. Điều gì sẽ xảy ra?
- A. Chương trình in ra giá trị 3.14159.
- B. Chương trình in ra giá trị của hằng số PI từ thư viện `math` chuẩn của Python.
- C. Lỗi `NameError`, vì `PI` không được định nghĩa trực tiếp trong chương trình chính.
- D. Lỗi cú pháp.
Câu 26: Khi nào việc sử dụng `from ten_module import *` là không nên làm?
- A. Khi module chứa rất nhiều tên và có nguy cơ gây xung đột tên với các tên khác trong chương trình.
- B. Khi module chỉ chứa một vài hàm đơn giản.
- C. Khi muốn sử dụng bí danh cho module.
- D. Khi muốn chương trình chạy nhanh hơn.
Câu 27: Bạn đang làm việc với một thư viện tính toán hóa học và gặp một hàm `tinh_phan_tram_nguyen_to(cong_thuc_hoa_hoc, nguyen_to)`. Hàm này nhận công thức hóa học (chuỗi) và ký hiệu nguyên tố (chuỗi) rồi trả về phần trăm khối lượng của nguyên tố đó trong hợp chất. Để sử dụng hàm này để tính phần trăm khối lượng Oxi trong H2O, bạn cần cung cấp tham số đầu vào như thế nào?
- A. `tinh_phan_tram_nguyen_to("H", "O")`
- B. `tinh_phan_tram_nguyen_to("H2O", "O")`
- C. `tinh_phan_tram_nguyen_to(H2O, O)`
- D. `tinh_phan_tram_nguyen_to(["H2O", "O"])`
Câu 28: Giả sử bạn đã tạo thư viện `hinh_tron.py` với hàm `tinhDienTich(r)`. Trong chương trình chính, bạn cần tính diện tích hình tròn có bán kính nhập từ bàn phím. Sau khi nhập bán kính vào biến `r_nhap`, bạn sẽ gọi hàm như thế nào (giả sử đã import module đúng cách)?
- A. dien_tich = hinh_tron.tinhDienTich(r_nhap)
- B. dien_tich = hinh_tron.tinhDienTich("r_nhap")
- C. hinh_tron.tinhDienTich(r_nhap, dien_tich)
- D. hinh_tron.tinhDienTich(r_nhap)
Câu 29: Bạn đang viết một chương trình và nhận thấy cần thực hiện một tập hợp các phép tính phức tạp nhiều lần ở các vị trí khác nhau. Việc nhóm các phép tính này lại thành một hàm và đặt nó vào một thư viện riêng biệt sẽ giúp cải thiện điều gì về mã nguồn của bạn?
- A. Chỉ giúp chương trình chạy nhanh hơn.
- B. Chỉ giúp giảm kích thước tệp.
- C. Cả khả năng đọc hiểu (readability) và khả năng bảo trì (maintainability).
- D. Không có lợi ích đáng kể nào.
Câu 30: Giả sử thư viện `phuong_trinh.py` có hàm `phuongTrinhBac2(a, b, c)` giải phương trình bậc hai. Nếu bạn gọi hàm này với `phuong_trinh.phuongTrinhBac2(0, 2, -4)`, kết quả xử lý bên trong hàm (nếu được thiết kế tốt) có thể sẽ là gì?
- A. Gây ra lỗi chia cho 0.
- B. Nhận biết đây là phương trình bậc nhất (2x - 4 = 0) và giải phương trình bậc nhất.
- C. Thông báo rằng phương trình vô nghiệm.
- D. Bỏ qua giá trị a=0 và chỉ xử lý b và c.