Python if 语法 3.2.2

1 投票
3 回答
1954 浏览
提问于 2025-04-17 08:07

这是个很基础的问题,但这段代码有什么问题呢?

for row in rows:
    if row["Type"] = 'DEADLINE':
        print (row["Title"])

我遇到了一个错误,提示是 TabError: inconsistent use of tabs and spaces in indentation,指向了if语句后面的冒号。

抱歉如果这个问题对Stack Overflow来说太简单了,但我不确定这是因为我从Python 2.x转到3.x时出现的问题,还是我还没学会的语法问题。

谢谢大家

编辑:问题解决了。我没注意到我的文本编辑器的“将制表符转换为空格”功能是关闭的。所以,确实是制表符和空格混用了。我原以为这个提示是说我在空白字符的使用上不一致,比如空格太多之类的。

对了,我知道单个的=是语法错误,那是我试图解决TabError时写的,显然是错的。

3 个回答

2

问题似乎出在你用来缩进代码的空白字符上。你混用了制表符和空格。我建议你在编辑器中使用“显示空白字符”的功能,把代码中的所有制表符换成正确数量的空格。

如果你的编辑器没有“显示空白字符”的功能,你可以通过在行首临时插入一个空格来找到制表符,看看这一行的末尾是否也正好移动了一个空格。如果没有移动,或者移动了(比如)4个或8个字符,那说明这一行上有一个制表符。

3

你真正的问题是,在if语句的条件里,你用了单个=,而应该用两个==

另外,确保你在编辑Python代码时,把编辑器设置成只用空格,不要用制表符(tabs)。

7

你可能在缩进的时候混用了制表符和空格,就像错误信息所说的那样。

有些编辑器会很烦人地自动把8个空格替换成一个制表符,所以你的代码可能实际上看起来是这样的:

for row in rows:
    if row["Type"] = 'DEADLINE':
->print (row["Title"])

这里的 -> 代表一个制表符。

你可以让编辑器显示制表符,并且不要再替换空格了。

或者,你可以选择统一使用一个制表符来进行缩进。

撰写回答