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

Chủ đề 6. Kĩ thuật lập trình – Bài 17: Dữ liệu mảng một chiều và hai chiều – sách bài tập trang 62 lớp 11 Khoa học máy tính – Kết Nối Tri Thức, mời các em tham khảo cùng Bumbii.

Chủ đề 6. Kĩ thuật lập trình – Bài 17: Dữ liệu mảng một chiều và hai chiều

Câu 17.1

Trong các dữ liệu sau, những dữ liệu nào là mảng một chiều?

A. [1, 2, 3, [4, 5, 6]].

B. [“A”, “B”, 1, 2, 3, 4].

C. [“One”, “Two”, “Three”].

D. [(1,2), (3, 4), (4,5), (5,6)].

Trả lời:

Đáp án C, D là những dữ liệu mảng một chiều.

Câu 17.2

Một xâu kí tự có n kí tự có là mảng một chiều không?

Trả lời:

Một xâu kí tự có n kí tự không được coi là mảng một chiều. Thay vào đó, nó được coi là một chuỗi (string) trong lập trình.

Câu 17.3

Cho hai mảng một chiều A, B trong Python. Có cách nào ghép A và B thành mảng một chiều C được không?

Trả lời:

Sử dụng lệnh: C = A + B

Ví dụ:

A = [1, 2, 3]
B = [4, 5, 6]
C = A + B

Kết quả là mảng một chiều C sẽ chứa [1, 2, 3, 4, 5, 6].

Câu 17.4

Cho ma trận A kích thước m x n được biểu diễn trong Python theo dạng danh sách trong danh sách. Mệnh đề nào dưới đây là đúng?

A. Danh sách A có m x n phần tử.

B. Danh sách A có m phần tử.

C. Danh sách A có n phần tử.

D. Danh sách A có (m x n)/2 phần tử.

Trả lời:

Đáp án A. Danh sách A có m x n phần tử.

Câu 17.5

Cho trước hai số k, n và k <n. Viết một lệnh trong Python để tạo mảng có dạng sau:

[0, …, 0, 1, 0, …, 0],

trong đó phía trước số 1 có k số 0, sau số 1 có n − 1 − k số 0.

Trả lời:

Lệnh với phía trước số 1 có k số 0, sau số 1 có n − 1 − k số 0:

A = [0]*k + [1] + [0]*(n-1-k)

Ví dụ: Với k = 3 và n = 7:

k = 3
n = 7

my_array = [0] * k + [1] + [0] * (n - 1 - k)

print(my_array)

Kết quả sẽ là một mảng có dạng mô tả: [0, 0, 0, 1, 0, 0, 0]

Câu 17.6

Viết hàm tạo ma trận vuông bậc n gồm toàn số 0.

Trả lời:

def mZero(n):
    A = []
    for i in range(n):
        A.append([0] * n)
    return A
  • for i in range(n):: Sử dụng một vòng lặp for để lặp qua từ 0 đến n-1. Mỗi lần lặp, biến i lưu trữ giá trị của vòng lặp hiện tại, bắt đầu từ 0 và tăng dần lên.
  • A.append([0] * n): Trong mỗi lần lặp, chúng ta thêm một hàng mới vào danh sách A. Để tạo một hàng gồm n số 0, chúng ta sử dụng [0] * n. Ký hiệu [0] * n tạo ra một danh sách chứa n số 0.

Câu 17.7

Cho trước danh sách A, mỗi phần tử có dạng một cặp thông tin là tên học sinh và điểm trung bình các môn của học sinh đó trong một lớp. Ví dụ: danh sách có dạng sau:

DS = [(“Hà”, 7.5), (“Bình”, 8), (“Quang” 9.2), (“An”, 10)]

Viết đoạn chương trình tính điểm trung bình của cả lớp.

Trả lời:

DS = [("Hà", 7.5), ("Bình", 8), ("Quang", 9.2), ("An", 10)]
Diem = [x[1] for x in DS]
print(sum(Diem) / len(Diem))
  • DS = [("Hà", 7.5), ("Bình", 8), ("Quang", 9.2), ("An", 10)]: Đây là một danh sách DS chứa thông tin về các vận động viên.
  • Diem = [x[1] for x in DS]: Trong danh sách này, mỗi phần tử sẽ là điểm số (x[1]) của từng vận động viên trong danh sách DS.
  • print(sum(Diem)/len(Diem)): Đoạn này tính điểm trung bình của các điểm số trong danh sách Diem. Cụ thể, nó sử dụng hàm sum để tổng hợp các điểm số trong Diem và sau đó chia cho số lượng điểm số, được tính bằng hàm len(Diem). Kết quả của phép tính này là điểm trung bình của tất cả các vận động viên trong danh sách DS, và nó được in ra màn hình.

Câu 17.8

Viết chương trình nhập từ bàn phím các thông tin của n học sinh (n là số tự nhiên) vào mảng có cấu trúc tương tự Câu 17.7. Mỗi học sinh được nhập tên và điểm trung bình trên cùng một hàng, cách nhau bởi dấu cách.

Trả lời:

n = int(input("Nhập số học sinh: "))
A = []
for i in range(n):
    s = input("Nhập tên và điểm của học sinh thứ " + str(i + 1) + ": ")
    line = s.split()
    ten = line[0]
    diem = float(line[1])
    A.append((ten, diem))
  • s = input("Nhập tên và điểm của học sinh thứ " + str(i + 1) + ": "): Dòng này yêu cầu người dùng nhập thông tin về học sinh thứ i+1. Biến i đang chạy từ 0 đến n-1, nên i + 1 thể hiện học sinh thứ mấy. Thông tin này được nhập dưới dạng một xâu ký tự s.
  • line = s.split(): Dòng này chia xâu s thành một danh sách (list) các xâu con dựa trên khoảng trắng. Mặc định, split() sẽ tách xâu tại các khoảng trắng.
  • ten = line[0]: Lấy phần tử đầu tiên của danh sách line, tức là tên của học sinh, và gán vào biến ten.
  • diem = float(line[1]): Lấy phần tử thứ hai của danh sách line, tức là điểm của học sinh, và chuyển đổi nó thành số thực (float) bằng hàm float(), sau đó gán vào biến diem.
  • A.append((ten, diem)): Thêm (ten, diem) vào danh sách A, trong đó ten là tên của học sinh và diem là điểm của học sinh.

Câu 17.9

Viết chương trình nhập ma trận m x n số nguyên từ bàn phím như sau:

– Đầu tiên nhập số tự nhiên m.

– Lần lượt nhập thông tin của m hàng, mỗi hàng nhập n số cách nhau bởi dấu cách.

– Cuối cùng hiển thị ma trận đã nhập trên màn hình.

Trả lời:

A = []
m = int(input("Nhập số m: "))
for i in range(m):
    s = input("Nhập các phần tử hàng thứ " + str(i+1) + ": ")
    h = [int(x) for x in s.split()]
    A.append(h)

print("Ma trận đã nhập:")
for i in range(m):
    for j in range(len(A[i])): 
        print(A[i][j], end=" ")
    print()
  • h = [int(x) for x in s.split()]: Chuỗi s được chia thành các phần tử riêng lẻ bằng cách sử dụng phương thức split(). Kết quả là một danh sách các chuỗi con. [int(x) for x in s.split()] được sử dụng để chuyển đổi các chuỗi con này thành các số nguyên và lưu chúng vào danh sách h.
  • Vòng lặp for i in range(m): duyệt qua từng hàng của ma trận.
  • Vòng lặp for j in range(len(A[i])): duyệt qua từng phần tử trong hàng thứ i của ma trận.

Câu 17.10*

Cho trước mảng A gồm n phần tử. Viết hàm chuyển mảng A về dạng ma trận vuông bậc n, nếu coi các phần tử của mảng A được sắp xếp theo thứ tự như sau:

A= [a11, a12,…, a1n, a21, a22 ,…, ​​a2n ,…, an1, an2,…, ann]

Trả lời:

def convert(A):
    n = int(len(A) ** 0.5)
    M = []
    for i in range(n):
        temp = A[i * n: (i + 1) * n]
        M.append(temp)
    return M  
  • n = int(len(A) ** 0.5): Hàm này tính bậc của ma trận vuông đích bằng cách lấy căn bậc hai của độ dài của danh sách A. Vì ma trận vuông có số hàng bằng số cột, nên n trong trường hợp này chính là số hàng (hoặc số cột) của ma trận vuông.
  • M = []: Tạo một danh sách rỗng M để chứa ma trận vuông sau khi chuyển đổi.
  • for i in range(n):: Sử dụng một vòng lặp để duyệt qua từng hàng của ma trận vuông (có n hàng).
  • temp = A[i * n: (i + 1) * n]: Trích xuất một phần của danh sách A để tạo một danh sách con temp, bắt đầu từ vị trí i * n đến vị trí (i + 1) * n - 1. Điều này tạo ra một dãy số tương ứng với hàng thứ i trong ma trận vuông.
  • M.append(temp): Thêm danh sách con temp vừa tạo vào danh sách M, tạo thành một hàng của ma trận vuông.
  • return M: Trả về ma trận vuông M sau khi đã chuyển đổi danh sách A thành ma trận.

Xem các bài giải khác: Giải Sách Bài Tập Lớp 11 Khoa Học Máy Tính Kết Nối Tri Thức Với Cuộc Sống

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x