Giải Tin học 10 – Bài 23. Một số lệnh làm việc với dữ liệu danh sách – KNTT

1. Duyệt danh sách với toán tử in

Câu 1. Giả sử A = [“0”, “1”, “01”, “10”]. Các biểu thức sau trả về giá trị đúng hay sai?
a) 1 in A
b) “01” in A

Hướng dẫn giải:
a) False
b) True

Câu 2. Hãy giải thích ý nghĩa từ khóa in trong câu lệnh sau:
for i in range(10):
      <các lệnh>

Hướng dẫn giải:
Khi thực hiện lệnh này, i sẽ lần lượt nhận 10 giá trị đầu tiên của dãy từ 0 đến 9.

2. Một số lệnh làm việc với danh sách

Câu 1. Khi nào thì lệnh A.append(1) và A.insert(0,1) có tác dụng giống nhau?

Câu 2. Danh sách A trước và sau lệnh insert( ) là [1, 4, 10, 0] và [1, 4, 10, 5, 0]. Lệnh đã dùng là gì?

Hướng dẫn giải:

Câu 1: Khi A là tập rỗng.

Câu 2: Lệnh đã dùng là A. insert (3, 5).

Luyện tập

Câu 1. Cho dãy số [1, 2, 2, 3, 4, 5, 5]. Viết lệnh thực hiện:
a) Chèn số 1 vào ngay sau giá trị 1 của dãy.
b) Chèn số 3 và số 4 vào danh sách để dãy có số 3 và số 4 liền nhau hai lần.

Câu 2. Cho trước dãy số A. Viết chương trình thực hiện công việc sau:

  • Xóa đi một phần tử ở chính giữa dãy nếu số phần tử của dãy là số lẻ.
  • Xóa đi hai phần tử ở chính giữa của dãy nếu số phần tử là số chẵn.

Hướng dẫn giải:

Câu 1: A = [1, 2, 2, 3, 4, 5, 5]
a) A.append(1) hoặc A = A + [1] hoặc A.insert(len(A),1)
b) Có nhiều cách
Ví dụ:
A.insert(4,4); A.insert(5,3) hoặc A.insert(4,3); A.insert(4,4)

Câu 2:

#Khởi tạo danh sách A
A = [1,5,7]
#Nếu số phần tử lẻ
if len(A)%2!=0:
    #Xóa phần tử ở giữa
    A.pop(len(A)//2)
#Nếu số phần tử chẵn
else:
    #Xóa 2 phần tử ở giữa
    A.pop(len(A)//2)
    A.pop(len(A)//2)
#In kết quả sau khi xóa
print(A)

Lưu ý: Khi xóa phần tử ở vị trí bất kỳ trong danh sách phải dùng phương thức pop(vị trí phần tử muốn xóa), không được dùng remove() hoặc del remove()del xóa theo giá trị đầu tiên tìm thấy trong danh sách chứ không đúng vị trí phần tử cần xóa.

Vận dụng

Câu 1. Viết chương trình nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số tự nhiên chẵn đầu tiên.

Câu 2. Dãy số Fibonaci được xác định như sau:
$F_{0} = 0$
$F_{1} = 1$
$F_{n} = F_{n-1} + F_{n-2}$ (với n≥2).
Viết chương trinh nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số hạng đầu của dãy Fibonaci.

Hướng dẫn giải:

Câu 1: Chương trình

n = int(input("Mời nhập số nguyên dương n: "))
A = []
for i in range(n): A.append(i*2)
print(A)

Câu 2: Chương trình có 2 cách như sau:

Cách 1: Sử dụng đệ quy

n = int(input('Mời nhập số nguyên dương n: '))
F = [0, 1]
for i in range(2,n):
    F.append(F[i-1] + F[i-2])
print('Dãy các số Fibonaxi gồm:')
for x in F: print(x,end=' ')

Cách 2: Khử đệ quy

n = int(input('Mời nhập số nguyên dương n: '))
F = [0, 1]
a, b = F[0], F[1]
for i in range(2,n):
    F.append(a+b)
    a, b = b, a+b
print('Dãy các số Fibonaxi gồm:')
for x in F: print(x,end=' ')

Xem thêm Bài 24. Xâu kí tự

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *