Untitled

 avatar
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...