Tải bản đầy đủ (.doc) (28 trang)

(SKKN 2022) Dạy học ngôn ngữ lập trình Python Phần cấu trúc danh sách trong chương trình Tin học 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (749.95 KB, 28 trang )

MỤC LỤC
1. MỞ ĐẦU

1

1.1. Lí do chọn đề tài

1

1.2. Mục đích nghiên cứu

2

1.3. Đối tượng nghiên cứu

2

1.4. Phương pháp nghiên cứu

2

1.5. Những điểm mới nhất của SKKN

2

2. NỘI DUNG

2

2.1. Cơ sở viết sáng kiến kinh nghiệm


3

2.1.1. Cơ sở lý luận

3

2.1.2. Cơ sở thực tiễn
2.2. Thực trạng của việc dạy học ngơn ngữ lập trình và
phần cấu trúc mảng trong chương trình tin học 11

3

2.3. Các sáng kiến kinh nghiệm đã sử dụng để giải quyết
vấn đề

4

3

2.3.1.Các khái niệm kiểu danh sách(List)

4

2.3.2. Các phép toán trên danh sách

6

2.3.3. Các thao tác trên danh sách (list)

8


2.3.4. Thao tác nhập xuất dữ liệu cho danh sách

17

2.3.5. Một số ví dụ

19

2.3.6. Một số bài tập luyện tập

22

2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt
động giáo dục

24

3. KẾT LUẬN, KIẾN NGHỊ

25

Tài liệu tham khảo

26

Danh mục SKKN đã được hội đồng SKKN ngành giáo
dục và đào tạo huyện, tỉnh và các cấp cao hơn xếp loại
từ C trở lên


27

0


1. MỞ ĐẦU
1.1. Lý do chọn đề tài
Trải qua hơn 15 năm Bộ Giáo dục và Đào tạo đưa môn Tin học trở thành
môn học bắt buộc cho khối THPT, mặc dù đã thu được những kết quả rất khả quan,
song cũng cịn nhiều bất cập làm mơn học chưa đáp ứng được yêu cầu mà Bộ Giáo
dục và Đào tạo đã đề ra. Đặc biệt, cho đến nay, khi CNTT là một ngành phát triển
rất nhanh và mạnh mẽ, thì chương trình mơn Tin học THPT đã trở lên lạc hậu,
khơng cịn phù hợp cả về nội dung và cơng nghệ. Do vậy đổi mới, cải tiến chương
trình mơn Tin học là một việc làm rất cần thiết.
Cụ thể trong chương trình Tin học 11 hiện nay đang dạy về lập trình và ngơn
ngữ lập trình bậc cao, và sử dụng ngơn ngữ lập trình Pascal để viết chương trình
minh hoạ là chính. Tuy nhiên ngơn ngữ này hiện nay đã q cũ, khơng có tính thực
tiễn, nặng về lý thuyết, một số nội dung vượt chuẩn kiến thức kỹ năng, khơng phù
hợp với trình độ nhận thức và tâm lý lứa tuổi của học sinh.
Trong thực tế hiện nay có nhiều ngơn ngữ lập trình bậc cao như C/C ++,
Python…, với những ưu điểm nổi trội như: Cú pháp đơn giản, tốc độ xử lý nhanh,
chế độ tương tác cho phép người lập trình thử nghiệm tương tác sửa lỗi của các
đoạn mã, biên dịch và chạy trên hầu hết các nền tảng hiện nay, …,được nhiều người
dùng để phát triển website và các ứng dụng khác nhau, ngồi ra chúng cịn là ngơn
ngữ được lựa chọn để giảng dạy trong trường học.
Mảng là một phần cơ bản của tất cả các ngơn ngữ lập trình, nó là tập hợp các
phần tử của một kiểu dữ liệu duy nhất. Không giống như mảng, mỗi danh sách
(list) trong NNLT Python có thể lưu trữ phần tử với bất kỳ kiểu dữ liệu nào và làm
được mọi thứ mà mảng có thể làm. Chúng ta có thể lưu trữ số nguyên, số thập
phân, chuỗi trong cùng một danh sách. Vì thế, làm việc với danh sách khá linh

hoạt. Tuy nhiên, trong Python khơng có cấu trúc dữ liệu mảng gốc. Vì vậy, chúng ta
sử dụng danh sách thay cho mảng.
Xuất phát từ những lý do trên tôi lựa chọn đề tài nghiên cứu “Dạy học ngơn
ngữ lập trình Python -phần cấu trúc danh sách trong chương trình tin học 11”
Mục đích là dùng cấu trúc danh sách trong ngơn ngữ lập trình Python thay thế cho
cấu trúc mảng trong ngơn ngữ lập Pascal của chương trình tin học 11 hiện tại. Hi
vọng đây sẽ đề tài bổ sung thêm tài liệu cho học sinh và giáo viên ở các trường
THPT tham khảo, góp phần nâng cao hiệu quả dạy - học môn Tin học 11.
1


1.2. Mục đích nghiên cứu.
- Thơng qua đề tài cung cấp các kiến thức cơ bản về cấu trúc danh sách trong
ngơn ngữ lập trình Python
- Chuyển nội dung phần cấu trúc mảng của ngơn ngữ lập trình Pascal trong
chương trình sách giáo khoa Tin học 11 hiện tại, thành cấu trúc danh sách của ngơn
ngữ lập trình Python theo hướng dẫn điều chỉnh nội dung dạy học môn Tin học đối
với bậc THCS và THPT từ năm học 2020-2021 mà Bộ GD-ĐT ban hành
- Giới thiệu các dạng bài tập và câu hỏi ôn tập về nội dung cấu trúc danh
sách trong ngơn ngữ lập trình Python.
1.3. Đối tượng nghiên cứu
- Tổng quan có chọn lọc những kiến thức cơ bản về cấu trúc danh sách trong
ngôn ngữ lập trình Python để giảng dạy .
- Xây dựng hệ thống câu hỏi và bài tập gắn phù hợp với trình độ Tin học 11
nhằm phục vụ kiểm tra - đánh giá học sinh.
1.4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý luận nhằm thu thập thông tin lý luận để xây
dựng cơ sở lý luận của đề tài.
- Phương pháp nghiên cứu thực tiễn nhằm thu thập các thông tin để xây dựng
nội dung của đề tài: phương pháp nghiên cứu các sản phẩm hoạt động, lấy ý kiến

chuyên gia,…
1.5. Những điểm mới nhất của sáng kiến kinh nghiệm
- Cung cấp những kiến thức về cấu trúc danh sách bằng ngơn ngữ lập trình
Python phù hợp với năng lực và trình độ học sinh khối 11.
- Hình thành các câu hỏi trắc nghiệm ở các mức độ khác nhau để gây hứng
thú học tập cho học sinh.

2


2. NỘI DUNG
2.1. Cơ sở viết sáng kiến kinh nghiệm
2.1.1. Cơ sở lý luận
Python là ngơn ngữ lập trình hướng đối tượng cấp cao mạnh mẽ, được tạo ra
bởi Guido van Rossum. Hiện nay đang nổi lên như một trong những ngơn ngữ lập
trình nhập mơn tốt nhất cho người lần đầu tiếp xúc với ngơn ngữ lập trình. Python
hồn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động. Python có cấu
trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập
trình hướng đối tượng. Cú pháp lệnh của Python là điểm cộng vô cùng lớn vì sự rõ
ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngơn ngữ
lý tưởng để viết script (kịch bản) và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu
hết các nền tảng.
Mảng là một phần cơ bản của tất cả các ngôn ngữ lập trình, nó là tập hợp các
phần tử của một kiểu dữ liệu duy nhất. Tuy nhiên, trong Python, khơng có cấu trúc
dữ liệu mảng gốc, nó có các cấu trúc dữ liệu phức hợp như: Danh sách (List), Tập
hợp (Set), Tuple hay từ điển (Dictionary). Đây là các kiểu dữ liệu phức hợp là tập
hợp của nhiều dữ liệu cơ bản. Nó có một ý nghĩa rất lớn trong các ngơn ngữ lập
trình nói chung và Python nói riêng. Bởi nó cung cấp khả năng làm việc trên tập dữ
liệu chứ không chỉ là các dữ liệu đơn lẻ.
Danh sách trong Python là kiểu dữ liệu tuần tự, cho phép lưu trữ nhiều kiểu

dữ liệu khác nhau trong nó, và có thể truy xuất đến các phần tử bên trong nó thơng
qua vị trí của phần tử đó trong danh sách. Vì vậy có thể coi mảng trong Pascal có
nhiều điểm tương đồng với danh sách trong Python.
2.1.2. Cơ sở thực tiễn
Cơ sở thực tiễn để viết đề tài chính là việc chuyển dạy học ngơn ngữ lập
trình Pascal sang dạy học ngơn ngữ lập trình Python trong chương trình tin học 11
Theo hướng dẫn điều chỉnh nội dung dạy học môn Tin học đối với bậc THCS
và THPT từ năm học 2020-2021 mà Bộ GD-ĐT ban hành, chương trình lớp 11 với
nội dung giảng dạy chủ yếu liên quan đến ngơn ngữ lập trình Pascal đã được điều
chỉnh. Việc điều chỉnh này tập trung vào thay đổi những nội dung vượt quá chuẩn
kiến thức kỹ năng (KTKN), khơng ảnh hưởng nhiều đến mục đích chính của mơn
học là Lập trình và Ngơn ngữ lập trình bậc cao, như xác định trong chương trình
3


Tin học 11 năm 2006. Ngơn ngữ lập trình tùy chọn được sử dụng là để thể hiện các
ví dụ minh họa và là công cụ ngôn ngữ để học sinh thực hành viết được những
chương trình đơn giản.Trên tinh thần loại bỏ Pascal khỏi chương trình Tin học 11,
Các cơ sở giáo dục có thể lựa chọn giảng dạy các ngơn ngữ lập trình có tính cập
nhật, hiện đại, được dạy trong trường phổ thông nhiều nước như Python, C, C++…
2.2. Thực trạng của việc dạy học ngôn ngữ lập trình và phần cấu trúc
mảng trong chương trình tin học 11
- Những năm học trước dạy học cấu trúc mảng của ngơn ngữ lập trình
Pascal, chúng ta đã biết Pascal được chọn sử dụng để dạy ngôn ngữ lập trình cho
học sinh phổ thơng vì 30 năm trước nó khơng có đối thủ về mặt diễn tả thuật tốn
một cách trong sáng. Tuy nhiên, hơn 15 năm nay, Pascal mất ưu thế về mọi mặt và
có một số nhược điểm gây khó khăn cho các em học sinh so với một số ngơn ngữ
khác
- SGK Tin học 11 trình bày các yếu tố đặc trưng riêng về Pascal quá sâu,
khơng cần thiết. Ngồi ra một số nội dung về Pascal gây quá tải cho dạy và học,

nặng về lí thuyết và vượt chuẩn kiến thức kỹ năng, một số nội dung khơng phù hợp
với trình độ nhận thức và tâm sinh lý lứa tuổi học sinh.
2.3. Các sáng kiến kinh nghiệm đã sử dụng để giải quyết vấn đề
2.3.1.Các khái niệm kiểu danh sách(List)
- Danh sách (List) trong Python là một tập hợp các phần tử, mà mỗi phần tử
có kiểu dữ liệu giống nhau hoặc khác nhau.
- Khai báo một danh sách như sau:
<biến danh sách>=[phần tử 0, phần tử 1,....phần tử n-1]
Trong đó các phần tử trong danh sách được liệt kê trong cặp dấu ngoặc
vuông [] và phân cách nhau bởi dấu phảy.
Ví dụ 1:
ds1=[]

#Danh sách rỗng

ds2=[1,2,3] #Danh sách các số nguyên gồm 3 phần tử
ds3=[1,”xin chào”, 4.5] #Danh sách hỗn hợp gồm 3 phần tử
ds4=[“Nhớ”,“Hà Nội”,“Hoa sữa”] #Danh sách các chuỗi kí tự, gồm 3 phần tử
4


ds5=[“Máy tính”, [1,2],[“a”]]

#Danh sách hỗn hợp gồm 3 phần tử.

Để truy cập tới một phần tử trong danh sách, ta dùng cú pháp sau:
<biến danh sách>[chỉ số của phần tử đó]
Trong đó các phần tử trong danh sách được đánh chỉ số 0,1,2...từ trái qua
phải và -1,-2,-3,....từ phải qua trái.
Ví dụ 2 :

ds=[‘P’,’Y’,’T ',’H’,’O’,’N’]
Phần tử

P

Y

T

H

O

N

Chỉ số

0

1

2

3

4

5

-6


-5

-4

-3

-2

-1

Chỉ
âm

số

ds[1]=’Y’ ;ds[-3]=’H’
Ví dụ 3 :

Kết quả

Chú ý : Nếu truy cập vào chỉ số không tồn taijtrong danh sách trình thơng
dịch sẽ báo lỗi IndexError :list index out of range

5


2.3.2. Các phép toán trên danh sách
a. Nối (ghép) danh sách và lặp danh sách
* Nối (ghép) danh sách : ký hiệu dấu +

<biến danh sách 1>+<biến danh sách 2>+…….+<biến danh sách n>
Kết quả trả về danh sách gồm <biến danh sách 1>, <biến danh sách 2>,
…,<biến danh sách n> là các phần tử được ghép liên tiếp nhau.
Ví dụ :
list1=[1,2,3,4]
list2=[2,3,4,5]
list3= list1+ list2
print(list3)
=> kết quả trả về là [1,2,3,4,2,3,4,5]
* Phép lặp danh sách : Ký hiệu là dấu *
<biến danh sách >*số lần lặp
Hoặc
số lần lặp*<biến danh sách >
=> kết quả trả về là số <biến danh sách > bằng số lần lặp
Ví dụ :

6


Kết quả:

b. Phép toán in và not in
in <biến danh sách >
=> Trả về giá trị True nếu thuộc <biến danh sách >, ngược lại trả
về trị False
Ví dụ:

Kết quả:

7



c. Phép toán Min, Max trong danh sách
max(<biến danh sách>)
=> Trả về kết quả là phần tử lớn nhất trong <biến danh sách>
min(<biến danh sách>)
=> Trả về kết quả là phần tử nhỏ nhất trong <biến danh sách>
Ví dụ:

Kết quả:

2.3.3. Các thao tác trên danh sách (list)
a. Lấy số lượng phần tử trong danh sách:
len(<biến danh sách>)
=> Trả về số lượng phần tử có trong <biến danh sách>
Ví dụ
ds=[1,2,3,4,5]
print(len(ds))
=> 5
b. Truy cập tới các phần trong danh sách
<biến danh sách>[chỉ số]
=> Truy cập tới phần tử có [chỉ số] trong <biến danh sách>
8


Ví dụ :

Kết quả là :

Chú ý : Để đưa ra tất cả các phần tử trong danh sách ta cũng có thể thực hiện

như sau :

Kết quả :

c. Lấy các phần tử liên tiếp trong danh sách
Dạng 1 : <biến danh sách>[a :b]
=> Trả về danh sách gồm các phần tử có chỉ số từ a đến chỉ số b-1 trong
<biến danh sách>
9


Ví dụ:
ds=[‘a’,’b’,’c’,’d’,’e’]
ds1=ds[1:4]
print(ds1)
=>ds1= [‘b’,’c’,’d’]
Dạng 2 : <biến danh sách>[ :b]
=> Trả về danh sách gồm các phần tử có chỉ số từ 0 đến chỉ số b-1 trong
<biến danh sách>
Như vậy <biến danh sách>[ :b]== <biến danh sách>[ 0:b]
Ví dụ:
ds=[1,2,3,4,5,6,7,8]
ds1=ds[:4]
print(ds1)
=>ds1= [0,1,2,3]
Dạng 3 : <biến danh sách>[ a:]
=> Trả về danh sách gồm các phần tử có chỉ số từ a đến hết trong sách>
Như vậy <biến danh sách>[ a:]== <biến danh sách>[ a:n]
Trong đó: n=len(<biến danh sách>)

Ví dụ:
ds=[1,2,3,4,5,6,7,8]
ds1=ds[4 :]
print(ds1)
=>ds1= [4,5,6,7,8]
Dạng 4 : <biến danh sách>[ a:b:c]
=> Trả về danh sách gồm tất cả các phần tử có chỉ số:[a],[a+c],[a+2c]…
[a+tc] với a+tcTrong đó: n=len(<biến danh sách>)

10


Ví dụ:
ds=[1,2,3,4,5,6,7,8,9,10]
ds1=ds[0 :8 :3]
print(ds1)
=>ds1= [0,3,6]
d.Thêm phần tử vào danh sách, mở rộng danh sách
Dạng 1 : <biến danh sách>.append(x)
=>Thêm một phần tử x vào cuối <biến danh sách>
Ví dụ:
ds=[1,2,3]
ds1=ds.append(x)
print(ds1)
=> [1,2,3,4]
Dạng 2 : <biến danh sách>.extend(list)
=>Nối danh sách list vào <biến danh sách>
Ví dụ 1:
ds=[1,2,3]

ds1=[3,4,5]
ds1.extend(ds1)
print(ds1)
=>ds1= [1,2,3,3,4,5]
Ví dụ 2:
ds=[1,2,3]
ds1.extend(range(4))
print(ds1)
=> ds=[1,2,3,3,4,5]
11


Sự khác nhau giữa hai phương thức append() và extend() thơng qua ví dụ
sau :

Kết quả :

Như vậy ds2.append(ds3) nghĩa là thêm danh sách <ds3> vào danh sách
<ds2> như một phần tử của danh sách <ds2>.
ds1.extend(ds3) thêm các phần tử của danh sách <ds3> vào danh sách <ds2>.
e. Cách thay đổi giá trị của một phần tử trong danh sách
<biến danh sách>[chỉ số]=giá trị mới
Ví dụ :
ds=[‘Táo’,’Lê ‘,’Bưởi’]
ds[1]=’Cam’
=> ds=[‘Táo’,’Cam ‘,’Bưởi’]
f. Phương thức index
<biến danh sách>.index(x)
=> Trả về chỉ số của phần tử đầu tiên trong <biến danh sách> có giá trị bằng
x

12


Ví dụ 1:
ds=[1,2,3,2]
print(‘Chỉ số của phần tử đầu tiên bằng 2 là:’)
print(ds.index(2))
Kết quả:

Ví dụ 2 :

Kết quả:

Từ ví dụ 2 ta thấy nếu x khơng thuộc <biến danh sách> thì chương trình sẽ
báo lỗi. có thể sửa chương trình như sau :

g. Hàm copy()
<biến danh sách>.copy()
=>trả về bản sao của <biến danh sách>
13


Ví dụ:
ds=[1,2,3,2,9,8,10]
ds1=ds.copy()
print(ds1)
=> ds1=[1,2,3,2,9,8,10]
h. Hàm count()
<biến danh sách>.count(x)
=>trả về số lần xuất hiện của phần tử x trong <biến danh sách>

ds=[1,4,3,4,9,8,10]
print(ds.count(4))
=> 2
i. Thủ tục insert()
<biến danh sách>.insert(n,x)
=>Đây là thủ tục để thêm một phần tử x vào vị trí n trong <biến danh sách>
Ví dụ:
ds=[1,2,3,2,9,8,10]
ds.insert(4,7)
print(ds)
=> ds=[1,2,3,2,7,9,8,10]
k. Hàm sort()
<biến danh sách>.sort()
=>thực hiện sắp xếp các phần tử của <biến danh sách> tăng dần
Ví dụ:
ds=[1,2,3,2,9,8,10]
ds.sort()
print(ds)
=> ds=[1,2,2,3,8,9,10]
14


l. Hàm reverse()
<biến danh sách>. reverse()
=>thực hiện đảo ngược vị trí xuất hiện các phần tử trong <biến danh sách>
Ví dụ:
ds=[1,2,3,2,9,8,10]
ds. reverse()
print(ds)
=> ds=[10,8,9,2,3,2,1]

m. Hàm remove()
<biến danh sách>. remove(x)
=>thực hiện xóa phần tử x xuất hiện đầu tiên trong <biến danh sách>
Ví dụ:
ds=[1,2,3,2,9,8,10]
ds. remove(2)
print(ds)
=> ds=[1,3,2,9,8,10]
n. Hàm del
del <biến danh sách>[chỉ số]
=>thực hiện xóa phần tử có [chỉ số] trong <biến danh sách>
Ví dụ 1:

Ví dụ 2:

ds=[1,2,3,2,9,8,10]

ds=[1,2,3,2,9,8,10]

del ds[2]

del ds[1 :3]

print(ds)

print(ds)

=> ds=[1,2,2,9,8,10]

=> ds=[1,9,8,10]


o. Hàm pos()
<biến danh sách>. pos(x)
=>thực hiện xóa phần tử có chỉ số x trong <biến danh sách>
15


Ví dụ:
ds=[1,2,3,2,9,8,10]
ds. pos(2)
print(ds)
=> ds=[1,2,2,9,8,10]
2.3.4. Thao tác nhập xuất dữ liệu cho danh sách
a. Thao tác nhập dữ liệu từ bàn phím cho các phần tử cùng kiểu trong
danh sách
input().split()]

sách>=[<kiểu>(
chạy>)

for


chạy>

in


Trong đó:


split() dùng để cắt chuỗi



<biến danh sách>, <biến chạy>) được đặt theo quy tắc đặt tên biến



<kiểu> là kiểu int hoặc float

Với cách này khi nhập dữ liệu từ bàn phím cho danh sách thì các phần tử
ngăn cách nhau bởi ít nhất một dấu cách, và kết thúc nhập bằng enter.
Ví dụ :

Kết quả là :

16


b. Dùng hàm append để nhập các phần tử cùng kiểu cho danh sách.

Kết quả là :

17


c. Dùng phép toán ghép danh sách để tạo danh sách là các phần tử cùng kiểu.


d. Đưa danh sách ra màn hình
for i in ds :
print(i)
2.3.5. Một số ví dụ
Ví dụ 1. Tìm phần tử lớn nhất của dãy số nguyên
Input: Số nguyên dương N (N  250) và dãy N số nguyên dương a1, a1 ,...,
an, mỗi số đều không vượt quá 500.
Output: Chỉ số và giá trị của phần tử lớn nhất trong dãy số đã cho (nếu có
nhiều phần tử lớn nhất chỉ cần đưa ra một trong số chúng).
18


Kết quả

Ví dụ 2. Sắp xếp dãy số nguyên bằng thuật toán tráo đổi
Input: Số nguyên dương N (N  250) và dãy N số nguyên dương a1, a1 ,...,
an, mỗi số đều không vượt quá 500.
Output: Dãy số A đã được sắp xếp thành dãy không giảm.
19


Kết quả :

Ví dụ 3. Tìm kiếm nhị phân
Input: Dãy A là dãy tăng gồm N (N  250) số nguyên dương a1, a1 ,..., an, và
số nguyên k
Output: Chỉ số i mà ai = k hoặc thông báo "Khong tim thay" nếu khơng có
số hạng nào của dãy A có giá trị bằng k.
Để giải bài tốn này, chúng ta sẽ sử dụng thuật tốn tìm kiếm nhị phân được

trình bày trong sách giáo khoa Tin học 10.
20


Kết quả :

21


2.3.6. Một số bài tập luyện tập.
a. Các câu hỏi trắc nghiệm
Câu 1 :Kiểu dữ liệu danh sách là gì ?
A. Là tập hợp các phần tử của một kiểu dữ liệu hoặc nhiều kiểu dữ liệu.
B. Là một phần không câng thiết của tất cả các ngôn ngữ lập trình.
C. Là tên cho biến, hàm trong NNLT Python
D. Là đoạn lệnh dùng để lặp lại một khối lệnh khi điều kiện kiểm tra là đúng.
Câu 2 :Kết quả đầu ra của đoạn lệnh dưới đây là gì ?
ds=[1,5,9,int(”0 ”)]
print(sum(ds))
A. 16
B. 15
C.63
D. A,B,C đều sai
Câu 3 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?
ds=[‘a’,’aa’,’aaa’,’b’,’bb’,’bbb’]
print(ds[ :-1])
A. [a,aa,aaa,b,bb]
B. [‘a’,’aa’,’aaa’,’b’,’bb’]
C. [‘a’,’aa’,’aaa’,’b’,’bb’,’bbb’]
D. Báo lỗi

Câu 4 : Đoạn lệnh sau đây làm nhiệm vụ gì ?
a=[]
for x in range(10) :
a.append(int(input()))
A. Nhập dữ liệu từ bàn phím cho mảng a có 10 phần tử là số nguyên.
B. Nhập dữ liệu từ bàn phím cho mảng a có 10 phần tử là số thực
C. Nhập dữ liệu từ bàn phím cho mảng a có 10 phần tử là xâu
D. Khơng có đáp án đúng.
Câu 5 : Cách khai báo biến mảng sau đây, cách nào là sai :
A. ds=[1,2,3]
B. ds=[x for x in range(3)]
C. ds=[int(x) for x in input().split()]
D. ds=list(3)
Câu 6 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?
ds=[”Bơi ”,”Võ ”, ”Bóng chuyền ”, ”Cầu lơng ”, ”Xe đạp ” ]
x=len(ds)
print(”Độ dài của danh sách ds là ”,x)
A. 4
B. 4
C. 5
D. 6

22


Câu 7 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?
ds=[”Bơi ”,”Võ ”, ”Bóng chuyền ”, ”Cầu lông ”, ”Xe đạp ” ]
ds.pop(4)
for x in ds :
print(x)

A. Bơi
B. Bơi
C. Bơi
D. A,B,C đều sai



Bóng chuyền
Bóng chuyền
Bóng chuyền
Cầu lông
Cầu lông
Xe đạp
Câu 8 : Trong NNLT Python sắp xếp các phần tử trong danh sách theo thứ tự tăng
dần thì sử dụng phương thức nào :
A. clear()
B. pop()
C. sort()
D. remove()
Câu 9: Trong NNLT Python, phương thức dùng để thêm phần tử vào cuối danh
sách là :
A. append()
B. insert()
C. copy()
D.pop()
Câu 10: Trong NNLT Python, hàm dùng để trả về độ dài của danh sách là :
A. len()
B.long()
C.Len()
D.count()

Câu 11: Trong NNLT Python, để xố tất cả các phần tử có trong danh sách thì sử
dụng phương thức nào :
A. clear()
B. pop()
C. sort()
D. remove()
Câu 12 : Cho khai báo danh sách sau :
a=list(”3456789 ”
Để in giá trị phần tử thứ 2 của danh ra màn hình ta viết :
A. print(a[2])
B. print(a[1])
C. print(a(2))
D. print(a(1))
b. Bài tập thực hành
Nhập vào một dãy n số ngun a. Đọc ra màn hình các thơng tin sau :
1. Tổng các phần tử của dãy.
2. Số lượng các số hạng dương và tổng của các số hạng dương.
3. Trung bình cộng của cả dãy. Trung bình cộng các phần tử dương của List.
Trung bình cộng các phần tử âm của List.
4. Số hạng âm lớn nhất của dãy và chỉ số của nó.
5. Số hạng dương nhỏ nhất của dãy và chỉ số của nó.
6. Số lượng các số hạng dương liên tiếp có tổng lớn nhất.
7. Đoạn con có các số hạng dương liên tiếp có tổng lớn nhất (nếu có nhiều
đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó)
8. Số lượng các phần tử bằng giá trị X (nguyên) cho trước.
9. Số lượng các phần tử >= giá trị X (nguyên) cho trước.
10. Chèn một số nguyên m (m nhập vào từ bàn phím) vào vị trí k .
23



2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục
Trên cơ sở nghiên cứu và hoàn thành biện pháp, tôi đã tiến hành áp dụng
biện pháp này tại trường THPT chuyên Lam Sơn, kết quả thu được cụ thể như sau:
- Góp phần đổi mới nội dung, phương pháp và hình thức tổ chức dạy học
mơn Tin học, tạo ra sự tương tác đa chiều: GV – HS, HS – HS...
- Thông qua việc quan sát, tôi nhận thấy các em học sinh rất say mê và hứng
thú trong học tập.
- Phát huy phẩm chất và năng lực về tư duy, tìm tịi, sáng tạo của học sinh

24