python的温度转换
我正在学习免费的在线Python教程,它希望我: 创建一个温度转换器,将华氏值转换为 摄氏度,反之亦然,使用以下两个公式 温度f(华氏度)到温度c(摄氏度):python的温度转换,python,python-3.x,decimal,floating-point-precision,Python,Python 3.x,Decimal,Floating Point Precision,我正在学习免费的在线Python教程,它希望我: 创建一个温度转换器,将华氏值转换为 摄氏度,反之亦然,使用以下两个公式 温度f(华氏度)到温度c(摄氏度): f = c * 9/5 + 32 c = (f -32)* 5/9 输入将是一个字符串,由一个浮点数组成,后跟字母F或C,例如 作为“13.2C”。我需要转换到其他温标并打印 以相同格式转换的值。例如,如果输入是 “8F”则输出应为(大约)“-13.333C”,如果 输入是“12.5C”,那么输出应该是“54.5F”
f = c * 9/5 + 32
c = (f -32)* 5/9
输入将是一个字符串,由一个浮点数组成,后跟字母F
或C
,例如
作为“13.2C”
。我需要转换到其他温标并打印
以相同格式转换的值。例如,如果输入是
“8F”则输出应为(大约)“-13.333C”
,如果
输入是“12.5C”
,那么输出应该是“54.5F”
我的答案总是有点不对劲。例如,当正确的输出为-16.39442c
时,我得到-16.4444446c
。我如何使用float有问题吗?我的代码如下:
def celsiusCon(farenheit):
return (farenheit - 32)*(5/9)
def farenheitCon(celsius):
return ((celsius*(9/5)) + 32)
inputStr = input()
inputDig = float(inputStr[0:-2])
if inputStr[-1] == 'C':
celsius = inputDig
print(farenheitCon(celsius),'F',sep ='')
if inputStr[-1] == 'F':
farenheit = inputDig
print(celsiusCon(farenheit),'C', sep='')
您正在删除最后两个字符,而不仅仅是最后一个:
inputDig = float(inputStr[0:-2])
应该是:
inputDig = float(inputStr[0:-1])
这就解释了您的准确性问题:
>>> celsiusCon(2.4)
-16.444444444444446
>>> celsiusCon(2.49)
-16.394444444444446
由于切片从末尾开始计数,因此切片到:-2
将同时切割单元和最后一个数字:
>>> '2.49F'[:-2]
'2.4'
>>> '2.49F'[:-1]
'2.49'
请注意,您的代码太长,而不是:
tempInit = input()
temp = float(tempInit[:-1])
if tempInit[-1]== 'F':
c=(temp-32)*5/9
print(str(c)+'C')
if tempInit[-1]== 'C':
f =(temp*9/5)+32
print(str(f)+'F')
这里有一个快速而肮脏的方法
temp = float(input("What's the temperature? C > F")))
conversion = (temp*9/5)+32
print(conversion)
这将从C>F转换,您可以轻松地翻转它