оператор if с логическим значением в пределах l oop: ошибка 'NoneType' - PullRequest
1 голос
/ 11 апреля 2020

Я искал в stackoverflow и нашел много сообщений, рассказывающих об ошибке, я перепробовал многие из представленных решений, но ни одна из них не работает. Проблема выглядит так просто, я действительно запутался, что не так.

Я делаю вызов API для Binance, вывод - длинный словарь. Я получаю ключ, который меня интересует, и он возвращает либо True, либо False. Когда я проверяю тип, он показывает, что это логическое значение. Я просто запускаю al oop для различных символов в списке и проверяю, является ли значение истинным, если это так, добавляю имя символа в новый список

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}

1 Ответ

0 голосов
/ 11 апреля 2020

Ваша ошибка в информационной переменной, Нет для одного 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)
...