温度转换,不调用方法

问题描述 投票:0回答:2

我正在寻找一种解决方案,可以打印出t1并转换为开尔文,而无需调用以下任何方法。有关如何创建t1以及应该采用何种解决方案的信息,请参见底部。希望很快能收到一些反馈!

class Temperature:
    # --- YOUR CODE STARTS HERE
    val = 0


    def __init__(self,val, unit):
        self.val = val
        self.unit = unit

    def celcius(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9)
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = self.val - 273.15
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit


    def fahrenheit(self):
        if self.unit == "C":
            new_temp = (self.val * (9/5)) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = (val - 273.15) * (9/5) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def kelvin(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9) + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "C":
            new_temp = self.val + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def __str__(self):





t1 = Temperature(31, "F")

print(t1)

问题是打印t1以得到272.59 K的结果

python-3.x class oop methods printing
2个回答
0
投票

这是我可以满足您的要求的方法:

class Temperature:
    # --- YOUR CODE STARTS HERE
    val = 0


    def __init__(self,val, unit):
        self.val = val
        self.unit = unit

    def celcius(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9)
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = self.val - 273.15
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit


    def fahrenheit(self):
        if self.unit == "C":
            new_temp = (self.val * (9/5)) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = (val - 273.15) * (9/5) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def kelvin(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9) + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "C":
            new_temp = self.val + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def __str__(self):
        self.val,self.unit = self.kelvin()
        return str(self.val) + ' ' + str(self.unit)


t1 = Temperature(31, "F")

print(t1)

希望这会有所帮助。


0
投票

您只需要实现str方法。就像Java的toString()

这可以解决问题:

def __str__(self):
    return "%f %s"%(self.val,self.unit)
© www.soinside.com 2019 - 2024. All rights reserved.