尝试在python

时间:2019-01-21 20:48:54

标签: python-3.x

我正在尝试创建一个基本的股票交易算法。该算法中包含的一件事是,在确定要购买多少股票后,从用户总数中减去正确的金额。该问题发生在“ int(money_data)-= int(round(float(stockamounts [i])* float(prices [i]))))”行上。语法错误指向“ int(money_data)。”我希望我以一种有意义的方式解释了该问题。谢谢您的帮助。

for i in stock_symbols:
  stock_url = "https://www.nasdaq.com/symbol/" + str(i)
  stock_data = requests.get(stock_url)
  file = open("data.txt", "w")
  file.write(str(stock_data.content))
  file.close()
  file = open("data.txt", "r")
  stock_data = file.read()
  file.close()
  stock_data = re.findall(r'<div id="qwidget_lastsale" class="qwidget-dollar">(.*?)</div>', str(stock_data))

  for i in stock_data:
    print(str(i.strip('$')))
    price = i.strip('$')
    prices.append(price)

stock_amounts = []

print(str(stock_symbols[0]) + " | " + str(round(float(money_amount) / float(prices[0]))))
stock_amounts.append(round(float(money_amount) / float(prices[0])))
for x in range(len(prices)):
  print(str(stock_symbols[x]) + " | " + str(round(float(money_amount) / float(prices[x]))))
  stock_amounts.append(round(float(money_amount) / float(prices[x])))
print(len(stock_amounts))

for i in stock_amounts:
  print(stock_amounts[i])
  int(money_data) -= int(round(float(stock_amounts[i]) * float(prices[i])))
print(money_data)

1 个答案:

答案 0 :(得分:0)

如错误所示,你

  

无法分配给[a]函数调用

为什么?

假设您有一个函数f:

>>> def f(x);
...     return 3*x+4

当你

>>> f(4) = 5

您实际上是什么意思?您无法从逻辑上解释在这种情况下应该发生的情况,因为从根本上(在本示例中),这就像说16 = 5,我希望您同意,这是没有道理的。

“但是,我做了一些不同的事情”

是的,您在调用中使用了一个变量,并使用了-=运算符。 尽管如此,a -= b运算符还是a = a-b的缩写(尽管您可以重载它们来做不同的事情),这显然是一个赋值(即使您重载,它仍然是分配)。

该如何解决?

您有两种(一半)的可能性:

  • 使用常规作业:只需展开为val = int(val-to_sub)中的更长格式
  • 添加额外的一行val -= to_sub; val = int(val)(请实际添加额外的一行,不要使用;
  • (1/2)离开int()。如果您仅注意对int进行加,减,乘或除运算(或使用//进行除法),则可以确保该值保持int