我需要间隔时间从网站获取信息。我互相写了两个循环。不知何故,在第二个条件下没有条件,而循环不起作用并使其成为无限循环。虽然价值观似乎相同。他们甚至计算。我做错了什么?
import requests
import time
buy = 0.0
sell = 0.0
tidnew = 0
counter = -1
main_api = 'https://api.bitfinex.com/v1'
trades = '/trades/'
etc = 'ETCUSD'
getorders = main_api+trades+etc
json_orderget = requests.get(getorders).json()
json_orderline = json_orderget[0]
tid = json_orderline["tid"]
if json_orderline["type"] == 'buy':
buy = float(json_orderline["amount"])
else:
sell = float(json_orderline["amount"])
time.sleep(1)
while True:
print("first while loop")
json_orderget = requests.get(getorders).json()
json_orderline = json_orderget[0]
tidnew = json_orderline["tid"]
int(tidnew)
counter += 1
tid = int(tid)
tidnew = int(tidnew)
if tid == tidnew:
print("Tid's are equal.")
while tid != tidnew:
print("Second while loop")
json_orderline = json_orderget[counter]
price = json_orderline["price"]
tidnew = json_orderline["tid"]
if json_orderline["type"] == 'buy':
buy += float(json_orderline["amount"])
else:
sell += float(json_orderline["amount"])
print("New price is: " + str(price))
print("New tid is: " + str(tid))
print("Buy volume is: " + str(buy))
print("Sell volume is: " + str(sell))
counter += 1
tid = tidnew
print("tid is: " + str(tid))
tid = int(tid)
counter = -1
time.sleep(1)
答案 0 :(得分:0)
你的意思是?
while tid != tidnew:
print("first while loop")
json_orderget = requests.get(getorders).json()
json_orderline = json_orderget[0]
tidnew = json_orderline["tid"]
int(tidnew)
counter += 1
tid = int(tid)
tidnew = int(tidnew)
if tid == tidnew:
print("Tid's are equal.")
我不知道你的状况应该是什么,但“而真实”是一个无限循环。
答案 1 :(得分:0)
我会检查tid
和tidnew
的数据类型。
我认为tidnew = json_orderline["tid"]
将tidnew
设置为字符串,而tid
是整数。请尝试使用tidnew = int(json_orderline["tid"])
。 (或者在读取json数据后添加tidnew = int(tidnew)
。)
答案 2 :(得分:0)
我发布这个之后,我已经阅读了第一个答案,它发给了我。我试着尽可能清楚地解释我的问题: 此代码的原因是从交易网站提取交易。对于答案,我得到了一个包含交易信息的大量交易清单。如果第一个列表中的第一个“tid”条目不相同,则代码首先将其拉出然后开始比较,如果不是从第一个列表条目中获取一些数据,然后继续到下一个,直到找到匹配的“tid”。 我的问题是我用wromg值覆盖了tid条目。它应该是第一个入口,最新的交易是什么。但它写了最后一个匹配的“tid”,这使得价值观不平等。 魔术发生在tidfirst变量上。 新的更新代码:
import requests
import time
buy = 0.0
sell = 0.0
tidnew = 0
tid = 0
tidfirst = 0
counter = -1
main_api = 'https://api.bitfinex.com/v1'
trades = '/trades/'
etc = 'ETCUSD'
getorders = main_api+trades+etc
json_orderget = requests.get(getorders).json()
json_orderline = json_orderget[0]
tid = json_orderline["tid"]
if json_orderline["type"] == 'buy':
buy = float(json_orderline["amount"])
else:
sell = float(json_orderline["amount"])
time.sleep(1)
while True:
print("first while loop")
json_orderget = requests.get(getorders).json()
json_orderline = json_orderget[0]
tidfirst = json_orderline["tid"]
tidnew = json_orderline["tid"]
counter += 1
if tid == tidnew:
print("Tid's are equal.")
while tid != tidnew:
print("Second while loop")
json_orderline = json_orderget[counter]
price = json_orderline["price"]
tidnew = json_orderline["tid"]
if json_orderline["type"] == 'buy':
buy += float(json_orderline["amount"])
else:
sell += float(json_orderline["amount"])
print("New price is: " + str(price))
print("New tid is: " + str(tid))
print("Buy volume is: " + str(buy))
print("Sell volume is: " + str(sell))
counter += 1
tid = tidfirst
print("tid is: " + str(tid))
tid = int(tid)
counter = -1
time.sleep(1)