Bài 17. Dữ liệu mảng một chiều và hai chiều trang 81 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thứcEm đã biết thiết lập cấu trúc dữ liệu đóng vai trò quan trọng khi giải quyết trong các bài toán thực tế trên máy tính. Trong các bài toán thực tế sau em sẽ thiết lập cấu trúc dữ liệu như thế nào?Tổng hợp đề thi học kì 2 lớp 11 tất cả các m𓃲ôn - Kết nối tri thức Toán - Văn - Anh - Lí - Hóa - SinhQuảng cáo
Lựa chọn câu để xem lời giải nhanh hơn
Khởi động Khởi động trang 81 Tin học 11 - Kết nối tri thức Em đã biết thiết lập cấu trúc d♊ữ liệu đóng vai trò quan trọng khi giải quyết trong các bài toán thực tế trên máy tính. Trong các bài toán thực tế sau em sẽ thiết lập cấu trúc dữ liệu như thế nào? - Lập danh sách họ tên các bạn 🉐🅠học sinh lớp em để có thể tìm kiếm, sắp xếp và thực hiện các bài toán quản lí khác. - Giả sử lớp em cần khảo sát ý kiến theo một꧒ yêu cầu của ban giám hiệu. Mỗi học sinh cần có đánh giá theo 4 mức, kí hiệu lần lượt༒ là Đồng ý (2); không phản đối (1); không ý kiến (0); phản đối (-1). Em sẽ tổ chức dữ liệu khảo sát như thế nào để có thể dễ dàng cập nhật và tính toán theo dữ liệu khảo sát. - Em được giao nhiệm vụ thiết lập và lưu trữ một danhꦍ sách các địa điểm là nơi các bạn trong lớp sẽ thường xuyên đến để tham quan và trải nghiệm thực tế. Mỗi địa điểm như vậy cần nhiều thông tin, những thông tin quan trọng nhất là toạ độ (x. y) của thông tin đó trên bản đồ. Em sẽ dụng cấu trúc dữ liệu gì để mô tả d🍎anh sách các địa điểm này? Phương pháp giải: Dựa vào kiến thức trong bài kết hợ♛p kiến thức thực tế của b💯ản thân để trả lời câu hỏi. Lời giải chi tiết: - Ta có thể đặt tên các phần tử của danh sách học sinh là họ tên của các học sinh. Ví dụ: nếu lớp 🔜có 30 học sinh, chúng ta có thể tạo một danh sách với 30 phần tử và lưu trữ𓃲 họ tên của các học sinh tại các chỉ số tương ứng của danh sách. Ví dụ: tên học sinh thứ nhất được lưu trữ tại vị trí danh sách thứ 0, tên học sinh thứ hai được lưu trữ tại vị trí danh sách thứ 1, và cứ như vậy. - Để tổ chức dữ liệu khảo sát, chúng ta có thể sử dụng một cấu trúc dữ liệu gọi là "𓃲bảng điểm" (scoreboard) hoặc "bảng đánh giá" (rating table). Cấu trúc này có thể được triển khai dưới dạng một mảng. - Em sẽ🔯 dụng cấu trúc dữ liệu 2 chiều để mô tả 𒁏danh sách các địa điểm này ? mục 1 HĐ1 Hoạt động 1 trang 81 Tin họ🐻c 11 - Kết nối tri thức Thực hiện các thao tác sau, quan sát, trao đổi và 🥀thảo luận, từ đó n🅷hận biết về cấu trúc dữ liệu mảng một chiều trong Python. Phương pháp giải: Vận dụng kiến thức mục 1 trang 81, 82 SGK để trả lời câu hỏi♏. Lời giải chi tiết: Cấu trúc dữ liệu mảng một chiều trong Python có thể biểu diễn bằng kiểu dữ liệu danh sách (list) với chức năng truy cậpಞ dễ dàng từng phần tử theo chỉ số, truy cập theo vùng chỉ số. Toá🐈n tử in và lệnh for .. in sẽ hỗ trợ duyệt từng phần tử của mảng. ? mục 1 CH1 Câu hỏi 1 trang 82 Tin học 11 - Kết nối tri thức Sử dụn🐬g hàm sum() tính tổng các số của một dãy. Hãy viết câu lệnh tính giá trị trung bình của dãy số A cho trước. Phương pháp giải: Dựa vào kiến thức trong bài kết hợp kiến thức thự𓆏c tế của bản thân để trả lời câ🧜u hỏi.(print(…)) Lời giải chi tiết: tb = sum(A) / len(A) print(tb) ? mục 1 CH2 Câu hỏi 2 trang 82 Tin học 11 - Kết nối tri thức Có tꦆhể duyệt các phần tử ⭕của mảng theo chiều ngược lại, từ cuối về đầu, được không? Phương pháp giải: Vận dụng kiến t𒀰hức mục 1 trang 81, 82 SGK để trả lời câu🧸 hỏi. Ta sử dụng vòng lặp for…in Lời giải chi tiết: Ta có thể duyệt các phần tử của mảng theo chiều ngược lại từ♔ cuối về đầu bằng cách sử dụng index âm trong Python. Cụ thể, các phần tử của mảng có thể được truy cập bằng cách sử dụng index âm bắt đầu từ -1 đến -n, trong đó n là số phần tử của mảng. Ví dụ, giả sử ta có một mảng như sau: arr = [1, 2, 3, 4, 5] Để duyệt các phần tử của mảng theo chiều 🐬ngược lại từ cuối về đầu, ta có thể sử dụng vòng lặp for như sau: for i in range(len(arr)-1, -1, -1): print(arr[i]) Ở đây, ta sử dụng hàm range() để tạo ra một chuỗi các index từ len(arr)-1 (index của phần tử cuối cùng của mảng) đến 0 (index của phần tử đầu tiên của mảng) với bước lùi -1. Trong mỗi lần lặp, ta sử dụng index để truy cập phần t𒅌ử tương ứng trong mảng và thực hiện các thao tác xử lý mong muốn. 5 4 3 2 1 ? mục 2 HĐ2 Hoạt động 2 trang 🅷82 Tin học 11 - Kết nối tri thức Thực hiện các lệnh sau, sau sát, trao đổi và thảo luận, từ đó nhận biế♕t về mô hình danh sách trong P✱ython. Phương pháp giải: Vận dụng hộp kiến 🐼thức trang 83 SGK và kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Python 🃏hỗ trợ mô hìn💖h dữ liệu danh sách trong danh sách, tức là mỗi phần tử của danh sách là một đối tượng dạng danh sách khác. ? mục 2 CH1 Câu hỏi 1 trang 83 Tin học 11 - Kết nối tri thức Thiết lập mảng bao gồm ꦍdữ liệu là toạ độ các điểm trên mặt phẳng, mỗi điểm P 𒐪được cho bởi hai toạ độ (px, py). Phương pháp giải: Vận dụnꦕg kiến thức mục 2 trang 82, 83 SGK và kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Ta có thể sử dụng kiểu dữ liệu danh sách (list) trong Python để lưu trữ các điểm trên mặt ph💖ẳng. Mỗi điểm sẽ được biểu diễn bằng một danh sách chứa hai ♏phần tử là toạ độ px và py. Ví dụ, để tạo một mảng bao gồm 3 điểm A(1,2), B(3,4), và C(5,6𝓀), bạn có thể sử dụng mã n꧙hư sau: p = [[1, 2], [3, 4], [5, 6]] ? mục 2 CH2 Câu hỏi 2 trang 83 Tin học 11 - Kết nối tri thức Thiết lập màng bao gồm dãy các thông tin là danh sách học sinh và thông tin 3 điểm thi của học sinh tương ứng các bài thi số 1, 2, 3. Viết đoạn lệnh nhập bộ dữ liệu trên và chương trì💛nh in ra danh sách học sinh cùng với điểm trung bình của ꦕcác bài thi. Phương pháp giải: Dựa vào k𝓰iến thức trong bài kết hợp kiến thức thực tế c🧸ủa bản thân để trả lời câu hỏi. Lời giải chi tiết: Để lưu trữ danh sách học sinh và tﷺhông tin điểm thi của họ, bạn có thể sử dụng một danh sách chứa nhiều danh sách con. Mỗi danh sách con sẽ chứa tên học sinh (dạng chuỗi) và ba điểm số (dạng số) của họ tương ứng với ba bài thi. Ví dụ, để tạo một mảng danh sách học sinh với thông ti🌃n điểm số, ta có thể sử dụng mã như sau: # Nhập danh sách học sinh và điểm số students = [] n = int(input("Nhập số lượng học sinh: ")) for i in range(n): name = input(f"Nhập tên học sinh thứ {i+1}: ") mark1 = floꦜat(input(f"Nhậꦇp điểm bài thi 1 của {name}: ")) mark2 = float(input(f"Nhập điểm bài thi 2 của {naꦇme}: ")) mark3 = float(input(f"Nhập điểm bài thi 3 của 𓃲{name}: ")) students.append([name, mark1, mark2, mark3]) # Tính đi🦋ểm trung bình và in ra danh sách học sinh và điểm trung bình của họ for student in students: name = student[0] mark1 = student[1] mark2 = student[2] mark3 = student[3] avg_mark = (mark1 + mark2 + mark3) / 3 print(f"Học sinh {name} có điểm tr🌃ung bình là {avg_mark}") ? mục 2 HĐ3 Hoạt động 3 trang 83 Tin học 11 - Kết nối𝓀 tri thức Đọc, trao đổi, thảo luận về cấu trúcꦚ dữ liệu mảng hai chiều trong Python. Phương pháp giải: Vận dụng kiế✃n th🅘ức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Trong tin học, mộ🥀t cấu trúc dữ liệu hai chiều được hiểu là một bảng hay còn gọi là ma trận, bao gồm các hàng và cột dữ liệu. Bảng có thể có kích thước vuông n x n hoặc kích thước bất kì m x n. ? mục 2 CH1 Câu hỏi 1 trang 84 Tin học 11 - Kết nối tri thức Câu lệnh sau sẽ tạo dữ liệu thuộc thể loại gì? temp = [1, 2, 3, 4] A = [temp, temp] Phương pháp giải: Vận dụng kiến thức trong bài để trả lời câu hỏi. Lời giải chi tiết: Câu lệnh trên sẽ tạo ra một dữ liệu thuộc thể loại List (danh sách) trong Python, với tên biến A là một danh sách chứa hai phần tử. Mỗi phần tử của danh sách A là một tham🌱 chiếu đến đối tượng danh sách temp, đ📖ược tạo ra trước đó. Vì vậy, A sẽ chứa hai tham chiếu đến cùng một danh sách temp, với giá trị của🅺 temp là [1, 2, 3, 4]. Nếu giá trị của danh sách temp thay đổi, thì giá trị của các phần tử trong danh sách A cũng sẽ thay đổi theo. ? mục 2 CH2 Câu hỏi 2 trang 84 Tin học 11 - Kết nối tri thức Nếu A là bảng (ma trận) k🗹ích thước m x n ❀thì đoạn chương trình sau sẽ in ra thông tin gì trên màn hình? for i in range(m): for j in range(n): print(A[i][j],end=” “) print() Phương pháp giải: Vận dụng kiến thức ꦰmục 2 trang 83, 84 SGK và kiến thức thực tế của 🌄bản thân để trả lời câu hỏi. Lời giải chi tiết: ꧑Nếu A là một ma trận kích thước m x n, đoạn chương trình trên🍸 sẽ in ra giá trị của từng phần tử trong ma trận A, mỗi dòng một. Cụ thể, với mỗi giá trị của i trong khoảng từ 0 đến m - 1, vòng lặp đầu tiên sẽ lặp qua từng phần tử trong hàng thứ i của ma trận A. Với ♛mỗi giá trị của j trong khoảng từ 0 đến n-1, vòng lặp thứ hai sẽ in ra giá trị của phần tử tại vị trí (i,j) trong ma trận A bằng lệnh print(A[i][j],end=" "), k💟ết thúc bằng một khoảng trắng. Sau khi in hết các phần tử trong hàng🔜 thứ i, lệnh print() trong vòng lặ🐻p đầu tiên sẽ xuống dòng, chuyển sang in hàng tiếp theo của ma trận A. Như vậy, tổng hợp lại, đoạn chương trình sẽ in ra ma trận A dưới dạng bảng trên màn hình. Luyện tập 1 Luyện tập 1 trang 85 Tin học 11 - Kết nối tri thức Giả sử số đo chiều cao các bạn tron𝓰g lớp được cho trong dãy số A. Hãy viết đoạn chương trình tính: - Số đo chiều cao trung bình của cả lớp. - Số bạn có chiều cao lớn hơn✃ ❀chiều cao trung bình của cả lớp. Phương pháp giải: Dựa vào kiến thức trong bài kết hợp kiến🎐 thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: A = [170, 175, 160, 180, 165] # ví dụ dãy 🐬số đo ꦓchiều cao của lớp n = len(A) # số lượng học sinh trong lớp tong_chie🍒u_cao = sum(A) # tổng số đo ch✅iều cao của cả lớp trung_binh_chieu_cao = tong_chieu_cao/n # số đo chiều cao trung bìn✤h của cả lớp so_hs_tren_tb = 0 # số học sinh có chiều cao lớn🗹 hơn chiều cao trung bình của cả lớp for i in range(n): if A[i] > trung_binh_chieu_cao: so_hs_tren_tb += 1 print("Số đo chiều c𒀰ao trung bình của cả lớp là:", trung_binh_chieu_cao) print("Số bạn có chiều ca👍o lớn hơn chiều cao trung bình của cả lớp là:🃏", so_hs_tren_tb) Luyện tập 2 Luyện tập 2 trang 85 Tin học 11 - Kết nối tri thức Viết chương trình nhập từ bàn phím số tự nhiên m, sau đó lần lượt nhập m dòng, mỗi dòng bao gồm n số cách nhau bởi dấu cách, đưa dữ liệu đã nhập vào ma trận A, sau đó in ma trận A ra màn 𒈔hình. Phương pháp giải: Dựa vào kiến thức trong bài để trả lời câu hỏi. Lời giải chi tiết: m = int(input("Nhập số hàng của ma trận: ")) n = int(input("Nhập số cột của ma trận: ")) A = [] for i in range(m): # N🐓hập một dòng gồm n số nguyên cách nhau bởi dấu cách row = list(map(int, input(f"Nhập dò🎀ng {i+1}: ").split())) A.append(row) # In ma trận A ra màn hình for i in range(m): for j in range(n): print(A[i][j], end=" ") print() Vận dụng 1 Vận dụng 1 trang 85 Tin học 11 - Kết nối tri thức Viết hàm số UnitMatrix(n) với n là số tự nhiên cho trước, hàm trả lại giá trị là ma🙈 trận bậc n như Hình 17.1. Phương pháp giải: Vận dụng kiến thức trong bài kết hợp kiến thức thực tế của bản thân để trả lời 🃏câu hỏi. Lời giải chi tiết: def UnitMatrix(n): matrix = [] for i in range(n): row = [] for j in range(n): if i == j: row.append(1) else: row.append(0) matrix.append(row) return matrix Vận dụng 2 Vận dụng 2 trang 85 Tin học 11 - Kết nối tri thức Viết chương trình cho phép người dùng nhập 🌞từ bàn phím một dãy số tự nhiên, hãy đếm với mỗi giá trị của dây có bao nhiêu số lặp lại. Ví dụ nế♈u dãy ban đầu là: 0 1 5 7 0 2 5 1 1 2 thì chương trình cần thông báo như Hình 17.2. Phương pháp giải: Vận dụng kiến thức trong bài, ví dụ kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi,Lời giải chi tiết: numbers = list(map(int, input("Nhập dã🦋y số: ").split())) count = {} for number in numbers: if number in count: count[number] += 1 else: count[number] = 1 for number in count: print(f"Số {number} lặpౠ lại {count[number]} lần") Vận dụng 3 Vận dụng 3 trang 85 Tin học 11 - Kết nối tri thức Em ghi số tiền điện gia đình em theo từng tháng vào một danh sách gồm 12 số. Mỗi năm lại ghi lại số tiền điện vào một danh sách và ghép với danh sách các năm trước. Như vậy em thu được một bảng kích th꧙ước n x 12, trong đó hàng thứ k là số tiền điện của năm thứ k, cột tương ứng số tiền điện theo tháng. a) Thiết lập mảng🐼 mớ🍸i tính số tiền điện trung bình của các năm, mỗi năm ghi một số. b) Tính số tiền điện🌞 trung bình của tất cả các năm đã được ghi dữ l🌱iệu trong bảng. Phương pháp giải: Tì🌞m hiểu và vận dụng kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: #T🅰ạo mảng 2 chiều lưu trữ số tiền điện của 🐻gia đình electricity_bills = [ [100, 120, 130, 110, 90, ♓80, 70, 60, 50, 70, 80, 90], [110, 130, 140ꦿ, 120, 100, 90, 80, 70, 60, 80, 90, ☂100], [120, 140, 15𒆙0, 130, 110, 100, 90, 80, 70, 90, 100, 110], [130, 150, 160, 140, 120, 110, 100, 90, 80, 100, 11💃0, 120] ] # Tính số tiền điện trung bình củ൲a từn𓄧g năm và in kết quả for i in range(len(electricity_bills)): year_total = sum(electricity_bills[i]) year_average = year_total / len(electrꦍicity_bills[i]) print(f"Average electricity 🗹bill for year {i+1}: {year_average}") # Tính số tiền điệnဣ trung bình của tất cả các năm và in kết quả total = 0 count = 0 for row in electricity_bills: total += sum(row) count += len(row) overall_average = total / count print(f"Overall average electricity b🦩ill: {overall_av൩erage}")
Quảng cáo
Tham Gia Group Dành Cho Lớp 11 Chia Sẻ, Trao Đổi Tài Liệu Miễn Phí |