3

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

创建一个温度转换器,将华氏值转换为摄氏度,反之亦然,使用以下两个公式将华氏温度 f 与摄氏温度 c 联系起来:

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

输入将是一个字符串,该字符串由一个浮点数组成,后跟一个字母For C,例如"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='')
4

3 回答 3

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'
于 2013-09-13T07:19:16.247 回答
0

请注意您的代码太长,而不是:

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')
于 2016-01-03T06:46:21.153 回答
-1

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

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

conversion = (temp*9/5)+32

print(conversion)

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

于 2017-07-03T11:56:47.137 回答