我正在寻找一种解决方案,可以打印出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的结果
这是我可以满足您的要求的方法:
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)
希望这会有所帮助。
您只需要实现str方法。就像Java的toString()
这可以解决问题:
def __str__(self):
return "%f %s"%(self.val,self.unit)