我撰寫了這段代碼,它通過其 API 從 CoinMarketCap 獲取位元幣的價格。
然后它在終端中列印價格并將其發送到 Arduino,這樣我就可以在 LCD 顯示幕上實時看到它(感謝 Firmata 庫)
它作業正常,但問題是價格沒有變化,它總是列印相同的價格當我啟動代碼時。
from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
import time
from pyfirmata import Arduino, util, STRING_DATA
port = 'COM3'
board = Arduino(port)
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
parameters = {
'start':'1',
'limit':'1',
'convert':'USD'
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': '646f5705-1a58-48f4-af8a-7156f90d6885',
}
session = Session()
session.headers.update(headers)
try:
response = session.get(url, params=parameters)
data = json.loads(response.text)
for entry in data["data"]:
symbol = entry["symbol"]
price1 = str(entry["quote"]["USD"]["price"])[:5]
while(True):
print(symbol ':', price1)
board.send_sysex(STRING_DATA, util.str_to_two_byte_iter(symbol))
board.send_sysex(STRING_DATA, util.str_to_two_byte_iter(price1))
time.sleep(30)
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)
所以,假設我運行了這個程式,在那個時刻位元幣的價格是 47000 美元。
輸出是這樣的:
BTC: 47000
BTC: 47000
BTC: 47000
BTC: 47000
BTC: 47000
uj5u.com熱心網友回復:
你應該移動這部分:
response = session.get(url, params=parameters)
data = json.loads(response.text)
for entry in data["data"]:
symbol = entry["symbol"]
price1 = str(entry["quote"]["USD"]["price"])[:5]
進入你的 while 回圈,現在你只從 API 獲取資料一次,然后永遠列印/發送它。
然后它看起來像這樣:
from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
import time
from pyfirmata import Arduino, util, STRING_DATA
port = 'COM3'
board = Arduino(port)
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
parameters = {
'start':'1',
'limit':'1',
'convert':'USD'
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': '646f5705-1a58-48f4-af8a-7156f90d6885',
}
session = Session()
session.headers.update(headers)
try:
while(True):
response = session.get(url, params=parameters)
data = json.loads(response.text)
for entry in data["data"]:
symbol = entry["symbol"]
price1 = str(entry["quote"]["USD"]["price"])[:5]
print(symbol ':', price1)
board.send_sysex(STRING_DATA, util.str_to_two_byte_iter(symbol))
board.send_sysex(STRING_DATA, util.str_to_two_byte_iter(price1))
time.sleep(30)
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398810.html
