Bài 17: Dữ liệu mảng một chiều và hai chiều

Khởi động (SGK Kết nối tri thức với cuộc sống - Trang 81)

Hướng dẫn giải

- 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

(Trả lời bởi Thanh An)
Thảo luận (1)

Hoạt động 1 (SGK Kết nối tri thức với cuộc sống - Trang 81)

Hướng dẫn giải

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 canh 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.

(Trả lời bởi Thanh An)
Thảo luận (1)

Câu hỏi 1 (SGK Kết nối tri thức với cuộc sống - Trang 82)

Hướng dẫn giải

tb = sum(A) / len(A)

print(tb)

(Trả lời bởi Quoc Tran Anh Le)
Thảo luận (1)

Câu hỏi 2 (SGK Kết nối tri thức với cuộc sống - Trang 82)

Hướng dẫn giải

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

(Trả lời bởi Thanh An)
Thảo luận (1)

Hoạt động 2 (SGK Kết nối tri thức với cuộc sống - Trang 82)

Hướng dẫn giải

Python hỗ trợ mô hình 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.

(Trả lời bởi Thanh An)
Thảo luận (1)

Câu hỏi 1 (SGK Kết nối tri thức với cuộc sống - Trang 83)

Hướng dẫn giải

#include <iostream>

using namespace std;

//khai báo biến toan, van là bài thi 1,2,3

//biến diemTB là điểm trung bình của bài thi 1,2,3

float toan, van, diemTB;

/* hàm nhập */

void nhap() {

  //sử dụng do..while để yêu cầu người dùng nhập vào bài thi 1,2,3 trong khoảng 1 -> 10

  do{

    cout<<"\nNhập vào điểm 1: ";

    cin>>1;

    cout<<"\nNhập vào điểm 2: ";

    cin>>2;

cout<<"\nNhập vào điểm 3: ";

    cin>>3;

  }while(1 < 0 || 2 < 0 || 3 < 0 ||1 >10 | 2 >10 || 3 > 10);

}

/* hàm tính trung bình cộng */

void tinhTB(){

  diemTB = (1 + 2 + 3) / 3;

}

/* hàm xuất */

void xuat(){

  cout<<"\nĐiểm trung bình 1"<< hoten<<" là: "<< diemTB;

  cout<<"\n--------------------------------------\n";

 

  cout<<"\nĐiểm trung bình 2"<< hoten<<" là: "<< diemTB;

  cout<<"\n--------------------------------------\n";

  cout<<"\nĐiểm trung bình 3"<< hoten<<" là: "<< diemTB;

  cout<<"\n--------------------------------------\n";

}

int main() {

  nhap();

  tinhTB();

  xuat();

}

(Trả lời bởi Mai Trung Hải Phong)
Thảo luận (1)

Câu hỏi 2 (SGK Kết nối tri thức với cuộc sống - Trang 83)

Hướng dẫn giải

Để lưu trữ danh sách học sinh và thô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 tin đ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 = float(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 {name}: "))

  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 trung bình là {avg_mark}")

(Trả lời bởi Thanh An)
Thảo luận (1)

Hoạt động 3 (SGK Kết nối tri thức với cuộc sống - Trang 83)

Hướng dẫn giải

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.

(Trả lời bởi Thanh An)
Thảo luận (1)

Câu hỏi 1 (SGK Kết nối tri thức với cuộc sống - Trang 84)

Hướng dẫn giải

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.

(Trả lời bởi Thanh An)
Thảo luận (1)

Câu hỏi 2 (SGK Kết nối tri thức với cuộc sống - Trang 84)

Hướng dẫn giải

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.

(Trả lời bởi Quoc Tran Anh Le)
Thảo luận (1)