12

由于代码中的这一部分,我无法编译:

if command == 'HOWMANY':
    opcodegroupr = "A0"
    opcoder = "85"
elif command == 'IDENTIFY':
    opcodegroupr = "A0"
    opcoder = "81"

我有这个错误:

抱歉:IndentationError: ('unndent does not match any external indentation level', ('wsn.py', 1016, 30, "\t\telif command == 'IDENTIFY':\n"))

但我没有看到任何缩进错误。可能是什么问题?

4

7 回答 7

15

您正在混合制表符和空格。

使用以下命令查找确切位置:

python -tt yourscript.py

并用空格替换所有制表符。您确实希望将文本编辑器也配置为只为制表符插入空格。

于 2013-02-20T11:54:56.650 回答
12

如有疑问,请更改您的编辑器以使制表符和空格可见。让编辑器将所有制表符解析为 4 个空格也是一个非常好的主意。

于 2013-02-20T11:55:36.183 回答
6

对于崇高的文本编辑器

当代码包含用于缩进的制表符和空格的混合时,通常会发生缩进错误。我有一个非常好的解决方案来纠正它,只需在 sublime 文本编辑器中打开您的代码,然后'Tab Size'在 Sublime 文本编辑器的右下角找到并单击它。现在选择

'Convert Indentation to Spaces'

或者

'Convert Indentation to Tabs'

您的代码在任何一种情况下都可以使用。

此外,如果您希望 Sublime 文本为您自动为每个代码执行此操作,您可以更新首选项设置,如下所示:-

Sublime Text 菜单 > 首选项 > 设置 - 特定语法:

Python.sublime-settings

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
于 2017-01-25T14:40:16.460 回答
4

在记事本++

查看 ---> 显示符号 ---> 显示空格和制表符(选择)

用空格替换所有制表符。

于 2014-08-07T10:32:40.583 回答
2

它也发生在我身上,但我解决了问题。我使用了 5 个空格的缩进,但是当我按下制表符时,它曾经放置了 4 个空格的缩进。所以我认为你应该只使用一件事;即添加缩进或空格的选项卡按钮。理想的缩进是 4 个空格之一。我发现 IntelliJ 对于这类事情非常有用。

于 2018-04-01T15:04:19.470 回答
1

您是否使用了一些<tab>而不是空格?

尝试删除代码前的所有空格并使用<space>字符读取它们,以确保它不是<tab>.

于 2013-02-20T11:55:40.243 回答
0

这也发生在我身上,python对空间敏感,所以在“ : ”(冒号)之后你可能会留下一个空格,
例如:[空格由“ . ”表示]

`if command == 'HOWMANY':.
     opcodegroupr = "A0"
     opcoder = "85"
 elif command == 'IDENTIFY':.
     opcodegroupr = "A0"
     opcoder = "81"`

因此,请尝试删除不必要的空格,如果您在 IDE 中打开它,您的光标将显示在远离“:”的位置,例如 :-" if command == 'HOWMANY': | "
....而应该是:- " if命令 == 'HOWMANY':| "

于 2018-10-21T12:43:25.280 回答