循环内带有布尔值的 if 语句:'NoneType' 错误
if statement with boolean within loop: 'NoneType' error
我一直在 Whosebug 上搜索,发现很多帖子都在谈论这个错误,我已经尝试了很多提供的解决方案,但 none 有效。问题看起来很简单,我真的很困惑怎么了。
我对 Binance 进行了 API 调用,输出是一个长字典。我得到了我感兴趣的钥匙,它 returns 要么是真要么是假。当我测试类型时,它显示它是一个布尔值。我只是 运行 一个列表中不同符号的循环并测试该值是否为真,如果是则将符号名称附加到新列表
test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
info = client.get_symbol_info(x)
a = info['isMarginTradingAllowed']
if a:
tickers.append(x)
TypeError: 'NoneType' object is not subscriptable
非常感谢任何帮助。这是 info
的输出
{'symbol': 'BTCUSDT',
'status': 'TRADING',
'baseAsset': 'BTC',
'baseAssetPrecision': 8,
'quoteAsset': 'USDT',
'quotePrecision': 8,
'baseCommissionPrecision': 8,
'quoteCommissionPrecision': 8,
'orderTypes': ['LIMIT',
'LIMIT_MAKER',
'MARKET',
'STOP_LOSS_LIMIT',
'TAKE_PROFIT_LIMIT'],
'icebergAllowed': True,
'ocoAllowed': True,
'quoteOrderQtyMarketAllowed': True,
'isSpotTradingAllowed': True,
'isMarginTradingAllowed': True}
你的错误在信息变量中,是 None for one x in test list
此检查解决了问题:
test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
info = client.get_symbol_info(x)
if info is None: continue
a = info['isMarginTradingAllowed']
if a:
tickers.append(x)
我一直在 Whosebug 上搜索,发现很多帖子都在谈论这个错误,我已经尝试了很多提供的解决方案,但 none 有效。问题看起来很简单,我真的很困惑怎么了。
我对 Binance 进行了 API 调用,输出是一个长字典。我得到了我感兴趣的钥匙,它 returns 要么是真要么是假。当我测试类型时,它显示它是一个布尔值。我只是 运行 一个列表中不同符号的循环并测试该值是否为真,如果是则将符号名称附加到新列表
test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
info = client.get_symbol_info(x)
a = info['isMarginTradingAllowed']
if a:
tickers.append(x)
TypeError: 'NoneType' object is not subscriptable
非常感谢任何帮助。这是 info
的输出 {'symbol': 'BTCUSDT',
'status': 'TRADING',
'baseAsset': 'BTC',
'baseAssetPrecision': 8,
'quoteAsset': 'USDT',
'quotePrecision': 8,
'baseCommissionPrecision': 8,
'quoteCommissionPrecision': 8,
'orderTypes': ['LIMIT',
'LIMIT_MAKER',
'MARKET',
'STOP_LOSS_LIMIT',
'TAKE_PROFIT_LIMIT'],
'icebergAllowed': True,
'ocoAllowed': True,
'quoteOrderQtyMarketAllowed': True,
'isSpotTradingAllowed': True,
'isMarginTradingAllowed': True}
你的错误在信息变量中,是 None for one x in test list
此检查解决了问题:
test = ['BTCUSDT', 'ETHBTC', 'ATXETH', 'BATETH']
tickers = []
for x in test:
info = client.get_symbol_info(x)
if info is None: continue
a = info['isMarginTradingAllowed']
if a:
tickers.append(x)