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:
Sách "Lập trình cơ sở với Python"
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:

  1. điểm học phần (đã làm tròn) giảm dần;
  2. cùng điểm học phần thì điểm cuối kỳ giảm dần;
  3. 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èm reverse=True sẽ đảo cả tiêu chí mã — sai.
  • Python không so được hai dict: sorted(ds_sv) thiếu key= báo TypeError (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...