Python TypeError:';的操作数类型不受支持;str';和';str';

Python TypeError:';的操作数类型不受支持;str';和';str';,python,Python,美元 我得到一个错误: money=1000000; portfolio=0; value=0; value=(yahoostock.get_price('RIL.BO')); portfolio=(16*(value)); print id(portfolio); print id(value); money= (money-portfolio); ''' 回溯(最近一次呼叫最后一次): 文件“/home/dee/dee.py”,第12行,在 货币=(价值组合); TypeError:-:“

美元

我得到一个错误:

money=1000000;
portfolio=0;
value=0;
value=(yahoostock.get_price('RIL.BO'));
portfolio=(16*(value));
print id(portfolio);
print id(value);
money= (money-portfolio);
'''
回溯(最近一次呼叫最后一次):
文件“/home/dee/dee.py”,第12行,在
货币=(价值组合);
TypeError:-:“str”和“str”的操作数类型不受支持

因为钱是整数,投资组合也是整数,所以我无法解决这个问题。任何人都可以帮忙吗?

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)
强制转换

注:

让我们看看我们可以从错误消息中得到什么:

portfolio
必须是字符串(
str
),这意味着
value
也是字符串。像这样:

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

显然,您没有发布相关代码,因为错误消息告诉您
money
也是str。

我认为这里的问题是假设,因为您使用整数值初始化了变量,所以它们将保留为整数。Python不是这样工作的。用
=
赋值只会将名称绑定到值,而不注意类型。例如:

>>> 16*"a"
'aaaaaaaaaaaaaaaa'
我假设
yahoostock.getprice()
,与许多从网站获取数据的函数一样,返回字符串。在进行数学运算之前,需要使用
int()
转换此值

a = 1       # a is an int
a = "Spam!" # a is now a str
显然,返回的是字符串而不是数字。将其转换为数字:

value=(yahoostock.get_price('RIL.BO'));
而且信噪比也不是很高。你有很多(,)和;你不需要。您只能在下一行中指定变量来替换它们。您可以通过以下方式使代码变得更好:

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

你为什么要打印身份证?你的意思是看类型(公文包)?你的python被分号怪物攻击了!显然,Python不允许从一个字符串中减去另一个字符串。+1可以抵消不必要的-1。
money = 1000000
value = int(yahoostock.get_price('RIL.BO'));
portfolio = 16 * value;
print id(portfolio);
print id(value);
money -= portfolio;