C6-08 · Trung vị
Xem dạng PDFĐề
Giá thuê (triệu đồng) của ~n~ phòng trọ đã được ghi lại. Chỉ một phòng quá đắt cũng kéo trung bình cộng lên cao, nên người ta xem trung vị: giá trị đứng giữa khi xếp các giá tăng dần; nếu ~n~ chẵn thì trung vị là trung bình cộng của hai giá trị đứng giữa.
Viết hàm trung_vi(ds) không làm đổi thứ tự của ds; chương trình đọc dãy số thực và in trung vị với 2 chữ số thập phân.
Dữ liệu vào
- Dòng 1: số nguyên ~n~.
- Dòng 2: ~n~ số thực (giá thuê), cách nhau một dấu cách; mỗi số viết dạng số nguyên hoặc có đúng một chữ số thập phân.
Kết quả
Một dòng: trung vị, đúng 2 chữ số thập phân.
Ràng buộc
- ~1 \le n \le 100~.
- ~0{,}1 \le~ giá ~\le 1000~, tối đa một chữ số thập phân.
Ví dụ
Dữ liệu vào:
6
3.5 2.8 6.5 3.0 4.2 9.0
Kết quả:
3.85
Giải thích ví dụ
Xếp tăng dần: 2.8 3.0 3.5 4.2 6.5 9.0. Có ~n = 6~ (chẵn) giá, hai giá trị đứng giữa ở chỉ số 2 và 3 là 3,5 và 4,2; trung vị ~\dfrac{3{,}5 + 4{,}2}{2} = 3{,}85~. Còn trung bình cộng là ~29/6 \approx 4{,}83~ — bị phòng giá 9 triệu kéo lên.
Với ~n~ lẻ, ví dụ 2.8 3.0 3.5, trung vị là giá đứng giữa 3.5, in 3.50.
Lưu ý
- Phải sắp xếp trước. Dùng
sorted(ds)(tạo danh sách mới);ds.sort()trả vềNone, đừng gán kết quả của nó. - Chỉ số hai giá trị giữa khi ~n~ chẵn là
n // 2 - 1vàn // 2; dùng//vì chỉ số phải là số nguyên. - Đọc bằng
floattrước khi sắp xếp: sắp xếp chuỗi cho"10.5" < "9.5". - Hệ thống chỉ chấm kết quả; yêu cầu "hàm không đổi thứ tự
ds" do giảng viên xem khi chấm tay.
Nguồn trong sách: Bài C6-08, mục 6.12, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (**)