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