C8-12 · Xếp hạng nhiều tiêu chí
Xem dạng PDF
Gửi bài giải
Điểm:
1,00
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
Python
Đề
Đọc danh sách sinh viên, lưu thành danh sách các từ điển (list of dict). Điểm học phần tính bằng hàm tinh_diem_hp (XS-04, mục 5.7):
diem_hp = round(0.4 * diem_qt + 0.6 * diem_ck, 1)
Hãy in bảng xếp hạng theo ba tiêu chí, xét lần lượt:
- điểm học phần (đã làm tròn) giảm dần;
- cùng điểm học phần thì điểm cuối kỳ giảm dần;
- cùng cả hai điểm thì mã tăng dần.
Yêu cầu cách viết (giảng viên kiểm khi chấm tay; máy chấm chỉ so kết quả): gọi sorted() một lần, không dùng reverse=True — hàm khóa trả về một tuple.
Dữ liệu vào
- Dòng đầu chứa n.
- n dòng tiếp theo, mỗi dòng
ma diem_qt diem_ck.
Kết quả
n dòng theo thứ tự xếp hạng, mỗi dòng: mã, điểm học phần, điểm cuối kỳ (hai điểm in :.1f), cách nhau một dấu cách.
Ràng buộc
- ~1 \le n \le 10^4~.
- Mã gồm đúng 8 chữ số (có thể bắt đầu bằng 0), đôi một khác nhau.
- Điểm là số trong đoạn ~[0;\ 10]~, có tối đa một chữ số thập phân, có thể viết dạng số nguyên (
7); dấu thập phân là dấu chấm.
Ví dụ
Dữ liệu vào:
3
23010007 6.5 7.0
23010012 8.0 6.0
23010002 6.5 7.0
Kết quả:
23010002 6.8 7.0
23010007 6.8 7.0
23010012 6.8 6.0
Giải thích ví dụ
| Mã | Điểm học phần | Cuối kỳ | Khóa sắp (-hp, -ck, ma) |
|---|---|---|---|
| 23010007 | 0,4·6,5 + 0,6·7,0 = 6,8 | 7,0 | (-6.8, -7.0, "23010007") |
| 23010012 | 0,4·8,0 + 0,6·6,0 = 6,8 | 6,0 | (-6.8, -6.0, "23010012") |
| 23010002 | 6,8 | 7,0 | (-6.8, -7.0, "23010002") |
Cả ba cùng 6,8. Hai người cuối kỳ 7,0 đứng trước người cuối kỳ 6,0; giữa hai người cùng 6,8 và 7,0 thì mã nhỏ hơn (23010002) đứng trước.
Lưu ý
- Sắp theo điểm học phần đã làm tròn: 8,48 và 8,50 đều là 8,5 nên phải xét tiếp điểm cuối kỳ.
- Khóa
(hp, ck, ma)kèmreverse=Truesẽ đảo cả tiêu chí mã — sai. - Python không so được hai dict:
sorted(ds_sv)thiếukey=báoTypeError(bảng 8.7).
Nguồn: Bài C8-12, mục 8.9, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.
Nguồn trong sách: bài tập C8-12 (mục 8.9) · Mức: (****)
Đang tải...