2011-10-04 151 views
3

一個「$」類型錯誤:不支持的操作類型爲 - :「海峽」和「海峽」

money=1000000; 
portfolio=0; 
value=0; 
value=(yahoostock.get_price('RIL.BO')); 
portfolio=(16*(value)); 
print id(portfolio); 
print id(value); 
money= (money-portfolio); 
''' 

我收到錯誤:

Traceback (most recent call last): 
    File "/home/dee/dee.py", line 12, in <module> 
    money= (value-portfolio); 
TypeError: unsupported operand type(s) for -: 'str' and 'str' 

既然錢是整數,所以是組合,我不能解決這個問題..人可以幫助嗎?

+1

你爲什麼要打印ID?你的意思是看類型(投資組合)? – DSM

+14

你的Python已經被分號怪物攻擊了! –

+2

顯然,Python不允許你從另一個字符串中減去一個字符串。 –

回答

5

moneyportfolio顯然是字符串,因此將它們轉換成整數:

money= int(float(money)-float(portfolio)) 
2

由於錯誤信息中明確指出,兩者都是字符串,鑄有int(var)

注:

讓我們看看我們能從錯誤消息decude:

portfolio必須是字符串(str),這意味着value也是一個字符串。就像這樣:

>>> 16*"a" 
'aaaaaaaaaaaaaaaa' 

,顯然你錯過了,因爲該錯誤消息告訴你,money被str作爲以及張貼相關的代碼。

1

我認爲這裏的問題是假設因爲你已經初始化了整數值的變量,它們仍然是整數。 Python不以這種方式工作。與=分配值僅將名稱綁定到該值,而不必關注類型。例如:

a = 1  # a is an int 
a = "Spam!" # a is now a str 

我認爲yahoostock.getprice(),像許多功能,從網站上獲取數據,返回一個字符串。在進行數學計算之前,您需要使用int()進行轉換。

5
value=(yahoostock.get_price('RIL.BO')); 

顯然返回一個字符串不是數字。將其轉換爲數字:

value=int(yahoostock.get_price('RIL.BO')); 

此外信噪比不是很高。你有很多(,)和;你不需要。您只分配變量以在下一行替換它們。你可以讓你的代碼更好:

money = 1000000 
value = int(yahoostock.get_price('RIL.BO')); 
portfolio = 16 * value; 
print id(portfolio); 
print id(value); 
money -= portfolio; 
相關問題