【问题标题】:Python confusion [duplicate]Python混淆[重复]
【发布时间】:2020-06-23 15:39:31
【问题描述】:

我在在线浏览器中为 repl 编码时得到 - “unindent 不匹配任何外部缩进级别”。它在prices = {} 中显示错误这是我的代码:

if __name__ == "__main__":

    # Query the price once every N seconds.
    for _ in iter(range(N)):
        quotes = json.loads(urllib.request.urlopen(QUERY.format(random.random())).read())
        prices = {}
        for quote in quotes:
            stock, bid_price, ask_price, price = getDataPoint(quote)
      prices[stock] = price
            print ("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price))

        print ("Ratio %s" % getRatio(prices['ABC', prices['DEF']))

【问题讨论】:

  • 缩进 在 Python 中意味着什么。您不能随心所欲地水平放置代码,您必须使用它来指示程序的结构 - 例如,它只是指示循环或函数的结束位置。
  • 前两行有缩进的制表符,prices = {} 行只有空格。您必须使缩进保持一致。
  • @tdelaney 块,不是块范围。 Python 没有块作用域。
  • @chepner - 确实是它的“套件”,但这有点晦涩难懂。无论如何我都会删除评论。
  • 是的。谢谢 !它现在正在工作。

标签: python read-eval-print-loop


【解决方案1】:

问题出在第 7 行

prices[stock] = price

这一行。因为这条线没有与第二个循环缩进。由于 python 使用过程语言,如果您错过在代码行之间添加制表符或空格,那么您很可能会遇到此错误。 ...在编程时,您没有缩进 prices[stock] = price 行。

更新代码-

# Query the price once every N seconds.
for _ in iter(range(N)):
    quotes = json.loads(urllib.request.urlopen(QUERY.format(random.random())).read())
    prices = {}
    for quote in quotes:
        stock, bid_price, ask_price, price = getDataPoint(quote)
        prices[stock] = price
        print ("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price))

    print ("Ratio %s" % getRatio(prices['ABC', prices['DEF']))

如果您不想在第二个循环中更改prices[stock] 的值,只需将其粘贴到print ("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price)) 行之后并根据第一个循环缩进即可。

我希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2021-03-30
    • 1970-01-01
    • 2014-05-09
    • 2016-08-14
    • 2010-10-12
    相关资源
    最近更新 更多