否则不在IPython工作

时间:2016-08-17 13:20:01

标签: python ipython

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

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

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

1 个答案:

答案 0 :(得分:1)

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

如果我没有正确缩进,我只能重现你的错误;在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?