Bài 13. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)

Chủ đề Fcs : Giải quyết vấn đề với sự trợ giúp của máy tính – Kĩ thuật lập trình – Bài 13. Thực hành thiết kế và lập trình theo mô đun (tiếp theo) – sách giáo khoa trang 142 lớp 11 Khoa học máy tính – Cánh Diều, mời các em tham khảo cùng Bumbii.

Chủ đề Fcs : Giải quyết vấn đề với sự trợ giúp của máy tính – Bài 13. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)

Nhiệm vụ 1

Viết phiên bản thứ hai cho hàm thực hiện phân tích dãy điểm.

Yêu cầu:

Viết chương trình thực hiện hàm ptDiem theo phương án sử dụng tối đa các hàm có sẵn trong Python và chạy thử kiểm tra.

Hướng dẫn thực hiện:

– Sử dụng hàm sum để tính tổng và điểm trung bình.

– Gọi hàm Python thực hiện sắp xếp thứ tự tăng dần (không giảm); sau khi sắp xếp thì tìm được ngay max, min.

– Dãy số đã sắp thứ tự tăng dần (không giảm) nên có thể dùng hàm bisect_left (trong mô đun bisect) tìm được các vị trí phân chia dãy điểm thành 4 đoạn điểm: Chưa đạt, Đạt, Khá và Tốt. Từ đó tính được số lượng điểm theo từng mức xếp hạng.

Chú ý:

– Trước khi sử dụng các hàm trong mô đun bisect thì phải sắp xếp thứ tự tăng dần (không giảm) bằng các dùng hàm sorted.

– Sau khi sắp xếp thì tìm được ngay max, min.

– Sử dụng hàm sum để tính tổng.

– Dùng hàm bisect_left (trong mô đun bisect) để tìm các vị trí phân chia dãy điểm tại các mức xếp hạng “Chưa đạt, Đạt, Khá, Tốt”. Từ đó, tính được số lượng điểm theo từng mức xếp hạng.

Tham khảo đoạn chương trình sau:

def ptDiem_bisect(ds):  # ds: dãy số đã sắp xếp thep thứ tự tăng dần
    n = len(ds)
    chuadat = bisect_left (ds, DAT)
    dat = bisect_left (ds, KHA) - chuadat
    kha = bisect_left (ds, TOT) - dat - chuadat
    tot = bisect_left (ds, TOT) - kha - dat - chuadat
    tong = sum(ds)
    return (ds[n-1], ds[0], tong, tot, kha, dat, chuadat)

Nhiệm vụ 2

Viết phiên bản thứ hai của hàm ptMonHoc.

Yêu cầu:

Trong hàm ptMonHoc thay vì sử dụng quickSort_tuple_down cải biên từ hàm quicksort hãy gọi sử dụng các hàm có sẵn trong Python.

Hướng dẫn thực hiện:

– Python có sẵn phương thức sort, hàm sorted với tham biến key = lambda để sắp xếp danh sách các cặp hay các bộ nhiều thành phần, theo giá trị của một thành phần bất kì trong bộ. Cách gọi sử dụng để sắp xếp danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần theo mẫu tham khảo Hình 2:

– Trong thân hàm ptMonHoc sửa lại lời gọi hàm thực hiện việc sắp xếp, sử dụng hàm của Python,

– Để dùng hàm bisect_left cần sắp thứ tự tăng dần;

– Khi dãy đã sắp thứ tự tăng dần thì chỉ cần viết lại theo thứ tự đảo ngược để có dãy giảm dần.

Chú ý:

– Phương thức sort với tham biến key = lambda để sắp xếp danh sách các bộ (tuple) theo giá trị của một thành phần bất kì trong bộ. Có thể sắp xếp danh sách các cặp (tên HS, điểm) theo thứ tự điểm tăng dần (giảm dần) bằng cách gọi sử dụng chúng.

– Trong thân hàm ptTheoMon, cần thêm lệnh gọi hàm thực hiện sắp xếp dãy số trước khi sử dụng phiên bản hàm phân tích điểm ptDiem_bisect.

– Trong thân hàm ptTheoMon, gọi sử dụng hàm sorted và phương thức sort thay vì dùng hàm quicksort_tuple_down.

Tham khảo đoạn chương trình sau:

def ptMonHoc(ds_1, ds_2):   # ds_1: dãy số thực là các điểm môn học
                            # ds_2: Danh sách các cặp (tên HS, điểm)
    ds = sorted(ds_1)
    kq = ptDiem_bisect(ds)
    print('max = ', "{:.2f}".format(kq[1]),\
          'min = ', "{:.2f}".format(kq[0]),\
          'trung bình = ', "{:.2f}".format(kq[2]/soHS),\
          'tot = ', kq[3], 'kha = ', kq[4]\
          'dat = ', kq[5], 'chuadat = ', kq[6])
    print('điểm trung bình = ', "{:.2f}".format(mean(ds_1)),\
          'trung vị = ', "{:.2f}".format(mean(ds_1)),\
          'yếu vị = ', "{:.2f}".format(mean(ds_1)))
    print('tứ phân vị = ', quantiles(ds))
    ds_2.sort(reverse = True, key = lambda banghi: banghi[1])
    print('Sắp xếp theo điểm giảm dần: ')
    print(ds_2)

Xem các bài giải khác: Giải Bài Tập Sách Giáo Khoa Tin Học Lớp 11 Khoa Học Máy Tính – Cánh Diều

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x