XS-02 · Xếp loại
Xem dạng PDFĐề
Phần 2 của bài toán xuyên suốt "Điểm học phần". Mang theo từ XS-01 (mục 2.7): cách đọc hai điểm và công thức
$$\text{điểm học phần} = 0{,}4 \times \text{điểm quá trình} + 0{,}6 \times \text{điểm cuối kỳ}.$$
Thêm mới: điểm học phần phải được làm tròn thật đến 1 chữ số thập phân (dùng round(…, 1)), rồi xếp loại theo điểm đã làm tròn:
| Loại | Điểm học phần (đã làm tròn) |
|---|---|
| A | ~\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~ |
Kiến thức dùng (Chương 3): round(), chuỗi if…elif…else, phép so sánh.
Dữ liệu vào
Một dòng gồm hai số thực diem_qt diem_ck, cách nhau một dấu cách.
Kết quả
Một dòng: điểm học phần (đúng 1 chữ số thập phân), một dấu cách, rồi chữ cái xếp loại.
Ràng buộc
- ~0 \le~
diem_qt,diem_ck~\le 10~. - Mỗi điểm viết dạng số nguyên (
7,10) hoặc có đúng một chữ số thập phân (7.5,10.0), dùng dấu chấm. - Vì vậy điểm học phần chưa làm tròn luôn là bội của ~0{,}02~: không có trường hợp đuôi ~x{,}x5~.
Ví dụ
Dữ liệu vào:
8.0 8.8
Kết quả:
8.5 A
Giải thích ví dụ
~0{,}4 \times 8{,}0 + 0{,}6 \times 8{,}8 = 3{,}2 + 5{,}28 = 8{,}48~. Làm tròn 1 chữ số thập phân được ~8{,}5~, và ~8{,}5 \ge 8{,}5~ nên loại A.
Nếu xếp loại trên ~8{,}48~ (chưa làm tròn) thì ra B, trong khi dòng in ra vẫn là 8.5 — đó là lý do phải round() trước khi so sánh. Các ca nên tự thử:
| Dữ liệu vào | Kết quả | Ý nghĩa |
|---|---|---|
3.9 4.0 |
4.0 D |
~3{,}96 \to 4{,}0~; xếp loại trước khi làm tròn sẽ sai thành F |
5.0 3.0 |
3.8 F |
đi vào nhánh else |
9 9 |
9.0 A |
nếu nhánh >= 4.0 đứng trước >= 8.5 sẽ ra D |
Lưu ý khi nộp
- Ngưỡng là "từ … trở lên" nên so sánh bằng
>=; viết>sẽ sai đúng tại 8,5 / 7,0 / 5,5 / 4,0. - Thứ tự nhánh đi từ ngưỡng cao xuống thấp; nhiều
ifrời nhau (khôngelif) sẽ để nhánh sau ghi đè nhánh trước. - Bộ test có đủ các ngưỡng, các điểm "làm tròn mới lên ngưỡng" (8,48; 6,98; 5,48; 3,98…) và các cặp điểm lệch nhau (0 và 7, 7 và 0) để lộ việc đảo trọng số.
Nguồn trong sách: Bài XS-02, mục 3.4, 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 2/8)