实用网络站
白蓝主题五 · 清爽阅读
首页  > 电脑进阶

Python条件语句缩进错误:多一个空格,程序就罢工

Python时,一不小心多敲了个空格,或者少敲了个Tab,程序直接报错——IndentationError: unexpected indentIndentationError: unindent does not match any outer indentation level。这不是语法错了,是缩进错了。而最常栽跟头的地方,就是if、elif、else这些条件语句。

缩进不是“看起来整齐”,而是语法本身

很多刚转Python的朋友,之前写JavaScript或Java,用大括号{}划范围,缩进纯属为 readability(看着舒服)。但Python不一样:缩进=代码块边界。if后面那一块要执行什么,全靠缩进来定义。没缩进?语法错误。缩进不一致?照样报错。

常见翻车现场

场景1:混用Tab和空格

你在编辑器里按了一次Tab,它插了4个空格;下一行你手敲了3个空格,再加一个Tab……表面看着对齐,Python却认出这是两种缩进方式,直接拒绝运行。

if score >= 60:
print("及格")
print("别松懈") # 这行前面是3空格+1 Tab,和上一行不匹配

场景2:else没和if对齐

写完if块,顺手回车换行,想打else,结果忘了缩进回到和if同一级,而是继续缩进了一层:

if user_logged_in:
print("欢迎回来")
if is_admin:
print("管理员模式已启用")
else: # 错!这个else多缩进了一层,Python以为它是is_admin的分支
print("普通用户")

场景3:空行后缩进断层

在if块里加了个空行,再往下写代码时,编辑器自动缩进没复位,导致新行比if多了一层:

if temperature > 35:
print("太热了")

print("开空调") # 空行后这行缩进没变,但其实该和if平级才对

怎么一眼揪出问题?

打开编辑器的“显示空白字符”功能(VS Code按 Ctrl+Shift+P → 输入“Toggle Render Whitespace”;PyCharm在 View → Active Editor → Show Whitespaces)。Tab会显示为→,空格是点·,立马看出哪行缩进不统一。

另外,别依赖肉眼对齐。Python官方推荐:**全部用4个空格,不用Tab**。在编辑器设置里把Tab键设为插入4空格,一劳永逸。

一个小技巧:用IDLE或Thonny跑简单逻辑

它们对缩进错误提示更直白。比如IDLE报错时会高亮标出“意外缩进”的那行,并在错误信息里写清楚“expected an indented block”。比黑框里一堆英文更容易定位。

说到底,缩进错误不是“小问题”,是Python强制你养成结构化思维的第一课。改掉它,比调通一个复杂算法还让人踏实。