【问题标题】:Else not working in IPython否则不能在 IPython 中工作
【发布时间】:2016-08-17 13:20:00
【问题描述】:

我是 Python 新手。我正在尝试在 IPython 中使用 else 语句,但我收到一条错误消息: “标识错误:unindent 不匹配任何外部标识级别。”我已经用 Python 寻找过类似的问题,但这些问题与混合使用制表键和空格来增加或补充空格/字符有关。在这里,我在每个打印语句前面使用了 4 个空格,没有任何补充(隐藏)字符(当然除了一行回车)。 'if' 部分单独有效,但不适用于 'else' 部分。

x = True
if x == True:
    print('ok')
else:
    print('nok')

更新:这是显示 Ipython 版本、代码和错误消息的屏幕截图。

【问题讨论】:

  • @EricRenouf:我认为这不是重点。语法错误是这里的问题。
  • 这对我们来说非常难以在此处调试,因为我们无法准确看到您在 IPython 会话中输入的内容。
  • 你真的不缩进(退格四次)进入else:行吗?
  • @dunder:“总是更好”?我强烈反对。此外,IPython autoindents 适合你。
  • OP 提供的代码可以自行运行。如果没有更多信息,这个问题是不可重现的,因此在 OP 编辑​​他的帖子之前应该关闭它。

标签: python ipython


【解决方案1】:

IPython 自动缩进块用于复合语句,因此要输入else: 行,您必须再次手动unndent

如果我没有正确取消缩进,我只能重现您的错误;按 1 到 3 次退格键,而不是 4 次。

请注意此错误示例中else: 之前的额外空格,其中我使用了退格键 3 次:

In [2]: if x == True:
   ...:     print('ok')
   ...:  else:
  File "<ipython-input-2-915b4c0eb5ea>", line 3
    else:
         ^
IndentationError: unindent does not match any outer indentation level

IPython 允许你编辑你的块;只需使用向上箭头键调用失败的文本,并删除 else: 行开头的多余空格。

如果您不是手动输入代码,请不要直接复制和粘贴代码。请改用%paste 命令,IPython 将为您粘贴代码,避免任何自动缩进问题:

In [3]: %paste
x = True
if x == True:
    print('ok')
else:
    print('nok')
## -- End pasted text --
ok

更多信息请参见%paste?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多