weijia910512 发表于 2023-2-8 20:21:21

为什么循环每次读取api的价格都是一致的?

import requests
crypto = []

def check(a):#搞一个函数,接入交易所的api,获取BTC比特币的实时价格数据,由于爬取的数据是列表里嵌套了字典,于是就迭代取出想要的数据放进列表里,然后返回值是函数实参的最新价格
    url = requests.get('https://api.binance.com/api/v3/ticker/price').json()
    for i in url:
      for k in i.values():
            crypto.append(k)

    a1 = crypto
   

    return a1


while 1<2:#由于比特币BTC的价格是一直处于变化的,我就想搞个循环,让他每次都把获取的价格打印出来,但是当我运行这代码以后,发现打印出来的价格一直是不变的,好像程序就只读取了一次api拿到价格后就一直输出给我,不再重复读取了。不知道哪里出问题了,求赐教
    x = check('BTCUSDT')#运行代码前要挂梯子.
    print(x)
   

运行代码以后,就如图所示,价格一直不变,可实时的BTC价格每秒钟都在发生变化。。我感觉我的代码只读取了一次实时价格后就一直给我循环返回这个值,可我代码循环里面每次都会调用函数,照理说每调用一次 他就爬取一次最新价格才对啊。。想不通

isdkz 发表于 2023-2-8 20:36:41

因为你的 crypto 每次都是用的同一个,然后没有清掉之前的数据,而 index 是数到第一个,也就是之前的,

用 crypto.clear()把列表的数据清掉

import requests
crypto = []

def check(a):#搞一个函数,接入交易所的api,获取BTC比特币的实时价格数据,由于爬取的数据是列表里嵌套了字典,于是就迭代取出想要的数据放进列表里,然后返回值是函数实参的最新价格
    url = requests.get('https://api.binance.com/api/v3/ticker/price').json()
    for i in url:
      for k in i.values():
            crypto.append(k)

    a1 = crypto
    crypto.clear()               # 加了这行

    return a1


while 1<2:#由于比特币BTC的价格是一直处于变化的,我就想搞个循环,让他每次都把获取的价格打印出来,但是当我运行这代码以后,发现打印出来的价格一直是不变的,好像程序就只读取了一次api拿到价格后就一直输出给我,不再重复读取了。不知道哪里出问题了,求赐教
    x = check('BTCUSDT')#运行代码前要挂梯子.
    print(x)
   

不二如是 发表于 2023-2-8 22:48:24

isdkz 发表于 2023-2-8 20:36
因为你的 crypto 每次都是用的同一个,然后没有清掉之前的数据,而 index 是数到第一个,也就是之前的,

...

神速{:10_275:}

isdkz 发表于 2023-2-8 22:49:54

不二如是 发表于 2023-2-8 22:48
神速

谢谢夸奖{:10_297:}
页: [1]
查看完整版本: 为什么循环每次读取api的价格都是一致的?