2016-02-13 102 views
0

我正在为aa生物等式编写计算器,并且它的一部分是一个温度转换器。TypeError:不能将'float'对象隐式转换为str或TypeError:不支持的操作数类型为 - :'str'和'float'

T_option = input("Celsius, fahrenheit, or Kelvin? ").lower() 
if T_option == "celsius" or T_option == "c": 
    T_C = input("Input temperature: ") 
    T = (T_C - 273.15) 
    print("Temp set to " + str(T) + "K") 

elif T_option == "kelvin" or T_option == "k": 
    T = input("Input temperature: ") 
    print("Temp set to " + str(T) + "K") 

elif T_option == "fahrenheit" or T_option == "f": 
    T_F = input("Input temperature: ") 
    T = ((T_F + 459.67) * 5/9) 
    ("Temp set to " + str(T) + "K") 

如果让我选择华氏度,输入一个数字,我得到:

TypeError: Can't convert 'float' object to str implicitly 

如果我选择摄氏度,然后输入一个号码,我得到:

TypeError: unsupported operand type(s) for -: 'str' and 'float' 

我不知道我在这里做了什么。

回答

1

input()函数返回str对象。在使用数学表达式之前,您必须将字符串转换为float。所以,

为摄氏:

T = (float(T_C) - 273.15) 

华氏:

T = ((float(T_F) + 459.67) * 5/9) 
+0

如果您正在运行python-2.7,则必须防止整数除法,例如,将5/9变成5.0/9.0。 –

2

你的问题是你的输入,Python中的input()总是返回一个字符串。如果你想读一些其他类型,那么你需要将它从一个字符串转换为该类型。在你的代码,你可能想要的东西,如:

T = float(input("Input temperature: ")) 

这将输入(例如“0.12”)转换为浮动(0.12)。

+0

对不起,我是新来的Python。当我尝试'T_F =输入(“输入温度:”)',我键入例如40.5,然后尝试'输入(T_F)'它说浮动。而且,'T_F * 5'完美地工作,所以在我的shell输入中似乎返回一个浮点数。有什么理由吗? – RafaelCaballero

+0

如果您键入(T_F),则不应该说float。 T_F * 5会工作,因为你可以乘以一个整数的字符串,如果你尝试T_F * 5.1它应该给出一个错误。 Python无法知道该输入应该是一个浮点数,所以type(T_F)应该返回一些看起来像

+0

它说''和T_F * 5.1可以工作... Python解释器版本2.7。 6 – RafaelCaballero

相关问题