1. Trong Python, khi đọc một tệp văn bản bằng chế độ r, ký tự xuống dòng \n ở cuối mỗi dòng sẽ được giữ lại hay bị loại bỏ?
A. Luôn được giữ lại.
B. Luôn bị loại bỏ.
C. Chỉ được giữ lại nếu dòng cuối cùng của tệp không có ký tự xuống dòng.
D. Bị loại bỏ khi sử dụng phương thức `readline()` nhưng được giữ lại khi sử dụng `readlines()`.
2. Trong Python, khi làm việc với tệp văn bản, chế độ mở tệp r+ cho phép thực hiện những thao tác nào sau đây?
A. Chỉ cho phép đọc dữ liệu từ tệp.
B. Cho phép ghi dữ liệu vào tệp nhưng không đọc.
C. Cho phép đọc và ghi dữ liệu từ/vào tệp.
D. Cho phép thêm dữ liệu vào cuối tệp.
3. Đâu là chức năng chính của việc sử dụng khối lệnh `with open(...)` khi làm việc với tệp trong Python?
A. Để tăng tốc độ đọc/ghi dữ liệu.
B. Để đảm bảo tệp được đóng tự động, ngay cả khi có lỗi xảy ra.
C. Để cho phép ghi dữ liệu mà không cần mở tệp.
D. Để tạo ra một tệp mới mỗi khi đoạn mã được thực thi.
4. Khi bạn sử dụng phương thức `write()` để ghi một chuỗi vào tệp, điều gì xảy ra nếu chuỗi đó chứa nhiều dòng (có ký tự \n)?
A. Chỉ dòng đầu tiên của chuỗi được ghi.
B. Mỗi dòng của chuỗi sẽ được ghi vào tệp trên các dòng riêng biệt.
C. Toàn bộ chuỗi được ghi vào một dòng duy nhất.
D. Chương trình sẽ báo lỗi.
5. Khi ghi dữ liệu vào tệp văn bản bằng Python, nếu bạn muốn mỗi mục dữ liệu được ghi trên một dòng riêng biệt, bạn nên làm gì?
A. Chỉ cần ghi chuỗi dữ liệu.
B. Ghi chuỗi dữ liệu và thêm ký tự xuống dòng \n vào cuối mỗi chuỗi.
C. Sử dụng phương thức `writelines()` với một danh sách chuỗi.
D. Sử dụng phương thức `write()` nhiều lần mà không có ký tự xuống dòng.
6. Trong Python, khi bạn cần truy cập các phần tử của một danh sách theo thứ tự ngược lại mà không thay đổi danh sách gốc, bạn có thể sử dụng phương thức nào?
A. `list.reverse()`
B. `reversed(list)`
C. `list.sort(reverse=True)`
D. `list[::-1]`
7. Trong Python, phương thức `readlines()` của đối tượng tệp trả về kết quả dưới dạng nào?
A. Một chuỗi duy nhất chứa toàn bộ nội dung tệp.
B. Một danh sách các chuỗi, mỗi chuỗi là một dòng của tệp.
C. Một đối tượng tệp mới.
D. Một số nguyên biểu thị số dòng trong tệp.
8. Nếu bạn muốn tìm kiếm một phần tử cụ thể trong một danh sách Python mà không quan tâm đến vị trí của nó, phương thức nào là hiệu quả nhất?
A. `list.index(element)`
B. `element in list`
C. `list.count(element)`
D. `list.pop(element)`
9. Khi sử dụng câu lệnh `with open(data.txt, w) as file:`, điều gì sẽ xảy ra với nội dung của tệp data.txt nếu tệp này đã tồn tại trước đó?
A. Nội dung cũ của tệp sẽ được giữ nguyên.
B. Nội dung cũ của tệp sẽ bị ghi đè hoàn toàn.
C. Nội dung mới sẽ được thêm vào cuối tệp.
D. Tệp sẽ bị xóa và một tệp mới sẽ được tạo ra.
10. Xem xét đoạn mã Python sau: `numbers = [1, 2, 3]; numbers.clear()`. Sau khi thực thi, giá trị của `numbers` sẽ là gì?
A. [1, 2, 3]
B. []
C. [1, 2]
D. None
11. Giả sử bạn có một mảng (list) `numbers = [10, 20, 30, 40, 50]` trong Python. Lệnh `numbers.pop(2)` sẽ làm gì?
A. Trả về giá trị 30 và xóa phần tử đó khỏi mảng.
B. Trả về giá trị 20 và xóa phần tử đó khỏi mảng.
C. Trả về giá trị 40 và xóa phần tử đó khỏi mảng.
D. Trả về giá trị 50 và xóa phần tử đó khỏi mảng.
12. Trong Python, phương thức `tell()` của đối tượng tệp được sử dụng để làm gì?
A. Để đóng tệp.
B. Để ghi dữ liệu vào tệp.
C. Để trả về vị trí hiện tại của con trỏ tệp.
D. Để đọc toàn bộ nội dung tệp.
13. Xem xét danh sách `data = [apple, banana, cherry]`. Lệnh `data.insert(1, orange)` sẽ làm cho `data` trở thành gì?
A. [orange, apple, banana, cherry]
B. [apple, orange, banana, cherry]
C. [apple, banana, cherry, orange]
D. [apple, orange, cherry]
14. Đâu là sự khác biệt cơ bản giữa mảng (list) và bộ dữ liệu (tuple) trong Python về khả năng thay đổi sau khi tạo?
A. List có thể thay đổi, Tuple không thể thay đổi.
B. Tuple có thể thay đổi, List không thể thay đổi.
C. Cả List và Tuple đều không thể thay đổi.
D. Cả List và Tuple đều có thể thay đổi.
15. Trong Python, thao tác nào sau đây sẽ trả về một bản sao (copy) của một danh sách?
A. `list.copy()`
B. `list.append()`
C. `list.insert()`
D. `list.extend()`
16. Khi bạn cần lưu trữ một tập hợp các phần tử có thứ tự và có thể truy cập bằng chỉ số, đồng thời các phần tử này có thể được sửa đổi, bạn nên sử dụng cấu trúc dữ liệu nào trong Python?
A. Tuple
B. Set
C. Dictionary
D. List
17. Bạn có một danh sách `colors = [red, green, blue]`. Để lấy giá trị green từ danh sách này, bạn sẽ sử dụng chỉ số nào?
A. colors[0]
B. colors[1]
C. colors[2]
D. colors[3]
18. Bạn có một danh sách `items = [a, b, c, d]`. Lệnh `items.remove(b)` sẽ thay đổi danh sách `items` thành gì?
A. [a, c, d]
B. [a, b, d]
C. [a, b, c]
D. [a, c, b, d]
19. Cho đoạn mã Python sau: `my_list = [1, 2, 3]; my_list.extend([4, 5])`. Sau khi thực thi, giá trị của `my_list` sẽ là gì?
A. [1, 2, 3, [4, 5]]
B. [1, 2, 3, 4, 5]
C. [1, 2, 3, 4]
D. [1, 2, 3, 5]
20. Đâu là cách tốt nhất để đóng một tệp sau khi bạn đã hoàn thành việc đọc hoặc ghi dữ liệu trong Python, để giải phóng tài nguyên hệ thống?
A. Không cần đóng, Python sẽ tự động đóng khi chương trình kết thúc.
B. Sử dụng `file.close()` trong khối `try...finally`.
C. Sử dụng khối lệnh `with open(...)`.
D. Sử dụng `file.flush()` để làm sạch bộ đệm.
21. Nếu bạn mở một tệp bằng chế độ a (append) trong Python, điều gì sẽ xảy ra nếu tệp đó chưa tồn tại?
A. Chương trình sẽ báo lỗi và dừng lại.
B. Một tệp mới sẽ được tạo ra với nội dung trống.
C. Nội dung sẽ được thêm vào một tệp có sẵn nếu có.
D. Dữ liệu sẽ không được ghi vào tệp.
22. Cho danh sách `data = [5, 2, 8, 1, 9]`. Sau khi thực hiện `data.sort()`, giá trị của `data` sẽ là gì?
A. [5, 2, 8, 1, 9]
B. [9, 8, 5, 2, 1]
C. [1, 2, 5, 8, 9]
D. [1, 5, 2, 8, 9]
23. Khi làm việc với danh sách (list) trong Python, thao tác nào sau đây dùng để thêm một phần tử vào cuối danh sách?
A. `list.insert(index, element)`
B. `list.remove(element)`
C. `list.append(element)`
D. `list.pop()`
24. Trong Python, làm thế nào để bạn truy cập vào phần tử cuối cùng của một danh sách mà không cần biết độ dài chính xác của nó?
A. `list[0]`
B. `list[len(list)]`
C. `list[-1]`
D. `list.last()`
25. Khi bạn đọc một tệp văn bản bằng Python và muốn bỏ qua các dòng trống, bạn có thể làm gì sau khi đọc mỗi dòng?
A. Kiểm tra xem dòng có rỗng không và chỉ xử lý nếu nó không rỗng.
B. Sử dụng phương thức `strip()` để loại bỏ các ký tự khoảng trắng và sau đó kiểm tra xem chuỗi có rỗng không.
C. Sử dụng phương thức `split()` để tách dòng và kiểm tra kết quả.
D. Luôn xử lý mọi dòng đọc được.