TypeError:无法将'float'对象隐式转换为str或TypeError:不支持的操作数类型 - :'str'和'float'

时间:2016-02-13 01:23:32

标签: python

我正在为一个生物方程式编写计算器,其中一部分是温度转换器。

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'

我不确定我在这里做了什么。

2 个答案:

答案 0 :(得分:2)

你的问题是你的输入,Python中的input()总是返回一个字符串。如果要读取其他类型,则需要将其从字符串转换为该类型。在您的代码中,您可能需要以下内容:

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

这会将输入(例如' 0.12')转换为浮点数(0.12)。

答案 1 :(得分:1)

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

摄氏度:

T = (float(T_C) - 273.15)

for fahrenheit:

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