用while循环python替换for循环

2024-06-08 07:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在调用的api中有一个动态行范围。我已经研究了while循环的一些以前的用法,但是我似乎不知道如何将这个脚本中的for循环换成while循环。你知道吗

header = ["fanduel", "fd_first_name", "fd_last_name", "fd_player_salary", "draftkings", "dk_first_name", "dk_last_name", "dk_player_salary"]
headers = {
        "Authorization": "Basic " +
                base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
                                .encode('utf-8')).decode('ascii')
    }

with open("dailydfs.csv", 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    for fordate in range(20171215,20171216):  #ENTER DATE'S
        req = requests.get(url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/daily_dfs.json?fordate=" + str(fordate) , headers=headers)
        req.raise_for_status()
        data = req.json()

        daily_dfs = data['dailydfs']

        fanduel = daily_dfs['dfsEntries'][0]['dfsType']
        draftkings = daily_dfs['dfsEntries'][1]['dfsType']

        for i in range(20):

            fd_player = daily_dfs['dfsEntries'][0]['dfsRows'][i]['player']
            salary_fd = daily_dfs['dfsEntries'][0]['dfsRows'][i]
            fd_last_name = fd_player['LastName']
            fd_first_name = fd_player['FirstName']
            fd_player_salary = salary_fd['salary']

            dk_player = daily_dfs['dfsEntries'][1]['dfsRows'][i]['player']
            salary_dk = daily_dfs['dfsEntries'][1]['dfsRows'][i]
            dk_last_name = dk_player['LastName']
            dk_first_name = dk_player['FirstName']
            dk_player_salary = salary_dk['salary']

            writer.writerow([fanduel, fd_first_name, fd_last_name, fd_player_salary, draftkings, dk_first_name, dk_last_name, dk_player_salary])
            print(fanduel, fd_first_name, fd_last_name, fd_player_salary, draftkings, dk_first_name, dk_last_name, dk_player_salary)

输出:

FanDuel Jonathan Quick    8800  DraftKings Martin Jones      8400
FanDuel Henrik Lundqvist  8600  DraftKings Aaron Dell        8300
FanDuel Frederik Andersen 8500  DraftKings Frederik Andersen 8200
FanDuel Martin Jones      8500  DraftKings Curtis McElhinney 8100
FanDuel Ben Bishop        8500  DraftKings Cory Schneider    7900
FanDuel Cory Schneider    8200  DraftKings Tyler Seguin      7800

Tags: nameforfirstdailylastplayerdksalary
2条回答

在假定daily_dfs['dfsEntries'][0]['dfsRows']daily_dfs['dfsEntries'][1]['dfsRows']具有相同数量的元素的情况下,可以枚举第一个元素,并在获取第二个元素时使用索引,即

for i, fd_info in enumerate(daily_dfs['dfsEntries'][0]['dfsRows']):
    fd_player = fd_info['player']
    fd_last_name = fd_player['LastName']
    fd_first_name = fd_player['FirstName']
    fd_player_salary = fd_info['salary']

    dk_info = daily_dfs['dfsEntries'][1]['dfsRows'][i]
    dk_player = dk_info['player']
    dk_last_name = dk_player['LastName']
    dk_first_name = dk_player['FirstName']
    dk_player_salary = dk_info['salary']

    # etc.
i = 0
while i < 20:
    fd_player = daily_dfs['dfsEntries'][0]['dfsRows'][i]['player']
    salary_fd = daily_dfs['dfsEntries'][0]['dfsRows'][i]
    fd_last_name = fd_player['LastName']
    fd_first_name = fd_player['FirstName']
    fd_player_salary = salary_fd['salary']

    dk_player = daily_dfs['dfsEntries'][1]['dfsRows'][i]['player']
    salary_dk = daily_dfs['dfsEntries'][1]['dfsRows'][i]
    dk_last_name = dk_player['LastName']
    dk_first_name = dk_player['FirstName']
    dk_player_salary = salary_dk['salary']

    writer.writerow([fanduel, fd_first_name, fd_last_name, fd_player_salary, draftkings, dk_first_name, dk_last_name,
                     dk_player_salary])
    print(
    fanduel, fd_first_name, fd_last_name, fd_player_salary, draftkings, dk_first_name, dk_last_name, dk_player_salary)
    i+=1

相关问题 更多 >

    热门问题