XS-02 · Xếp loại

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:
Giáo trình "Lập trình cơ sở với Python" (TS. Nguyễn Quốc Long)
Dạng bài
Ngôn ngữ cho phép
Python

Đề

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 if rời nhau (không elif) 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)


Đang tải...