python-250Đọc toàn bộ đề miễn phí

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 độ

PythonCơ bản12 phút

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ủ đề

oopclasspropertyclass-constantentry-ramp

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.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo