Mời các em cùng khám phá nội dung Bài 3: Thực hành về tệp, mảng và danh sách. Thông qua bài học này, các em sẽ sử dụng được lát cắt để xử lí mảng, danh sách theo ý muốn và một số hàm xử lí tệp dữ liệu đầu vào, đầu ra. HOC247 hy vọng rằng qua các bài học của chương trình Khoa học máy tính, các em sẽ thu thập những kiến thức hữu ích và thú vị, giúp nâng cao kiến thức về môn Tin học.
Tóm tắt lý thuyết
1.1. Nhiệm vụ 1: Lát cắt
Yêu cầu:
a) Cho a là mảng (danh sách) các số. Hãy dùng lát cắt tạo danh sách b và dùng vòng lặp for in kết quả ra màn hình để kiểm tra kết quả trong mỗi trường hợp sau:
Mẫu xử lí dùng vòng lặp for
- b là nửa cuối của a.
- b là một phần tử kể từ đầu trái của a.
- b là các phần tử chỉ số lẻ của a.
b) Cho a là ma trận (bảng số) hình vuông n × n các số thực. Hãy viết các câu lệnh (dùng lát cắt khi có thể) để in kết quả ra màn hình và kiểm tra kết quả trong mỗi trường hợp sau:
- Các hàng chỉ số chẵn của a.
- Hai phần tử đầu tiên của hàng đầu tiên của a.
- Hai cột đầu tiên của a.
- Các cột chỉ số lẻ của a.
Gợi ý:
Toán tử lát cắt trích ra đoạn con liền mạch hay dãy con (có bước nhảy step cách quãng) từ một dãy tuần tự nhiều mục dữ liệu, ví dụ như một biến kiểu danh sách.
Các lát cắt
Lưu ý: Nếu bước nhảy step nhận giá trị âm thì toán tử lát cắt sẽ đảo chiều, đi từ cuối danh sách lên đầu danh sách, từ phải sang trái, kết quả nhận được giống như dùng phương thức reverse ().
Ví dụ về lát cắt
1.2. Nhiệm vụ 2: Vòng lặp
Yêu cầu: Cho a là mảng hai chiều hình vuông gồm n hàng và n cột các số thực. Hãy tính:
a) Tổng các phần tử chỉ số chẵn ở hàng ỉ của a.
b) Tổng các phần tử âm, tổng các phần tử không âm ở hàng i của a
c) In ra chỉ số các phần tử bằng số x cho trước.
Gợi ý: Vòng lặp for hoặc while duyệt qua các phần tử trong danh sách a và thân vòng lặp có thể xử lí lần lượt tất cả các phần tử hoặc chọn một số phần tử thoả mãn điều kiện nào đó: theo chỉ số i hoặc theo giá trị a[i].
1.3. Nhiệm vụ 3: Đọc dữ liệu từ tập đầu vào và viết ra tập
Yêu cầu:
Cho tệp “bangDiem.txt" gồm nhiều dòng; các mục dữ liệu cách nhau khoảng trống:
– Dòng thứ nhất: Hai số nguyên dương n và m; với n là số học sinh, m là số môn học.
– Dòng thứ hai: TênHS Toán Văn Tin Li... gồm (m + 1) từ.
− n dòng tiếp theo, mỗi dòng có tên học sinh và điểm các môn học của học sinh đó. Hãy viết một hàm nhapTuTep() để đọc tệp dữ liệu đầu vào “bangDiem.txt” và khởi tạo dữ liệu sẵn sàng để tính toán phân tích kết quả học tập:
a) Một mảng hai chiều n x m các số thực.
b) Hai danh sách: danh sách tên học sinh và danh sách tên môn học.
Hướng dẫn thực hiện:
Có thể tạo tệp “bangDiem.txt" bằng cách chỉnh sửa và bổ sung bảng; từ Word hay Excel, thao tác Copy\Paste vào cửa sổ của Notepad hay cửa sổ soạn thảo của Python; ghi lưu thành tệp có định dạng text.
- Đọc từng dòng của tập đầu vào.
- Chuyển đổi mỗi mục của danh sách sang kiểu dữ liệu cần thiết và nối thêm vào danh sách tương ứng trong chương trình.
Ví dụ câu lệnh thêm một hàng vào mảng hai chiều
Trong Python, nếu một dòng gồm nhiều mục khác kiểu dữ liệu, xen kẽ nhau, thì phải truy cập từng phần tử của danh sách và chuyển từ xâu kí tự thành kiểu dữ liệu đúng mô tả.
Các thao tác với tệp dữ liệu
Đầu vào là tập thuần văn bản chữ và số (đuôi tên tệp “txt") gồm nhiều dòng; mỗi dòng gồm nhiều từ, mỗi từ là một mục dữ liệu, phân cách bằng khoảng trống.
Các bước thực hiện như sau:
- Bước 1. Mở tệp để đọc hay viết, sử dụng hàm open ().
Cách mở tệp để đọc, viết và viết nổi thêm
- Bước 2. Đọc từ tệp, có thể dùng các phương thức read(), readline(), readlines() kết hợp với split():
read().split(): Đọc từng từ và nối liền toàn bộ các dòng thành một danh sách các từ. Sử dụng khi tập ngắn và cần xử lí toàn bộ nội dung tệp.
readline().split(): Đọc một dòng, trả về danh sách các từ, thường dùng nhất.
readlines(): Đọc toàn bộ tệp, trả về danh sách các dòng, mỗi dòng là một xâu kí tự, kết thúc bằng “\n (dấu xuống dòng).
- Bước 3. Xuất ra tệp thuần văn bản: có thể dùng hàm print, sau khi đã chuyển đầu ra chuẩn từ màn hình sang tệp đã mở để viết vào như sau:
sys.stdout = f #f: tên biến tệp đã mò để viết vào
- Bước 4. Đóng tệp, dùng phương thức close().
Lưu ý: Nếu giữa các từ được phân cách nhau bằng dấu phẩy thì ta có tệp kiểu “csv” (comma separated value) và để cắt ra từng từ cần dùng split(', ') thay vì dạng mặc định split()
Đọc và viết tệp văn bản có chữ tiếng Việt
Một số kí tự trong tiếng Việt không có trong bảng mã ASCII. Để đọc, viết tệp văn bản có chữ tiếng Việt hay các văn bản nói chung, có dùng các kí tự không phải ASCII thì cần thêm tham số tuỳ chọn encoding='utf-8' vào các hàm xử lí tệp.
2. Luyện tập Bài 3 Chủ đề FCS SGK Tin học 11 Cánh diều
Học xong bài này, em sẽ:
- Sử dụng được lát cắt để xử lí mảng, danh sách theo ý muốn.
- Biết và sử dụng được một số hàm xử lí tệp dữ liệu đầu vào, đầu ra.
2.1. Trắc nghiệm Bài 3 Chủ đề FCS SGK Tin học 11 Cánh diều
Như vậy là các em đã xem qua bài giảng Bài 3 Chủ đề FCS SGK Tin học 11 Cánh diều Khoa học máy tính. Để củng cố kiến thức bài học mời các em tham gia bài tập trắc nghiệm Trắc nghiệm Tin học 11 Cánh diều Chủ đề FCS Bài 3.
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
2.2. Bài tập Bài 3 Chủ đề FCS SGK Tin học 11 Cánh diều
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Cánh diều Chủ đề FCS Bài 3 để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Nhiệm vụ 1 trang 97 SGK Tin học 11 Cánh diều - CD
Nhiệm vụ 2 trang 98 SGK Tin học 11 Cánh diều - CD
Nhiệm vụ 3 trang 98 SGK Tin học 11 Cánh diều - CD
Vận dụng trang 100 SGK Tin học 11 Cánh diều - CD
3. Hỏi đáp Bài 3 Chủ đề FCS SGK Tin học 11 Cánh diều
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học của HOC247 sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 HỌC247