2011-10-04 4 views
3

에 '$'형식 오류 : 지원되지 않는 피연산자 유형 (들) - 'STR'과 'STR'

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' 

및 그래서 포트폴리오, 나는이 문제를 해결할 수 없습니다 .. 도울 수 있습니다 ??? 모두 int(var)와 함께 캐스팅, 문자열이며,

money= int(float(money)-float(portfolio)) 
+1

왜 ID를 인쇄하고 있습니까? 유형 (포트폴리오)을 살펴보고 싶습니까? – DSM

+14

파이썬이 세미콜론 몬스터에 의해 공격당했습니다! –

+2

분명히 파이썬은 한 문자열을 다른 문자열에서 빼는 것을 허용하지 않습니다. –

답변

5

moneyportfolio 분명히 문자열, 그래서의 int로 캐스팅.

참고 :

이의 우리가 오류 메시지에서 decude 할 수 있는지 보자

portfolio 문자열 (str)이어야 value 의미도 문자열입니다. 이처럼 :

>>> 16*"a" 
'aaaaaaaaaaaaaaaa' 

분명히 오류 메시지가 money뿐만 아니라 str에 있는지를 알 수 있기 때문에 관련 코드를 게시 할 놓쳤다.

2

를 오류 메시지가 명확 상태로 :

1

여기 정수 값으로 변수를 초기화했기 때문에 정수로 남아있을 것이라고 가정합니다. 파이썬은 이런 식으로 작동하지 않습니다. =으로 값을 할당하면 유형에주의하지 않고 이름 만 값에 바인딩합니다. 예를 들어 :

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; 
관련 문제