SKKN Xây dựng một số bài tập về kiểu dữ liệu danh sách và xâu kí tự nhằm hỗ trợ phát triển phẩm chất và năng lực học sinh lớp 10 học lập trình bằng ngôn ngữ Python,

4.5/5

Giá:

100.000 đ
Cấp học: THPT
Môn: Tin học
Lớp: 10
Bộ sách:
Lượt xem: 290
File:
TÀI LIỆU WORD
Số trang:
43
Lượt tải:

7

Sáng kiến kinh nghiệm SKKN Xây dựng một số bài tập về kiểu dữ liệu danh sách và xâu kí tự nhằm hỗ trợ phát triển phẩm chất và năng lực học sinh lớp 10 học lập trình bằng ngôn ngữ Python triển khai gồm các biện pháp nổi bật sau:

3.1. Bài tập về kiểu dữ liệu danh sách
3.1.1 Một số bài tập cơ bản
3.1.1.1. Tìm hiểu về danh sách
3.2.2.2. Đếm số lần xuất hiện chữ số
3.2.2.3. Đảo ngược các từ
3.2.2.5. Rút gọn xâu

Mô tả sản phẩm

PHẦN I. ĐẶT VẤN ĐỀ
1. Lý do chọn đề tài
Trong thời đại cách mạng công nghiệp 4.0, công nghệ thông tin đóng một vai trò rất quan trọng trong hầu hết tất cả các lĩnh vực đời sống xã hội. Vì vậy, nhu cầu về nguồn nhân lực công nghệ thông tin là rất lớn, do đó trong chương trình giáo dục phổ thông mới đã có những thay đổi mạnh mẽ để đáp ứng với yêu cầu mới của xã hội và hội nhập quốc tế. Việc tạo ra nguồn nhân lực công nghệ thông tin vững mạnh là một nhiệm vụ quan trọng góp phần thúc đẩy sự phát triển kinh tế xã hội. Từ năm học 2022-2023 các em học sinh lớp 10 bắt đầu được học chương trình giáo dục phổ thông mới, nội dung môn tin học cũng có nhiều thay đổi, trong đó có nội dung học lập trình bằng ngôn ngữ Python.
Là một giáo viên tin học, ngoài việc dạy cho các em những kiến thức cơ bản về tin học thì việc khích lệ, động viên, tạo hứng thú cho các em học lập trình thông qua hệ thống các bài tập từ cơ bản đến nâng cao, tạo động lực cho những em có năng lực, đam mê theo đuổi lĩnh vực công nghệ thông tin, đóng góp vào đội ngũ nhân lực công nghệ thông tin chất lượng sau này cho nước nhà là một việc rất cần thiết.
Học lập trình đối với nhiều học sinh là một nội dung tương đối khó, vì thế trong dạy học lập trình tôi luôn cố gắng nghiên cứu sách giáo khoa, các tài liệu tham khảo, đúc rút những kinh nghiệm dạy các khóa trước để tìm ra những cách dạy phù hợp, giúp học sinh tiếp cận và giải quyết vấn đề một cách hiệu quả. Qua đó góp phần gia tăng chất lượng và số lượng học sinh yêu thích môn tin học nói chung và lập trình nói riêng.
Qua quá trình dạy học lập trình ở bậc trung học phổ thông, tôi nhận thấy phần kiến thức về kiểu dữ liệu danh sách và xâu kí tự là nội dung khá quan trọng, chính vì vậy giáo viên cần có biện pháp hỗ trợ học sinh học tốt nội dung này. Từ những trăn trở đó, tôi chọn đề tài “Xây dựng một số bài tập về kiểu dữ liệu danh sách và xâu kí tự nhằm hỗ trợ phát triển phẩm chất và năng lực học sinh lớp 10 học lập trình bằng ngôn ngữ Python”, giúp giáo viên và học sinh có thêm tài liệu tham khảo hỗ trợ quá trình dạy và học được tốt hơn.
2. Mục đích nghiên cứu
Nhằm nâng cao hiệu quả việc học lập trình phần kiểu dữ liệu danh sách và xâu kí tự bằng ngôn ngữ Python. Từ đó tạo động lực, hứng thú, thúc đẩy đam mê để các em tiếp tục học lập trình ở các phần tiếp theo được tốt hơn.
3. Đối tượng nghiên cứu
– Học sinh lớp 10 học theo chương trình giáo dục phổ thông mới.
– Nghiên cứu lập trình bằng ngôn ngữ Python, nội dung kiến thức liên quan đến kiểu dữ liệu danh sách và xâu kí tự.
– Xây dựng một số bài tập và thực hiện viết code để xử lý.
4. Phương pháp nghiên cứu
Kết hợp một số phương pháp :
– Nghiên cứu lý thuyết, nghiên cứu từ thực tiễn dạy học.
– Phương pháp thực nghiệm sư phạm:
+ Tổ chức hoạt động dạy và học, lưu lại bài làm của học sinh, khảo sát kết quả học tập, phân tích diễn biến quá trình thực nghiệm, rút kinh nghiệm giờ dạy, từ đó có những điều chỉnh, bổ sung để hoàn thiện đề tài.
5. Tính mới của đề tài
Đề tài đã triển khai tại trường trung học phổ thông Tân Kỳ 3 khá hiệu quả, góp phần nâng cao chất lượng dạy học lập trình cho học sinh lớp 10 khi học chương trình giáo dục phổ thông mới 2018.
Giúp học sinh có được nguồn tài liệu học tập bổ ích, đem lại niềm vui, hứng thú và tạo động lực cho học sinh học lập trình.
Sáng kiến có thể được sử dụng làm tài liệu tham khảo cho giáo viên môn tin dạy học lập trình bằng ngôn ngữ Python, nhằm nâng cao hiệu quả dạy học môn Tin ở trường trung học phổ thông.
PHẦN II. NỘI DUNG NGHIÊN CỨU
1. Cơ sở lý thuyết
Tìm hiểu nội dung các bài học liên quan đến kiểu dữ liệu danh sách và xâu kí tự trong chương trình tin học lớp 10 theo chương trình giáo dục phổ thông mới 2018. Tìm hiểu thực trạng, độ hứng thú của học sinh và những khó khăn vướng mắc của học sinh khi học nội dung “kiểu dữ liệu danh sách và xâu kí tự”. Nghiên cứu, rút kinh nghiệm qua các năm đã dạy học sinh học lập trình bằng ngôn ngữ pascal, C++, để cải tiến áp dụng cho dạy học lập trình bằng ngôn ngữ python.
Tìm hiểu cơ sở lý luận về phương pháp dạy học lập trình bằng ngôn ngữ python ở trường trung học phổ thông.  Tìm hiểu cách xây dựng một số bài tập về kiểu dữ liệu danh sách và xâu kí tự.
Thực hiện các phương án giải các bài toán nhằm phát triển phẩm chất năng lực học sinh, tạo hứng thú cho học sinh khi học lập trình, khơi dậy niềm đam mê tin học.
2. Cơ sở thực tiễn
Hiện nay nhu cầu về nguồn lao động của xã hội đang cần rất nhiều những người có trình độ tốt về tin học, đặc biệt là nguồn nhân lực có chất lượng cao về công nghệ thông tin.
Tuy nhiên việc đào và bồi dưỡng học sinh yêu thích môn tin ở các trường trung học phổ thông nói chung và trường Tân Kỳ 3 nói riêng còn gặp nhiều khó khăn. Do tâm lí chung của nhiều phụ huynh và học sinh vẫn xem môn tin là môn phụ nên các em chưa có sự đầu tư quan tâm đúng mức cho môn tin học.
Bên cạnh đó, trong quá trình học lập trình nhiều em học sinh mới chỉ trang bị cho mình được sách giáo khoa để học còn tài liệu tham khảo thì chưa có điều kiện để mua hoặc chưa tìm được tài liệu phù hợp. Do đó, việc giáo viên tìm kiếm, xây dựng, trang bị, chia sẽ những tài liệu hay phù hợp với chương trinh học và đối tượng học sinh nhằm góp phần nâng cao chất lượng học lập trình và thực hiện tốt nhiệm vụ môn học theo chương trình giáo dục phổ thông mới 2018 là việc rất cần thiết.
3. Giải pháp
Nội dung chính của sáng kiến tập trung vào xây dựng hệ thống bài tập về kiểu dữ liệu danh sách và xâu kí tự từ mức độ cơ bản đến mức độ nâng cao. Mỗi bài tập đưa ra được phân tích cách giải, có code tham khảo đi kèm cũng như kết quả chạy chương trình minh họa. Hệ thống bài tập như sau:
3.1. Bài tập về kiểu dữ liệu danh sách
3.1.1 Một số bài tập cơ bản
3.1.1.1 Tìm hiểu về danh sách

Bài 1: Hãy lấy ví dụ về: danh sách 5 màu sắc quen thuộc, danh sách 10 chữ cái in hoa đầu tiên trong bảng chữ cái tiếng Anh, danh sách các tổ của lớp.
Hướng dẫn:
– Danh sách 5 màu sắc quen thuộc: xanh, đỏ, tím, vàng, cam.
– Danh sách 10 chữ cái đầu tiên trong bảng chữ cái tiếng anh: A,B,C,D,E,F,G,H,I,J – Danh sách các tổ của lớp: Tổ 1, Tổ 2, Tổ 3, Tổ 4
3.1.1.2. Khởi tạo danh sách bằng lệnh gán
Bài 2: Hãy khởi tạo các danh sách sau bằng lệnh gán: danh sách A chứa các số sau (3,5,2,4,8,9), danh sách B chứa tên các màu (xanh, đỏ, tím, vàng, cam), danh sách C không chứa phần tử nào, danh sách D chứa các giá trị (10, 15.5, “tin học”)
Hướng dẫn:
A=[3,5,2,4,8,9];  B=[ “xanh”, “đỏ”, “tím”, “vàng”, “cam”];  C=[];
D=[10, 15.5, “tin học”]
3.1.1.3. Bổ sung phần tử vào danh sách
a. Bổ sung một phần tử vào cuối danh sách bằng lệnh append()
Bài 3: Cho danh sách B=[ “xanh”,”đỏ”,”tím”] hãy bổ sung màu “vàng “ vào cuối danh sách B
Hướng dẫn:   ta viết lệnh
B.append(“vàng”)
Hình ảnh minh họa chụp từ phần mềm Python:

b. Bổ sung n phần tử vào cuối danh sách bằng lệnh append() kết hợp với vòng lặp
Bài 4: Cho danh sách A=[3,5,2,4,8,9], hãy bổ sung n số nguyên bất kì vào cuối danh sách A  (n nhập từ bàn phím).
Hướng dẫn:
Ta cần nhập số nguyên dương n để biết số lượng phần tử cần bổ sung, sau đó dùng lệnh append() để bổ sung các phần tử vào danh sách A. Chú ý trong trường hợp này lệnh append được sử dụng n lần nên ta có thể sử dụng câu lệnh for để điều khiển việc bổ sung phần tử. Chương trình có thể viết như sau:

Kết quả khi chạy chương trình minh họa với n=5:

c. Bổ sung một phần tử x vào vị trí k bằng lệnh insert(k,x)
Bài 5: Cho danh sách A=[6,8,10,7,5,3] hãy chèn số nguyên x (x nhập từ bàn phím) vào vị trí có chỉ số bằng 3 của danh sách A. ( chú ý: chỉ số các phần tử của danh sách được đánh từ 0).
Ta có thể viết chương trình tham khảo như sau: A=[6,8,10,7,5,3]
x=int(input(“hay nhap so nguyen x= “)) A.insert(3,x) print(A)
Kết quả chạy chương trình minh họa :
d. Tạo mới một danh sách gồm n số nguyên.
Bài 6: Viết chương trình nhập vào một danh sách A có n số nguyên. In ra màn hình danh sách vừa tạo.
Chương trình tham khảo:

Kết quả chạy chương trình minh họa như sau:

3.1.1.4. Nối ghép danh sách bằng phép + hoặc lệnh extend()
Bài 7.  Cho danh sách A=[1,2,3], danh sách B=[4,5,6]. Hãy ghép danh sách B vào danh sách A.
Chương trình tham khảo bằng cách sử dụng phép ghép danh sách (+)

Chương trình minh họa bằng cách sử dụng lệnh extend()

3.1.1.5. Xóa phần tử của danh sách
a. Xóa toàn bộ dữ liệu của danh sách bằng lệnh clear()
Bài 8: Cho danh sách A=[6,8,10,7,5,3]. Viết lệnh xóa toàn bộ danh sách A.
Chương trình tham khảo và cho kết quả như sau:

Chú ý: sau khi xóa danh sách A bằng lệnh clear(), danh sách A trở thành rỗng.
b. Xóa một phần tử x có trong danh sách bằng lệnh remove(x)
Bài 9: Cho danh sách A=[6,8,10,7,5,3]. Hãy xóa phần tử có giá trị bằng 10.
Chương trình tham khảo:

Kết  như chạy chương trình sau:

Chú ý: nếu phần tử x được chỉ ra để xóa không có trong danh sách thì máy sẽ báo lỗi.
3.1.1.6. Kiểm tra độ dài hiện thời của danh sách bằng lệnh len()
Bài 10: Viết chương trình nhập vào một danh sách A có n số nguyên (n nhập từ bàn phím). Thông báo lên màn hình độ dài của danh sách A.

3.1.1.7.  Duyệt tìm kiếm trên danh sách bằng lệnh for kết hợp với lệnh range().
Bài 11: Viết chương trình nhập vào một danh sách A có n số nguyên (n nhập từ bàn phím). Thông báo lên màn hình các số chẵn có trong danh sách A theo thứ tự từ trái qua phải.
Chương trình tham khảo và cho kết quả như sau:

Bài 12: Viết chương trình nhập vào một danh sách A có n số nguyên ( n nhập từ bàn phím) và một số nguyên k. Tính tổng các số chia hết cho k có trong danh sách A. Thông báo kết quả tính được ra màn hình.
Chương trình tham khảo như sau:
A=[];    t=0; n=int(input(“hay nhap so luong phan tu = “)) for i in range(1,n+1):
x=int(input(“phan tu thu “+str(i)+”=”))     A.append(x) k=int(input(“hay nhap k= “)) for i in range(0,n):
if A[i]% k==0:
t=t+A[i]
print(“tong cac so chia het cho k co trong day A = “,t)
Kết quả khi chạy chương trình minh họa với n=6; k=3

Chú ý: ta cũng có thể duyệt tìm kiếm tuần tự trên danh sách bằng vòng lặp while để giải cho bài toán trên như sau: A=[];  t=0;  i=0 n=int(input(“hay nhap so luong phan tu = “));   k=int(input(“hay nhap k= “)) print(“hay nhap cac phan tu vao danh sach A:”) while i<n:
x=int(input())     A.append(x)         if A[i]% k==0:   t=t+A[i]     i=i+1 print(“tong cac so chia het cho k co trong day A = “,t)
3.1.1.8.  Duyệt danh sách với toán tử in
Bài 13: Viết chương trình tạo một danh sách A gồm n số nguyên, in ra màn hình các số chẵn có trong danh sách A.
Lưu ý: ngoài cách duyệt danh sách bằng vòng lặp for kết hợp với range() hoặc vòng lặp while ta còn có thể sử dụng toán tử in để duyệt mà không cần đến range(). Chương trình tham khảo như sau:

Kết quả chạy chương trình minh họa như sau:

Bài 14: Viết chương trình nhập vào một số nguyên m và một danh sách A gồm n số nguyên, đếm xem có bao nhiêu số trong danh sách A chia hết cho m.
Hướng dẫn:  ta có thể sử dụng toán tử in để duyệt tìm kiếm các phần tử trong danh sách A là bội của m. Chương trình tham khảo:

3.1.1.9.  Sắp xếp các phần tử trong danh sách bằng lệnh sort()
Ta có thể sử dụng lệnh sort() để sắp xếp các phần tử trong danh sách tăng dần hoặc giảm dần. Lệnh sort() có cú pháp như sau:
*Sắp xếp tăng dần:  <danh sách>.sort()
*Sắp xếp giảm dần:  <danh sách>.sort(reverse = True) Bài toán áp dụng:
Bài 15: Viết chương trình tạo một danh sách A gồm n số nguyên, sau đó sắp xếp các phần tử trong danh sách A theo thứ tự tăng dần. Thông báo kết quả của danh sách A sau khi sắp xếp tăng dần.
Chương trình tham khảo:
A=[];   n=int(input(“hay nhap so luong phan tu = “)) print(“nhap cac phan tu cho danh sach A”) for i in range(1,n+1):    x=int(input());    A.append(x) A.sort()
print(” danh sach A sau khi sap xep:”);   print(A)
Kết quả minh họa khi chạy chương trình sắp xếp tăng dần:

Bài 16: Viết chương trình tạo một danh sách A gồm n số nguyên, sau đó sắp xếp các phần tử trong danh sách A theo thứ tự giảm dần. Thông báo kết quả của danh sách A sau khi sắp xếp giảm dần.
Ta có thể viết chương trình như sau: A=[] n=int(input(“hay nhap so luong phan tu = “)) print(“nhap cac phan tu cho danh sach A”) for i in range(1,n+1):
x=int(input())
A.append(x)
A.sort(reverse = True) print(” danh sach A sau khi sap xep:”);  print(A)
Kết quả minh họa khi chạy chương trình sắp xếp giảm dần:

3.1.1.10. Đếm số lần xuất hiện một phần tử trong danh sách bằng lệnh count()
Khi cần đếm số lần xuất hiện của một phần tử nào đó trong danh sách ta có thể sử dụng vòng lặp để duyệt tuần tự. Ngoài cách đó ra, ta có thể sử dụng lệnh count() có sẵn trong Python để thực hiện một cách nhanh chóng yêu cầu trên.
Cú pháp lệnh count() như sau: <danh sách>.count(x)
Trong đó x là giá trị ta cần đếm xem nó xuất hiện trong danh sách bao nhiêu lần.
Bài tập áp dụng:
Bài 17: Viết chương trình tạo một danh sách A gồm n số nguyên, và một số nguyên x. Hãy đếm xem số x xuất hiện trong A bao nhiêu lần.
Chương trình tham khảo như sau: A=[];  n=int(input(“hay nhap so luong phan tu = “)) print(“nhap cac phan tu cho danh sach A”) for i in range(1,n+1):
k=int(input())     A.append(k) x=int(input(“nhap x= “)) print(” so lan xuat hien cua x trong danh sach la: “) print(A.count(x))
Kết quả khi chạy chương trình minh họa như sau:

3.1.1.11. Hàm min(), max() và sum() trong python
Để tìm giá trị lớn nhất, nhỏ nhất, tính tổng: ngoài cách duyệt tìm kiếm, so sánh để tìm ra kết quả như cách viết trong một số ngôn ngữ lập trình khác. Trong python ta có thể sử dụng các hàm min(), max() và sum() đã có sẵn. Cú pháp như sau:
+ Hàm min(< biến danh sách>) trả về giá trị của phần tử nhỏ nhất trong danh sách.
+ Hàm max(< biến danh sách>) trả về giá trị của phần tử lớn nhất trong  danh sách.
+ Hàm sum(<biến danh sách>)  trả về giá trị là tổng các phần tử của danh sách. Bài tập áp dụng:
Bài 18: Cho trước dãy số A, hãy tìm giá trị lớn nhất, nhỏ nhất, và tổng các phần tử trong danh sách A.
Cách 1: Duyệt tuần tự để tính và tìm ra kết quả
Chương trình tham khảo :

Kết quả chạy chương trình minh họa như sau:

Cách 2: sử dụng hàm min(), max() và sum():
Chương trình tham khảo:

Kết quả chạy chương trình minh họa như sau:

Qua hai cách trên ta thấy cách 2 sử dụng hàm min(), max(), sum(): số câu lệnh được giảm đi, chương trình gọn hơn.
3.1.2. Một số bài tập nâng cao
3.1.2.1. Bài toán tìm kiếm
Bài 1. Nhập vào một dãy gồm n số nguyên a1, a2, a3, …, an
Yêu cầu: Hãy tìm trong dãy số trên một số nguyên bằng tổng tất cả các số nguyên còn lại. Nếu có nhiều số nguyên thỏa mãn yêu cầu thì in ra số có chỉ số nhỏ nhất. Trường hợp không có số nào trong dãy thỏa mãn yêu cầu đề bài thì ghi chữ “No”.
Ví dụ:
Dữ liệu vào Dữ liệu ra
-2,5,3,6 So thoa man la: 6
3,4,5,6 No
• Ý tưởng thuật toán:
-Ta có thể dùng hàm sum() để tính tổng (s) các phần tử của dãy.
-Duyệt qua các phần tử a[i] của dãy để kiểm tra và so sánh  a[i] đó với s-a[i]:
+ Nếu a[i]==s-a[i] thì in ra a[i] và dừng lại
+Ngược lại, quá trình tiếp tục so sánh a[i+1] với s-a[i+1].
Chú ý: trong quá trình duyệt ta dùng thêm một biến ghi nhớ trạng thái đã tìm thấy số thỏa mãn hay chưa để đánh dấu kết quả tìm được.
Chương trình tham khảo và kết quả khi chạy chương trình:

Bài 2: Viết chương trình nhập vào một dãy gồm n số nguyên: a1,a2,…,an. Hãy thực hiện các yêu cầu sau:
– In ra số dương cuối cùng của dãy số.
– In ra số dương đầu tiên của dãy số.
Nếu không tìm thấy phần tử nào thỏa mãn thì ghi ra chữ “No” • Ý tưởng thuật toán:
-Ta dùng 1 biến đánh dấu d để đánh dấu trạng thái tìm thấy phần tử theo yêu cầu.
– Để tìm ra số dương cuối cùng của dãy số: ta duyệt danh sách từ cuối về đầu.
+Nếu gặp a[i]>0 ta thực hiện: ghi nhận trạng thái tìm thấy cho biến d, in ra số a[i], rồi thoát khỏi vòng lặp.
+ Kết thúc vòng lặp duyệt danh sách ta kiểm tra trạng thái biến d để kết luận có tìm thấy phần tử thỏa mãn hay không
– Để tìm ra số dương đầu tiên của dãy số: ta duyệt danh sách từ đầu về cuối. Quá trình thực hiện việc kiểm tra tương tự như trên.
Chương trình tham khảo:
# In ra số dương cuối cùng của dãy số.
a=[];   n=int(input(“hay nhap so luong phan tu = “)) print(“nhap cac phan tu cho day a”) for i in range(1,n+1):
k=int(input())     a.append(k) print(“day a da nhap gom :”) print(a);    i=len(a)-1;  d=False while i>-1:     if a[i]>0:         d=True;           print(” so duong cuoi cung cua day so la:  “,a[i]);             break     i=i-1
if d==False: print(“No”)
Kết quả chạy chương trình minh họa như sau:

# Đoạn chương trình in ra số dương đầu tiên của dãy số.
i=0;  d=False while i<len(a):     if a[i]>0:         d=True;           print(” so duong cuoi cung cua day so la:  “,a[i]);   break     i=i+1
if d==False: print(“No”)
Bài 3. Viết chương trình tìm phần tử có giá trị lớn nhất (max) trong danh sách và đưa ra màn hình giá trị cùng vị trí của phần tử tìm được. Nếu có nhiều vị trí max hãy đưa ra giá trị  max sau cùng.

 

TÀI LIỆU LIÊN QUAN

10
TIN HỌC
4.5/5
TÀI LIỆU WORD

100.000 

10
TIN HỌC
4.5/5
TÀI LIỆU WORD

100.000 

10
Tin học
4.5/5
TÀI LIỆU WORD

100.000 

Theo dõi
Thông báo của
guest
Phản hồi nội tuyến
Xem tất cả bình luận
Set your categories menu in Theme Settings -> Header -> Menu -> Mobile menu (categories)
Shopping cart

KẾT NỐI NGAY VỚI KIẾN EDU

Chúng tôi luôn sẵn sàng lắng nghe và đưa ra giải pháp phù hợp nhất cho vấn đề của bạn.

0886945229

Email

kienedu.com@gmail.com

Đây chỉ là bản XEM THỬ - khách hàng vui lòng chọn mua tài liệu và thanh toán để nhận bản đầy đủ

TẢI TÀI LIỆU

Bước 1: Chuyển phí tải tài liệu vào số tài khoản sau với nội dung: Mã tài liệu

Chủ TK: Ngô Thị Mai Lan

STK Agribank: 2904281013397 Copy
* (Nếu khách hàng sử dụng ngân hàng Agribank thì chuyển tiền vào STK Agribank để tránh bị lỗi treo giao dịch)
STK Vietcombank: 1037627258 Copy
vietcombank

Bước 2: Gửi ảnh chụp giao dịch vào Zalo kèm mã tài liệu để nhận tài liệu qua Zalo hoặc email

Nhắn tin tới Zalo Kiến Edu (nhấn vào đây để xác nhận và nhận tài liệu!)