一个 '$'
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'
由于货币是整数,投资组合也是如此,我无法解决这个问题。任何人都可以帮忙???
答案 0 :(得分:5)
money
和portfolio
显然是字符串,因此将其转换为整数:
money= int( float(money)-float(portfolio) )
答案 1 :(得分: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;
答案 2 :(得分:2)
正如错误消息明确指出的那样,两者都是字符串,使用int(var)
进行投射。
注意:
让我们看看我们可以从错误消息中解除什么:
portfolio
必须是字符串(str
),这意味着value
也是一个字符串。像这样:
>>> 16*"a"
'aaaaaaaaaaaaaaaa'
显然您错过了发布相关代码,因为错误消息告诉您money
也是str。
答案 3 :(得分:1)
我认为这里的问题是假设因为你用整数值初始化变量,它们将保持为整数。 Python无法以这种方式工作。使用=
分配值仅将名称绑定到值,而不关注类型。例如:
a = 1 # a is an int
a = "Spam!" # a is now a str
我认为yahoostock.getprice()
与许多从网站获取数据的函数一样,返回一个字符串。在进行数学计算之前,您需要使用int()
进行转换。