2016-02-13 87 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

相關問題