Untitled
unknown
python
2 years ago
1.6 kB
5
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...