1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Skkn rất hay) 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

48 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Phan Xuân Thường
Trường học Trường THPT Tân Kỳ
Chuyên ngành Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2022 - 2023
Thành phố Nghệ An
Định dạng
Số trang 48
Dung lượng 2,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • PHẦN I. ĐẶT VẤN ĐỀ (3)
    • 1. Lý do chọn đề tài (3)
    • 2. Mục đích nghiên cứu (3)
    • 3. Đối tượng nghiên cứu (3)
    • 4. Phương pháp nghiên cứu (4)
    • 5. Tính mới của đề tài (4)
  • PHẦN II. NỘI DUNG NGHIÊN CỨU (5)
    • 1. Cơ sở lý thuyết (5)
    • 2. Cơ sở thực tiễn (5)
    • 3. Giải pháp (5)
      • 3.1. Bài tập về kiểu dữ liệu danh sách (5)
        • 3.1.1 Một số bài tập cơ bản (5)
        • 3.1.2. Một số bài tập nâng cao (15)
      • 3.2. Bài tập về kiểu dữ liệu xâu kí tự (26)
        • 3.2.1. Một số bài tập cơ bản (26)
        • 3.2.2. Một số bài tập nâng cao (32)
    • 4. Khảo sát sự cấp thiết và tính khả thi của các giải pháp đề xuất (40)
    • 5. Nhận xét kết quả sau khi thực hiện đề tài (44)
  • PHẦN III. KẾT LUẬN (47)
    • 1. Về mặt lý thuyết và thực tiễn (47)
    • 2. Phạm vi áp dụng, hạn chế, hướng phát triển và kiến nghị (47)
  • TÀI LIỆU THAM KHẢO (48)

Nội dung

NỘI DUNG NGHIÊN CỨU

Cơ sở lý thuyết

Trong chương trình giáo dục phổ thông mới, học sinh lớp 10 sẽ được tìm hiểu về kiểu dữ liệu danh sách và xâu ký tự trong môn Tin học Nội dung các bài học này giúp học sinh nắm vững cách sử dụng và quản lý dữ liệu, từ đó phát triển kỹ năng lập trình cơ bản Các khái niệm về danh sách và xâu ký tự sẽ được giải thích rõ ràng, giúp học sinh áp dụng vào thực tế và xây dựng nền tảng vững chắc cho các kiến thức lập trình sau này.

Năm 2018, nghiên cứu thực trạng và mức độ hứng thú của học sinh trong việc học nội dung "kiểu dữ liệu danh sách và xâu kí tự" đã chỉ ra nhiều khó khăn mà học sinh gặp phải Qua quá trình giảng dạy lập trình bằng ngôn ngữ Pascal và C++, các giáo viên đã rút ra kinh nghiệm quý báu để cải tiến phương pháp dạy học, từ đó áp dụng hiệu quả cho việc giảng dạy 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

Khám phá cách xây dựng các bài tập liên quan đến kiểu dữ liệu danh sách và xâu ký tự Thực hiện các phương án giải quyết các bài toán nhằm nâng cao năng lực học sinh, đồng thời tạo động lực và hứng thú cho học sinh trong việc học lập trình, từ đó khơi dậy niềm đam mê với môn tin học.

Cơ sở thực tiễn

Hiện nay, nhu cầu lao động trong xã hội đang gia tăng, đặc biệt là đối với những người có trình độ cao về tin học và công nghệ thông tin.

Việc phát triển và bồi dưỡng học sinh yêu thích môn tin học tại các trường trung học phổ thông, đặc biệt là trường Tân Kỳ 3, đang gặp nhiều thách thức Nhiều phụ huynh và học sinh vẫn coi môn tin học là môn phụ, dẫn đến sự thiếu quan tâm và đầu tư cần thiết cho việc học tập và rèn luyện kỹ năng trong lĩnh vực này.

Trong quá trình học lập trình, nhiều học sinh chỉ có sách giáo khoa mà chưa có tài liệu tham khảo phù hợp do điều kiện tài chính hoặc khó khăn trong việc tìm kiếm Vì vậy, giáo viên cần tìm kiếm và chia sẻ những tài liệu chất lượng phù hợp với chương trình học, nhằm nâng cao chất lượng giảng dạy lập trình và thực hiện tốt nhiệm vụ theo chương trình giáo dục phổ thông mới 2018.

Giải pháp

Sáng kiến này nhằm xây dựng một hệ thống bài tập về kiểu dữ liệu danh sách và xâu kí tự, từ cơ bản đến nâng cao Mỗi bài tập sẽ được phân tích cách giải chi tiết, kèm theo mã code tham khảo và kết quả chạy chương trình minh họa Hệ thống bài tập được thiết kế để hỗ trợ việc học tập hiệu quả hơn.

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 skkn

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

- 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”)

A=[3,5,2,4,8,9]; B=[ “xanh”, “đỏ”, “tím”, “vàng”, “cam”]; 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)

Để bổ sung số lượng phần tử vào danh sách A, trước tiên chúng ta cần nhập một số nguyên dương n Sau đó, sử dụng lệnh append() để thêm các phần tử vào danh sách Vì lệnh append() sẽ được sử dụng n lần, nên chúng ta có thể áp dụng câu lệnh for để điều khiển quá trình bổ sung phần tử một cách hiệu quả.

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= "))

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

Gợi ý: Chương trình minh họa skkn

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: skkn

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

Chương trình tham khảo và kết quả:

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 skkn

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) 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() 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ả skkn

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():

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

Bài 1 Nhập vào một dãy gồm n số nguyên a 1 , a 2 , a 3 , , a n

Trong dãy số đã cho, hãy xác định một số nguyên mà tổng của tất cả các số nguyên còn lại bằng với số đó Nếu có nhiều số nguyên thỏa mãn điều kiện này, hãy chọn số có chỉ số nhỏ nhất Nếu không có số nào thỏa mãn yêu cầu, hãy ghi chữ "Không có".

Dữ liệu vào Dữ liệu ra

-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”

-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 skkn

- Để 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

To find the last positive number in a sequence, start by initializing an empty list and prompting the user to input the number of elements After collecting the elements into the list, iterate through it in reverse to identify the last positive integer If a positive number is found, display it; otherwise, indicate that there are no positive numbers in the sequence.

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

Khảo sát sự cấp thiết và tính khả thi của các giải pháp đề xuất

Trong quá trình xây dựng đề tài, tôi đã thực hiện một cuộc khảo sát với giáo viên dạy môn tin học tại Nghệ An và học sinh lớp 10 ở trường THPT Tân Kỳ 3 Câu hỏi khảo sát được thiết kế trên phần mềm Google Form, sử dụng phương pháp trao đổi qua bảng hỏi với thang đánh giá 04 mức, tương ứng với điểm số từ 1 đến 4.

Không cấp thiết; Ít cấp thiết; Cấp thiết và Rất cấp thiết

Không khả thi; Ít khả thi; Khả thi và Rất khả thi

Bảng khảo sát ý kiến giáo viên

Nội dung khảo sát Số lượng giáo viên

Câu 1: Theo thầy (cô) việc dạy học sinh lớp 10 học lập trình bằng ngôn ngữ Python có cần thiết?

Tài liệu tham khảo đóng vai trò quan trọng trong việc dạy học lập trình Python theo từng chủ đề của chương trình lớp 10 Việc sử dụng tài liệu phù hợp giúp giáo viên truyền đạt kiến thức hiệu quả hơn và hỗ trợ học sinh nắm bắt các khái niệm lập trình một cách dễ dàng Đồng thời, tài liệu tham khảo cũng cung cấp các ví dụ thực tiễn và bài tập bổ trợ, giúp học sinh áp dụng lý thuyết vào thực tiễn Vì vậy, việc lựa chọn và sử dụng tài liệu tham khảo chất lượng là cần thiết để nâng cao hiệu quả giảng dạy và học tập.

Trong chương trình tin học lớp 10, kiến thức về kiểu dữ liệu danh sách và xâu ký tự đóng vai trò quan trọng trong việc phát triển phẩm chất và năng lực lập trình cho học sinh Việc hiểu và áp dụng các kiểu dữ liệu này giúp học sinh nắm vững các khái niệm cơ bản, từ đó tạo nền tảng vững chắc cho việc giải quyết bài toán lập trình hiệu quả.

Thầy (cô) mong muốn có tài liệu tham khảo phù hợp nhằm nâng cao chất lượng dạy học lập trình Python, đặc biệt về kiểu dữ liệu danh sách và xâu ký tự.

Câu 5: Theo thầy (cô) có cần thiết phải dùng đến các bài tập tham khảo ở mức độ cơ bản và nâng cao khi dạy học

41 sinh lớp 10 học lập trình python về nội dung kiểu dữ liệu danh sách và xâu kí tự?

Bảng khảo sát ý kiến học sinh:

Nội dung khảo sát Số lượng học sinh

Câu 1: Em có hứng thú về học lập trình như thế nào? 202

Khi học lập trình Python, ngoài việc sử dụng sách giáo khoa tin học lớp 10, nhiều học sinh mong muốn có thêm tài liệu tham khảo để hỗ trợ quá trình học tập và nâng cao kỹ năng lập trình của mình.

Trong chương trình tin học lớp 10, việc học về lập trình với kiểu dữ liệu danh sách và xâu kí tự là rất quan trọng Em mong muốn có tài liệu tham khảo hữu ích để hỗ trợ cho việc học tập hiệu quả phần này.

Bảng khảo sát sự cấp thiết và tính khả thi của các giải pháp đề xuất

Nội dung khảo sát Số lượng giáo viên

Việc giáo viên xây dựng bài tập về kiểu dữ liệu danh sách và xâu kí tự trong dạy học lập trình bằng ngôn ngữ Python là rất cấp thiết để nâng cao chất lượng giảng dạy và hỗ trợ phát triển phẩm chất, năng lực cho học sinh lớp 10.

Để nâng cao chất lượng dạy học lập trình, việc giáo viên xây dựng bài tập về kiểu dữ liệu danh sách và xâu kí tự là rất khả thi và cần thiết Những bài tập này sẽ hỗ trợ phát triển phẩm chất và năng lực cho học sinh lớp 10 học lập trình bằng ngôn ngữ Python.

4.2 Tổng hợp các đối tượng khảo sát

TT Đối tượng Số lượng

4.3 Sự cấp thiết của các giải pháp đề xuất Đánh giá sự cấp thiết của các giải pháp đề xuất

TT Các giải pháp Các thông số

Xây dựng các bài tập về kiểu dữ liệu danh sách và xâu kí tự sẽ hỗ trợ phát triển phẩm chất và năng lực cho học sinh lớp 10 trong việc học lập trình bằng ngôn ngữ Python Những bài tập này không chỉ giúp học sinh nắm vững kiến thức cơ bản mà còn khuyến khích tư duy logic và khả năng giải quyết vấn đề.

4.4 Tính khả thi của các giải pháp đề xuất Đánh giá tính khả thi của các giải pháp đề xuất

TT Các giải pháp Các thông số

Xây dựng các bài tập liên quan đến kiểu dữ liệu danh sách và xâu ký tự là rất quan trọng để phát triển phẩm chất và năng lực học sinh lớp 10 trong việc học lập trình bằng ngôn ngữ Python Những bài tập này không chỉ giúp học sinh nắm vững kiến thức cơ bản mà còn khuyến khích tư duy logic và khả năng giải quyết vấn đề Việc áp dụng các bài tập thực tiễn sẽ tạo điều kiện cho học sinh phát triển kỹ năng lập trình một cách hiệu quả.

Nhận xét về sự cấp thiết và tính khả thi sau khi khảo sát:

Kết quả khảo sát ý kiến giáo viên cho thấy đề tài không chỉ có tính cấp thiết mà còn khả thi, do đó cần triển khai xây dựng một cách chất lượng để áp dụng hiệu quả trong quá trình dạy học.

Lưu ý: X: là điểm trung bình của các mức (được tính bằng phần mềm Excel)

Nhận xét kết quả sau khi thực hiện đề tài

Tôi đã thực hiện một nghiên cứu với hai học sinh lớp 10 có trình độ tương đương tại trường THPT Tân Kỳ 3, tập trung vào việc học lập trình Python, đặc biệt là về kiểu dữ liệu danh sách và xâu ký tự.

5.2 Đánh giá kết quả thực nghiệm sư phạm

Tiêu chí Các mức Tỉ lệ % các lớp đối chứng

(Các lớp chưa được học qua các giải pháp của đề tài)

Mức độ tích cực làm bài tập lập trình khi giáo viên yêu cầu Ít tích cực 64% 65% 64,5%

Mức độ hoàn Giỏi 0% 0% 0% skkn

44 thành bài tập lập trình phần kiểu dữ liệu danh sách và xâu kí tự

Tiêu chí Các mức Tỉ lệ % các lớp thực nghiệm

(Các lớp đã được học qua các giải pháp của đề tài)

Mức độ tích cực làm bài tập lập trình khi giáo viên yêu cầu Ít tích cực 20% 12,5% 16,25%

Mức độ hoàn thành bài tập lập trình phần kiểu dữ liệu danh sách và xâu kí tự

Từ số liệu trên ta có bảng so sánh như sau:

Mức độ tích cực làm bài tập giữa lớp thực nghiệm và lớp đối chứng Mức độ tích cực Tỉ lệ % lớp đối chứng Tỉ lệ % lớp thực nghiệm

Không tích cực 8% 0% Ít tích cực 64,5% 16,25%

Bảng so sánh mức độ hoàn thành làm bài tập giữa lớp thực nghiệm và lớp đối chứng

Mức độ hoàn thành bài tập Tỉ lệ % lớp đối chứng Tỉ lệ % lớp thực nghiệm

Trong quá trình luyện tập giải bài tập về kiểu dữ liệu danh sách và xâu ký tự, các lớp học thực nghiệm đã cho thấy số lượng học sinh đạt mức giỏi và khá cao hơn đáng kể so với lớp đối chứng Đặc biệt, không có học sinh nào trong lớp thực nghiệm đạt mức yếu kém, điều này chứng tỏ hiệu quả của phương pháp học tập qua hệ thống bài tập đã xây dựng.

Học sinh tham gia các lớp thực nghiệm thể hiện sự tích cực cao hơn trong việc học lập trình để giải quyết các bài tập liên quan đến kiểu dữ liệu danh sách và xâu kí tự, với số lượng học sinh tham gia học tập tăng đáng kể so với lớp đối chứng.

Ngày đăng: 02/10/2023, 14:47

HÌNH ẢNH LIÊN QUAN

Bảng khảo sát ý kiến học sinh: - (Skkn rất hay) 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
Bảng kh ảo sát ý kiến học sinh: (Trang 42)
Bảng khảo sát sự cấp thiết và tính khả thi của các giải pháp đề xuất - (Skkn rất hay) 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
Bảng kh ảo sát sự cấp thiết và tính khả thi của các giải pháp đề xuất (Trang 43)
Bảng so sánh mức độ hoàn thành làm bài tập giữa lớp thực nghiệm và lớp - (Skkn rất hay) 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
Bảng so sánh mức độ hoàn thành làm bài tập giữa lớp thực nghiệm và lớp (Trang 46)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w