我是Python的新手。我正在尝试在IPython中使用else语句,但是我收到一条错误消息: “标识错误:unindent与任何外部标识级别都不匹配。”我已经在Python中寻找了类似的问题,但是这些问题与使用制表键和空格来增加或补充空格/字符有关。在这里,我在每个print语句前面使用了4个空格,没有任何补充(隐藏)字符(当然除了一个回车符号)。 “if”部分单独起作用,但不起作用'else'部分。
x = True
if x == True:
print('ok')
else:
print('nok')
更新:以下是显示Ipython版本,代码和错误消息的屏幕截图。
答案 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?
。