2017-03-29 55 views
2

我正在與下面的代碼行的問題:兩個彩車拋出類型錯誤:不支持的操作數類型(S)爲+:「浮動」和「STR」

underground['distributed_load_C'] = float(ugLineList[21])*1000 + ('+' if float(ugLineList[24]) >= 0.0 else '-') + abs(float(ugLineList[24]))*1000j

原始值拉來自ugLineList是字符串,我嘗試在添加之前將它們轉換爲浮點數。即使我嘗試類型轉換他們我收到以下錯誤:

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

我已經試過這類型語句之前鑄造他們,並檢查該代碼段是真正的浮動: print type(float(ugLineList[21])*1000), type(float(ugLineList[24])) - - ><type 'float'> <type 'float'>

我,什麼是怎麼回事,所以任何幫助感激真的很困惑。

謝謝!

+1

你的代碼最終是float + str + float。 str是「+」或「 - 」。你爲什麼要加'+'或' - '? – FamousJameous

+1

這兩個號碼被轉換爲浮動,但它們之間的操作是一個字符串(即'「+」'或''-'')。您可能要重新制定了'if'語句,以便您專門檢查'ugLineList [24]'爲標誌,然後通過明確使用正確的算術運算符做正確的操作。 – rayryeng

+0

我有一種感覺,它是與if語句,類型轉換,做術前檢查標誌工作的問題。事後看來,我不確定爲什麼我添加了添加或減少每個Alg_D答案的條件。感謝大家! – lewis2ba

回答

2

上述評論(要添加字符串「+」或 - 取決於ugLineList的值[24「」 ])是完全正確的。假定你打算加上或減去

abs(float(ugLineList[24]))*1000j 

根據您的if語句的評價,你可以這樣做:

res = float(ugLineList[21])*1000 
if float(ugLineList[24]) >= 0.0: 
    res += abs(float(ugLineList[24]))*1000j 
else: 
    res -= abs(float(ugLineList[24]))*1000j 
underground['distributed_load_C'] = res 

希望這有助於

1

看起來你有一個字符串,同時試圖做一個aritmetic操作

+ ('+' if float(ugLineList[24]) >= 0.0 else '-') 

'+'

你真的需要的條件? '+' if float(ugLineList[24]) >= 0.0

嘗試喲投個人variales,並與他們無關的操作把之前所有在一行

1

我不知道你是什麼試圖通過檢查價值的符號,然後執行,但我敢打賭,你可以簡單地刪除它:

underground['distributed_load_C'] = float(ugLineList[21])*1000 + float(ugLineList[24])*1000j 
相關問題