首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让Python中的多个变量通过站点包中的同一函数运行?

如何让Python中的多个变量通过站点包中的同一函数运行?
EN

Stack Overflow用户
提问于 2020-12-30 10:23:33
回答 1查看 42关注 0票数 0

我正在使用yahoo_fin包在Python语言中制作一个终端股票投资组合跟踪器,并使用tabulate导出表格中的数据。我的变量是单个股票报价器(在本例中为PTON、CHWY和FUBO)。有没有办法让一组变量在同一行函数代码中运行?正如您将在我的当前代码中看到的,我必须编辑函数中的每个变量才能使表正常工作。理想情况下,代码将通过同一行代码读取每个滚动条,而不是单独编辑每个集合。

这是我的第一篇文章,如果代码的格式错误,我深表歉意。谢谢。

代码语言:javascript
复制
from yahoo_fin import stock_info as si
from datetime import datetime
from tabulate import tabulate

now = datetime.now()
time = now.strftime('%I:%M:%S %p')

# tape = "PTON, CHWY, FUBO"
print(time)

tkr1 = 'PTON'
tkr2 = 'CHWY'
tkr3 = 'FUBO'

# FIGURE OUT A WAY TO HAVE EACH TICKER RUN THROUGH THE PACKAGE WITHOUT HAVING TO MAKE DIFFERENT VARIABLES
# You could have like Run #1 defined as a variable, so Run1 = [], run2 = [] etc. 

#1
output1 = si.get_live_price(tkr1)
# get quote_table
quote1 = si.get_quote_table(tkr1)
# get data from quote_table:
prevclose1 = quote1.get("Previous Close")
vol1 = quote1.get("Volume")
rangeday1 = quote1.get("Day's Range")
range52_1 = quote1.get('52 Week Range')
percentchange1 = (output1/prevclose1)-1
percentage1 = "{:.2%}".format(percentchange1)
earningsdate1 = quote1.get('Earnings Date')

#2
output2 = si.get_live_price(tkr2)
# get quote_table
quote2 = si.get_quote_table(tkr2)
# get data from quote_table:
prevclose2 = quote2.get("Previous Close")
vol2 = quote2.get("Volume")
rangeday2 = quote2.get("Day's Range")
range52_2 = quote2.get('52 Week Range')
percentchange2 = (output2/prevclose2)-1
percentage2 = "{:.2%}".format(percentchange2)
earningsdate2 = quote2.get('Earnings Date')

#3
output3 = si.get_live_price(tkr3)
# get quote_table
quote3 = si.get_quote_table(tkr3)
# get data from quote_table:
prevclose3 = quote3.get("Previous Close")
vol3 = quote3.get("Volume")
rangeday3 = quote3.get("Day's Range")
range52_3 = quote3.get('52 Week Range')
percentchange3 = (output3/prevclose3)-1
percentage3 = "{:.2%}".format(percentchange3)
earningsdate3 = quote3.get('Earnings Date')


#Tabulate
data = [[tkr1, round(output1, 2), percentage1,(f'{vol1:,}'),rangeday1,range52_1,earningsdate1], 
[tkr2, round(output2, 2), percentage2,(f'{vol2:,}'),rangeday2,range52_2,earningsdate2], 
[tkr3, round(output3, 2), percentage3,(f'{vol3:,}'),rangeday3,range52_3,earningsdate3]]

print(tabulate(data, headers=["Ticker", "Price", "% Chg", "Volume", "Day Range", "52 Range", "Earnings"]))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-30 10:31:33

只需创建一个函数:

代码语言:javascript
复制
from yahoo_fin import stock_info as si
from datetime import datetime
from tabulate import tabulate

now = datetime.now()
time = now.strftime('%I:%M:%S %p')

# tape = "PTON, CHWY, FUBO"
print(time)
tkr1 = 'PTON'
tkr2 = 'CHWY'
tkr3 = 'FUBO'

def get_ticker_run(ticker_code):
    
    output = si.get_live_price(ticker_code)
    # get quote_table
    quote = si.get_quote_table(ticker_code)
    # get data from quote_table:
    prevclose = quote.get("Previous Close")
    vol = quote.get("Volume")
    rangeday = quote.get("Day's Range")
    range52 = quote.get('52 Week Range')
    percentchange = (output/prevclose)-1
    percentage = "{:.2%}".format(percentchange)
    earningsdate = quote.get('Earnings Date')

    return [ticker_code, round(output, 2), percentage,(f'{vol:,}'),rangeday,range52,earningsdate]

最后,使用它:

代码语言:javascript
复制
data = [
      get_ticker_run(tkr1), 
      get_ticker_run(tkr2), 
      get_ticker_run(tkr3)
  ]

print(tabulate(data, headers=["Ticker", "Price", "% Chg", "Volume", "Day Range", "52 Range", "Earnings"]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65501251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档