循环内带有布尔值的if语句:“NoneType”错误

2024-06-26 02:59:55 发布

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

我一直在搜索stackoverflow,发现很多帖子都在谈论这个错误,我尝试了很多解决方案,但都没有成功。这个问题看起来很简单,我真的不知道怎么了

我对Binance进行API调用,输出是一个长字典。我得到了我感兴趣的密钥,它会返回True或False。当我测试类型时,它显示它是一个布尔值。我只是为列表中的不同符号运行一个循环,并测试该值是否为真,如果为真,则将符号名称附加到一个新列表中

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

非常感谢您的帮助。这是信息的输出

 {'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}

Tags: testinfotrue列表错误binance符号解决方案
1条回答
网友
1楼 · 发布于 2024-06-26 02:59:55

您的错误在info变量中,对于测试列表中的一个x为无

此检查可解决以下问题:

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)

相关问题 更多 >