Untitled
unknown
python
3 years ago
1.6 kB
8
Indexable
class Scale:
CELSIUS = "CELSIUS"
FAHRENHEIT = "FAHRENHEIT"
KELVIN = "KELVIN"
NONE = "NONE"
Q = "Q"
class Temperature:
def is_valid_scale_and_value(self, scale, value):
match scale:
case Scale.CELSIUS:
return value >= -273.15
case Scale.FAHRENHEIT:
return value >= -459.67
case Scale.KELVIN:
return value >= 0
case _:
return False
def __init__(self, value, scale=Scale.CELSIUS):
if not self.is_valid_scale_and_value(scale, value):
self.scale = Scale.NONE
self.value = 0
else:
self.scale = scale
self.value = value
def get_scale(self):
return self.scale
def get_value(self):
return self.value
def set_scale(self, scale):
if scale not in [Scale.CELSIUS, Scale.FAHRENHEIT, Scale.KELVIN]:
self.scale = Scale.NONE
else:
self.scale = scale
def set_value(self, value):
pass
def set_scale_and_value(self, value, scale):
pass
def __str__(self):
if self.scale == Scale.NONE:
return f"{self.value}N"
else:
return f"{self.value}{self.scale}"
if __name__ == '__main__':
t = Temperature(10.1)
print(t.get_scale()) # displays "CELSIUS"
print(t) # displays "10.1C"
t.set_scale(Scale.FAHRENHEIT) # change scale
print(t) # displays "50.18F" (notice it converted the value!)
print(t.get_scale()) # displays "FAHRENHEIT"
t = Temperature(12.25, "KELVIN") # scale input is not from Scale!
print(t.get_scale()) # displays "NONE"
print(t) # displays "0.0N"
Editor is loading...