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ặpfor
để lặp qua từ 0 đếnn-1
. Mỗi lần lặp, biếni
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áchA
. Để tạo một hàng gồmn
số 0, chúng ta sử dụng[0] * n
. Ký hiệu[0] * n
tạo ra một danh sách chứan
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áchDS
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áchDS
.
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áchDiem
. Cụ thể, nó sử dụng hàmsum
để tổng hợp các điểm số trongDiem
và sau đó chia cho số lượng điểm số, được tính bằng hàmlen(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áchDS
, 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ếni
đang chạy từ0
đếnn-1
, nêni + 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âus
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áchline
, tức là tên của học sinh, và gán vào biếnten
.diem = float(line[1])
: Lấy phần tử thứ hai của danh sáchline
, tức là điểm của học sinh, và chuyển đổi nó thành số thực (float) bằng hàmfloat()
, sau đó gán vào biếndiem
.A.append((ten, diem))
: Thêm(ten, diem)
vào danh sáchA
, 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ỗis
được chia thành các phần tử riêng lẻ bằng cách sử dụng phương thứcsplit()
. 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áchh
.- 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áchA
. Vì ma trận vuông có số hàng bằng số cột, nênn
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ỗngM
để 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áchA
để tạo một danh sách contemp
, 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 contemp
vừa tạo vào danh sáchM
, tạo thành một hàng của ma trận vuông.return M
: Trả về ma trận vuôngM
sau khi đã chuyển đổi danh sáchA
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