XS-04 · Tách thành hàm

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.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

Đề

Phần 4 của bài toán xuyên suốt "Điểm học phần". Viết lại XS-03 (mục 4.7) bằng hai hàm dùng suốt đến Chương 10:

Hàm Việc làm
tinh_diem_hp(diem_qt, diem_ck) trả về điểm học phần ~0{,}4 \times~ quá trình ~+~ ~0{,}6 \times~ cuối kỳ, đã làm tròn 1 chữ số thập phân
xep_loai(diem_hp) trả về một trong "A", "B", "C", "D", "F" theo ngưỡng của XS-02

Ngưỡng xếp loại (theo điểm đã làm tròn): A nếu ~\ge 8{,}5~; B từ ~7{,}0~ đến dưới ~8{,}5~; C từ ~5{,}5~ đến dưới ~7{,}0~; D từ ~4{,}0~ đến dưới ~5{,}5~; F dưới ~4{,}0~.

Ngoài thống kê của XS-03, in thêm điểm học phần và loại của từng sinh viên. Sinh viên đạt nghĩa là loại khác F.

Kiến thức dùng (Chương 5): def, return, tham số, kiểm thử hàm bằng assert.

Dữ liệu vào

  • Dòng đầu: số nguyên ~n~ — số sinh viên.
  • ~n~ dòng tiếp theo, mỗi dòng hai số thực diem_qt diem_ck cách nhau một dấu cách.

Kết quả

  • ~n~ dòng đầu, theo thứ tự nhập: điểm học phần (đúng 1 chữ số thập phân), một dấu cách, chữ cái xếp loại.
  • Dòng tiếp theo: số sinh viên đạt và số không đạt, cách nhau một dấu cách.
  • Dòng cuối: điểm học phần cao nhất, đúng 1 chữ số thập phân.

Tổng cộng ~n + 2~ dòng.

Ràng buộc

  • ~1 \le n \le 100~.
  • ~0 \le~ mỗi điểm ~\le 10~; mỗi điểm viết dạng số nguyên (10) hoặc có đúng một chữ số thập phân (7.5), dùng dấu chấm.

Ví dụ

Dữ liệu vào:

6
7.5 8.0
6.5 7.0
8.0 8.8
4.0 4.0
5.0 3.0
10.0 10.0

Kết quả:

7.8 B
6.8 C
8.5 A
4.0 D
3.8 F
10.0 A
5 1
10.0

Giải thích ví dụ

Ca 1–6 của bộ sinh viên mẫu. Sáu dòng đầu là từng sinh viên: chẳng hạn người thứ ba có ~0{,}4 \times 8{,}0 + 0{,}6 \times 8{,}8 = 8{,}48~, tinh_diem_hp trả về ~8{,}5~ (đã làm tròn) nên xep_loai cho A. Người thứ tư được đúng ~4{,}0~ → D, vẫn đạt. Chỉ người thứ năm (~3{,}8~, loại F) không đạt, nên dòng thống kê là 5 1; cao nhất là 10.0.

Các ca kiểm thử in trong sách, nên tự chạy trước khi nộp:

Dữ liệu vào Kết quả Ý nghĩa
2 / 3.9 4.0 / 3.9 3.9 4.0 D / 3.9 F / 1 1 / 4.0 hai phía của ngưỡng 4,0
1 / 8.0 8.8 8.5 A / 1 0 / 8.5 8,48 → 8,5 loại A
2 / 9.0 7.0 / 6.5 7.0 7.8 B / 6.8 C / 2 0 / 7.8 hai điểm lệch nhau: lộ việc đảo đối số

(dấu / ngăn cách các dòng)

Lưu ý khi nộp

  • Hệ thống chỉ chấm phần in ra, không kiểm tên hàm; nhưng hãy viết đúng hai hàm như đề — các phần sau (XS-05…XS-08, Chương 10) gọi lại nguyên vẹn.
  • Hàm trả về (return), không print bên trong hàm: in trong hàm sẽ làm thừa dòng và hiện chữ None.
  • Gọi đúng thứ tự đối số: tinh_diem_hp(diem_qt, diem_ck).
  • Các assert trong chương trình được phép giữ lại khi nộp (chạy đúng thì không in gì).

Nguồn trong sách: Bài XS-04, mục 5.7, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: XS (bài toán xuyên suốt, phần 4/8)


Đang tải...