Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python的温度转换_Python_Python 3.x_Decimal_Floating Point Precision - Fatal编程技术网

python的温度转换

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”

我正在学习免费的在线Python教程,它希望我:

创建一个温度转换器,将华氏值转换为 摄氏度,反之亦然,使用以下两个公式 温度f(华氏度)到温度c(摄氏度):

    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转换,您可以轻松地翻转它