转换温度时错误的结果

时间:2014-01-25 15:41:31

标签: python python-2.7

我在ubuntu 12.04上的python 2.7解释器中得到了错误的结果。 我已经在在线翻译中尝试了这段代码,代码还可以。

#print temperature

kindc = str(raw_input("Please type c for celsius or f for fareneit  "))
tempc = float(raw_input("please type the number of degrees you want to convert   "))

def result(kind,temp):
    if kind == "c":
        result1 = float((temp-32)*9/5)
        return result1
    else:
        result1 = float(5/9*(temp-32))
        return result1

print result(kindc,tempc)

2 个答案:

答案 0 :(得分:2)

在Python 2中,5/9使用分层,因为两个操作数都是整数。通过使至少一个参数成为float:

来强制浮点除法
result1 = (5.0 / 9.0) * (temp - 32)

Celsius转换很可能不会受此影响,因为(temp - 32) * 9结果很可能已经是浮点数,但最好在此处保持一致:

result1 = (temp * 9.0 / 5.0) + 32

请注意,您需要在此处使用正确的公式;乘以9后五分后加+ 32。这两个公式都不需要将结果转换为float();输出已经是一个浮点值。

如果您使用的是使用Python 3的在线Python解释器,那么您的代码将起作用,因为/运算符不是真正的除法运算(总是产生浮点值)。也可能是那个翻译有:

from __future__ import division

import将Python 2切换为Python 3行为。

最后的转换功能是:

def result(kind, temp):
    if kind == "c":
        result1 = (temp * 9.0 / 5.0) + 32
        return result1
    else:
        result1 = 5.0 / 9.0 * (temp - 32)
        return result1

答案 1 :(得分:1)

您希望将摄氏温度转换为华氏温度:

 result1 = float(temp)*9/5+32