Giáo án Tin học 10 · Toàn bộ sách chính (đồ họa và Python)
Tin họcLớp 10Phần 5. Chủ đề 5. Giải quyết vấn đề với sự trợ giúp của máy tính

Giáo án Bài 32. Ôn tập lập trình Python

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 1 tiết (45 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được vai trò của kiểu dữ liệu danh sách, câu lệnh điều kiện, vòng lặp for và kiểm thử trong việc giải quyết bài toán trung bình các số dương.
  • Giải thích được vì sao cần kiểm tra số phần tử đếm được trước khi chia, và vì sao điều kiện x>0 không bao gồm số 0.
  • Vận dụng được các bước: khởi tạo tổng và đếm, duyệt lọc số dương, kiểm tra đếm lớn hơn 0, chia tổng cho đếm hoặc thông báo không có số dương để viết và kiểm thử chương trình Python.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS tự đọc lại chương trình mẫu, dự đoán kết quả trước khi chạy và tự sửa lỗi khi kết quả khác dự đoán.
  • Giao tiếp và hợp tác: HS làm việc theo cặp, trình bày và giải thích được lập luận của mình về kết quả chương trình cho bạn trong nhóm.
  • Giải quyết vấn đề và sáng tạo: HS phân tích được tình huống không có số dương, thiết kế nhánh xử lí phù hợp và kiểm thử bằng nhiều bộ dữ liệu khác nhau.

b) Năng lực đặc thù

  • Sử dụng và quản lí các phương tiện công nghệ thông tin và truyền thông: HS sử dụng môi trường lập trình Python để viết, chạy và đọc kết quả chương trình.
  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: HS dùng máy tính để kiểm thử chương trình với các bộ dữ liệu có số âm, số 0, số dương và danh sách rỗng.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS dùng bài tập tương tác trên trang NeoEdu để tự kiểm tra kiến thức sau giờ học.
  • Hợp tác trong môi trường số: HS cùng nhóm chia sẻ mã nguồn và kết quả kiểm thử qua máy chiếu hoặc nhóm trò chuyện của lớp.

3. Phẩm chất

  • Chăm chỉ: HS tự giác hoàn thành đủ các bài tập và kiểm thử đủ các trường hợp đầu vào.
  • Trung thực: HS báo đúng kết quả chạy thực tế của chương trình, không tự ghi đáp án khi chưa kiểm tra.
  • Trách nhiệm: HS kiểm tra lại mã của mình trước khi nộp và chịu trách nhiệm giải thích được kết quả đã đưa ra.

II. Thiết bị dạy học và học liệu

1. Giáo viên

  • Máy tính, máy chiếu và phần mềm lập trình Python (IDLE hoặc tương đương) để trình chiếu chương trình mẫu.
  • Bảng phụ hoặc slide ghi chương trình mẫu, các bộ dữ liệu kiểm thử: [-2,4,0,8], [-2,0], [].
  • Phiếu học tập số 1 (in cho từng nhóm hoặc chiếu lên màn hình).
  • Học liệu số NeoEdu: bài giảng, ví dụ và bài tập tương tác tại neoedu.vn/learn/10/informatics/bai-32-on-tap-lap-trinh-python.

2. Học sinh

  • Máy tính có cài Python (nếu có phòng máy) hoặc vở ghi, bút, giấy nháp để dự đoán và tính tay kết quả.
  • Vở ghi kiến thức các bài đã học về kiểu dữ liệu, câu lệnh điều kiện, vòng lặp và hàm.

III. Tiến trình dạy học

Hoạt động 1: Mở đầu · 5 phút

Dự đoán kết quả chương trình

a) Mục tiêu

Kích hoạt kiến thức cũ về danh sách, vòng lặp for và câu lệnh điều kiện; xác định nhiệm vụ của tiết ôn tập.

b) Nội dung

GV trình chiếu chương trình mẫu tính trung bình các số dương trong danh sách a=[-2,4,0,8]. HS dự đoán kết quả in ra trước khi chạy và trả lời câu hỏi: Vì sao số -2 và số 0 không được tính? Nếu danh sách không có số dương nào thì chương trình phải làm gì?

c) Sản phẩm

HS nêu được: chương trình chỉ cộng và đếm các số lớn hơn 0 (4 và 8); kết quả dự kiến là 6.0 (tổng 12, đếm 2); số 0 không dương nên không được tính; khi không có số dương cần thông báo, tránh phép chia cho 0. GV ghi tên tiết học lên bảng: Ôn tập lập trình Python.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu chương trình mẫu và yêu cầu HS dự đoán kết quả, giải thích ngắn gọn tại sao.

    Học sinh

    HS đọc đoạn chương trình, suy nghĩ 1 phút rồi giơ tay dự đoán kết quả.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV cho HS lần lượt trả lời các câu hỏi gợi mở: Danh sách có bao nhiêu phần tử? Phần tử nào thỏa điều kiện x>0?

    Học sinh

    HS đếm từng phần tử: -2 bị loại, 4 và 8 được chọn, 0 không được chọn. HS tính nhẩm: tổng 12, đếm 2.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 HS trả lời và so sánh với dự đoán ban đầu.

    Học sinh

    HS trả lời: 'Em dự đoán 6.0 vì 12 chia 2 bằng 6.' 'Số 0 không lớn hơn 0 nên không được tính.'

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chạy chương trình, xác nhận kết quả 6.0 và nêu nhiệm vụ tiết học: hệ thống hoá kiến thức, luyện tập và viết chương trình hoàn chỉnh.

    Học sinh

    HS ghi tên bài và nhiệm vụ tiết học vào vở.

Hoạt động 2: Hình thành kiến thức mới · 13 phút

Hệ thống hoá kiến thức lập trình Python

a) Mục tiêu

Hệ thống hoá kiểu dữ liệu, cấu trúc điều khiển, hàm và kiểm thử được dùng trong bài toán trung bình các số dương.

b) Nội dung

HS làm việc nhóm 4 người theo kĩ thuật khăn trải bàn, điền vào Phiếu học tập số 1 và giải thích vai trò của từng thành phần trong chương trình mẫu. Các nhóm được giao mỗi nhóm một mục: (1) kiểu dữ liệu và danh sách; (2) cấu trúc điều khiển if và vòng lặp for; (3) biến tích lũy tổng và đếm; (4) kiểm thử với nhiều bộ dữ liệu.

c) Sản phẩm

Mỗi nhóm hoàn thành phần khăn trải bàn của mình. Kết quả kiến thức HS rút ra: danh sách lưu nhiều giá trị và duyệt bằng for; if x>0 chọn đúng số dương, không chọn số 0; biến s lưu tổng, biến d lưu đếm; điều kiện if d>0 ngăn lỗi chia cho 0; kiểm thử với [-2,0] hoặc [] cần in thông báo 'Khong co so duong'.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chia lớp thành nhóm 4, phát Phiếu học tập số 1 và giao mỗi thành viên một mục để ghi vào ô khăn trải bàn tương ứng.

    Học sinh

    HS nhận nhiệm vụ, đọc phiếu và xác định mục mình phụ trách.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, hỏi từng nhóm: Biến nào lưu tổng? Biến nào lưu số lần đếm? Nếu bỏ điều kiện if d>0 thì điều gì xảy ra với danh sách rỗng?

    Học sinh

    HS thảo luận và ghi kết quả. Trả lời dự kiến: biến s lưu tổng, biến d lưu đếm; nếu bỏ if d>0 thì chia cho 0 gây lỗi khi không có số dương.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời mỗi nhóm một đại diện trình bày mục của nhóm và nhận xét chéo.

    Học sinh

    Đại diện nhóm trình bày; các nhóm khác bổ sung. Ví dụ: 'Nhóm em thấy x>0 không lấy số 0 vì 0 không dương.'

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt kiến thức trên bảng: kiểu danh sách, duyệt for, điều kiện if, biến tích lũy s và d, kiểm tra d>0 trước khi chia, kiểm thử bằng nhiều bộ dữ liệu.

    Học sinh

    HS hoàn thiện khăn trải bàn và ghi kiến thức chốt vào vở.

Hoạt động 3: Luyện tập · 15 phút

Luyện tập đọc hiểu và kiểm thử chương trình

a) Mục tiêu

Dự đoán đúng kết quả của chương trình ngắn; nhận biết khác biệt giữa x>0 và x>=0; chấm được lập luận của bài toán trung bình các số dương.

b) Nội dung

HS làm các bài tập sau (dùng bài tập đã cho, làm theo cặp đôi, sau đó đối chiếu với máy chạy):
Bài 1: Chương trình in ra số nào khi a=[-2,4,0,8] và chỉ cộng các số dương: s=0; for x in a: if x>0: s+=x; print(s)?
Bài 2: Chương trình đếm số dương: d=0; for x in a: if x>0: d+=1; print(d). In ra số nào?
Bài 3: In ra số nào: a=[2,6,10]; print(sum(a)/len(a))?
Bài 4: Nếu thay x>0 bằng x>=0 thì kết quả trung bình thay đổi ra sao?
Bài 5: Tự kiểm tra độc lập: print(7//2+7%2). Số in ra là gì?

c) Sản phẩm

Đáp án: Bài 1: 12 (chỉ 4 và 8 được cộng). Bài 2: 2 (có 2 giá trị dương). Bài 3: 6.0 (18 chia 3 bằng 6,0). Bài 4: lấy thêm số 0, tổng vẫn 12 nhưng đếm là 3, trung bình là 4.0 (không còn đúng yêu cầu 'số dương'). Bài 5: 4 (3 cộng 1 bằng 4). Đối với tình huống không có số dương, đáp án đúng là thông báo 'Khong co so duong' và tránh chia cho 0.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu từng bài tập lên màn hình và yêu cầu HS dự đoán kết quả theo cặp đôi trước khi chạy máy.

    Học sinh

    HS đọc đề, cùng bạn dự đoán kết quả và ghi vào nháp.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV cho HS chạy chương trình trên máy (hoặc thực hiện tính tay nếu không có máy) để kiểm tra dự đoán, đồng thời hướng dẫn HS mở bài tập tương tác trên NeoEdu nếu muốn tự luyện thêm.

    Học sinh

    HS nhập đoạn lệnh, chạy và so sánh kết quả với dự đoán. Nếu sai, HS giải thích lỗi suy nghĩ.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV gọi ngẫu nhiên các cặp đôi báo cáo đáp án và lập luận, đặc biệt là bài 4 về x>=0.

    Học sinh

    HS trả lời: 'Bài 4: khi thêm số 0 thì đếm là 3 và trung bình là 4.0, nhưng số 0 không phải số dương nên sai yêu cầu.'

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV nhận xét, chốt: chấm mã và lập luận theo ý nghĩa, không so khớp tên biến; điều kiện x>0 không gồm số 0.

    Học sinh

    HS sửa lại đáp án sai (nếu có) và ghi nhận xét của GV vào vở.

Hoạt động 4: Vận dụng · 12 phút

Viết và kiểm thử chương trình hoàn chỉnh

a) Mục tiêu

Viết chương trình hoàn chỉnh tính trung bình các số dương, xử lí trường hợp không có số dương và kiểm thử bằng nhiều bộ dữ liệu; giải thích được kết quả.

b) Nội dung

HS viết chương trình tính trung bình các số dương của danh sách a=[-2,4,0,8], có nhánh thông báo khi không có số dương. Sau đó kiểm thử với hai bộ dữ liệu: a=[-2,0] và a=[]. Nhiệm vụ mở rộng về nhà: tự đặt một danh sách điểm thực tế có cả giá trị âm và giá trị 0 (ví dụ số lượt tương tác hợp lệ của một bạn trong tuần) rồi viết chương trình và báo cáo kết quả.

c) Sản phẩm

Chương trình hoàn chỉnh gồm: khởi tạo s=0, d=0; for x in a với if x>0 thì s+=x, d+=1; if d>0 thì print(s/d) với kết quả 6.0 khi a=[-2,4,0,8]; else thì print('Khong co so duong'). Với a=[-2,0] hoặc a=[] in 'Khong co so duong' và không xảy ra lỗi chia cho 0. HS giải thích được kết quả của từng bộ dữ liệu.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu yêu cầu: viết chương trình hoàn chỉnh theo dữ liệu mẫu và kiểm thử thêm hai bộ dữ liệu [-2,0] và []. GV nhắc lại tiêu chí chấm: lọc đúng, tính đúng, xử lí trường hợp không có số dương.

    Học sinh

    HS nhận yêu cầu, mở máy hoặc vở để viết chương trình.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV theo dõi, gợi ý khi HS gặp khó: Nếu d bằng 0 thì nhánh nào được thực hiện? Vì sao không được chia s cho d lúc đó?

    Học sinh

    HS viết và chạy chương trình; trả lời dự kiến: 'Nếu d bằng 0 thì nhánh else được thực hiện, in thông báo, không chia.'

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 HS chiếu mã và kết quả của mình lên màn hình, các bạn nhận xét theo tiêu chí lọc, tổng, đếm và nhánh.

    Học sinh

    HS trình bày: 'Với a=[-2,4,0,8] em in 6.0; với a=[-2,0] em in Khong co so duong.' Các bạn nhận xét về cách đặt tên biến và điều kiện.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: chương trình đúng cần kiểm thử đủ các trường hợp có số dương, không có số dương, danh sách rỗng; chấp nhận cách viết khác nếu đúng và giải thích được. Giao nhiệm vụ về nhà.

    Học sinh

    HS ghi lại các bộ dữ liệu kiểm thử và chương trình hoàn chỉnh vào vở.

Phiếu học tập

Phiếu học tập số 1

Nhiệm vụ nhóm (khăn trải bàn): Hoàn thành các ô sau với đoạn chương trình mẫu tính trung bình các số dương của a=[-2,4,0,8].

  • Mục 1: Kiểu dữ liệu và danh sách. Danh sách a có bao nhiêu phần tử? Mỗi phần tử có kiểu dữ liệu gì?
  • Mục 2: Cấu trúc điều khiển. Vòng lặp for x in a duyệt qua những gì? Câu lệnh if x>0 chọn những phần tử nào? Vì sao số 0 không được chọn?
  • Mục 3: Biến tích lũy. Biến s lưu gì? Biến d lưu gì? Sau vòng lặp, s và d có giá trị bằng bao nhiêu?
  • Mục 4: Kiểm thử. Điền kết quả khi chạy với a=[-2,4,0,8], a=[-2,0] và a=[]. Khi nào chương trình in 'Khong co so duong'? Vì sao cần điều kiện if d>0 trước khi chia?

Hướng dẫn về nhà

  • Viết lại chương trình tính trung bình các số dương, thay đổi dữ liệu thành một danh sách tự chọn có ít nhất 6 phần tử gồm cả số âm, số 0 và số dương; chạy chương trình và ghi kết quả vào vở.
  • Làm lại các bài tập 1 đến 5 trong tiết học, sau đó tự kiểm tra trên bài tập tương tác của bài 32 tại neoedu.vn/learn/10/informatics/bai-32-on-tap-lap-trinh-python.
  • Giải thích bằng lời (2–3 câu) vì sao với x>=0 kết quả trung bình thay đổi, và vì sao cần thông báo khi không có số dương.

Giáo án do NeoEdu soạn với sự hỗ trợ của AI, dựa trên nội dung bài học trên Học liệu. Thầy cô nên đọc lại và điều chỉnh cho phù hợp với học sinh của mình; bản Word để sửa trực tiếp.