Lớp nhiệt độ lưu độ C riêng tư
Nhiệt độ là ví dụ kinh điển của một giá trị có miền hợp lệ: không gì lạnh hơn không độ
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, python-classes-intro, python-oop-rectangle.
Nội dung đề bài
Mô tả bài toán
Nhiệt độ là ví dụ kinh điển của một giá trị có miền hợp lệ: không gì lạnh hơn không độ tuyệt đối. Nếu lớp cho phép gán bừa, mọi phép quy đổi phía sau đều vô nghĩa. Bài này luyện @property kèm setter kiểm tra, hằng số cấp lớp và hai phép quy đổi.
Yêu cầu
Cài đặt lớp Temperature:
- hằng số cấp lớp ABSOLUTE_ZERO_C = -273.15.
- init(self, celsius): nhận nhiệt độ theo độ C; ném ValueError nếu nhỏ hơn
ABSOLUTE_ZERO_C.
- thuộc tính celsius: getter trả về giá trị đang lưu dưới dạng float; setter từ chối
giá trị nhỏ hơn ABSOLUTE_ZERO_C bằng ValueError. Nhiệt độ nằm trong self._celsius.
- set_celsius(self, value): ghi qua thuộc tính celsius, trả về None.
- get_celsius(self): trả về nhiệt độ hiện tại theo độ C.
- fahrenheit(self): trả về C * 9 / 5 + 32.
- kelvin(self): trả về C - ABSOLUTE_ZERO_C.
- raise_by(self, delta): cộng thêm delta độ C; ném ValueError nếu kết quả thấp hơn
không độ tuyệt đối; trả về None.
Quy ước nộp bài
Nộp lớp Temperature trong solution.py. Hệ thống khởi tạo lớp rồi gọi phương thức trực tiếp, so từng giá trị trả về với sai số 1e-6 và bắt ngoại lệ ValueError; không dùng stdin/stdout.
Input
Hệ thống khởi tạo lớp bằng tham số từ khoá celsius, sau đó gọi lần lượt các phương thức theo kịch bản của từng bộ test.
Output
Danh sách giá trị trả về theo đúng thứ tự gọi. set_celsius và raise_by trả None.
Ràng buộc
- celsius và delta là số thực.
- Giá trị đúng bằng -273.15 vẫn hợp lệ; chỉ giá trị nhỏ hơn mới bị chặn.
- Mọi lượt ghi (khởi tạo, set_celsius, raise_by) dùng chung một luật kiểm tra.
Ví dụ 1
Input
Temperature(init={"celsius": 0}, methods=[{"method": "fahrenheit"}, {"method": "kelvin"}, {"method": "get_celsius"}])
Output
[32.0, 273.15, 0.0]
Ví dụ 2
Input
Temperature(init={"celsius": 100}, methods=[{"method": "fahrenheit"}])
Output
[212.0]
Giải thích
Với celsius=0 thì fahrenheit() là 32.0 và kelvin() là 273.15. Với celsius=37 thì fahrenheit() là 98.6.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
