我预期销售价值(esv)的代码只会读取最近输入的库存,即如果我输入gm作为第一个库存,ge作为第二个库存,它只读取ge,因为它会覆盖gm的数据。我不确定如何为每个输入的股票计算esv,因为它目前只计算输入的第一个股票。我的想法是它应该在输入每个股票后实际发生,并存储在一个新的字典中,该字典包含股票代码作为键,esv作为值。然而,赋值说这个过程应该在GetSale函数中发生....这使得它变得困难。用这种方式对它进行编码没有多大意义。无论如何,这是我的GetSale代码。
def getsale():
global names
global prices
global exposure
for key in names:
symbol = key
for key in exposure:
risk_number = exposure[key][0]
shares_held = exposure[key][1]
for key in prices:
purchase_price = prices[symbol][0]
current_price = prices[symbol][1]
esv = [-((current_price - purchase_price) - risk_number * current_price) * shares_held]
print("The estimated sale value of ", symbol, "is ", sorted(esv(),reverse = True))
修改 好的,我从另一个来源得到了答案。我需要创建一个新的空列表。另外,没有必要有多个for循环,因为它们在一个中工作得很好。然后,我只需要将esv和stock符号附加到我的列表中,然后对其进行排序/打印(我将其反转以便打印出最高的数字)。我会将答案发给我自己的问题,但我需要等待一定时间。所以相反,这是修改后的代码。
def getsale():
global names
global prices
global exposure
sellGuide=[]
for key in names:
symbol = key
risk_number = exposure[symbol][0]
shares_held = exposure[symbol][1]
purchase_price = prices[symbol][0]
current_price = prices[symbol][1]
esv = (float(((current_price - purchase_price) - risk_number * current_price) * shares_held))
sellGuide.append([esv, symbol])
print(sorted(sellGuide, reverse = True))
但是,有人能告诉我一种方法只打印列表中的第一个吗?我认为这段代码可行:
print(sorted(sellGuide[0], reverse = True))
但是我收到以下错误:
File "D:\Python\Python Modules\stock_portfolio.py", line 43, in getsale
print(sorted(sellGuide[0], reverse = True))
TypeError: unorderable types: float() < str()
答案 0 :(得分:2)
您的代码应为
print(sorted(sellGuide, reverse = True)[0])
在您的示例中,您将获得sellGuide中的第一个元素并对其进行排序。所以你在int / float上运行sort,这是行不通的。