【问题标题】:if statement with boolean within loop: 'NoneType' error循环内带有布尔值的 if 语句:“NoneType”错误
【发布时间】:2020-04-10 22:47:04
【问题描述】:

我一直在 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}

【问题讨论】:

  • client.get_symbol_info(x)None,至少有一个x 取自test。您是否检查过此 API 调用是否对您使用的所有输入都成功?

标签: python loops dictionary boolean binance


【解决方案1】:

您的错误在信息变量中,测试列表中的一个 x 为 None

此检查解决了问题:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 2014-02-02
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多