python的温度转换

时间:2013-09-13 07:16:45

标签: python python-3.x decimal floating-point-precision

我正在参加一个免费的在线Python教程,它希望我:

  

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

    f = c *  9/5 + 32
    c = (f -32)* 5/9 
     

输入将是一个由浮点数组成的字符串,后面紧跟字母FC,例如   为"13.2C"。我需要转换到其他温标并打印   转换后的值采用相同的格式。例如,如果输入是   “8F”然后输出应该是(大约)"-13.333C",如果是   输入为"12.5C",则输出应为"54.5F"

我的答案总是稍微偏离。例如,当正确的输出为-16.444444444444446C时,我得到-16.394444444444442C。我如何使用浮动有问题吗?我的代码如下:

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='')

3 个答案:

答案 0 :(得分:9)

您正在切断最后一个两个字符,而不仅仅是最后一个字符:

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'

答案 1 :(得分:1)

注意你的代码太长了,而不是:

from pocketsphinx.pocketsphinx import *
ImportError: No module named pocketsphinx

答案 2 :(得分:-1)

这是一种快速而肮脏的方法。

temp = float(input("What's the temperature? C > F")))

conversion = (temp*9/5)+32

print(conversion)

这将从C转换为> F,你可以轻松翻转它。