IndentationError: unindent does not match any outer indentation level

【问题】 
一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: 
IndentationError: unindent does not match any outer indentation level

【解决过程】 
1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。 
都是用TAB键,对齐好了的,没有不对齐的行数啊。 
2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。 
结果还是此语法错误。 
3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。

当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。 
找到了,在: 
视图 -> 显示符号 -> 显示空格与制表符

notepad   显示空格与制表符

然后就看出问题来了: 

原来错误的行数是44行:

IndentationError: unindent does not match any outer indentation level


但是源码的44行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对齐,混用了TAB键和空格:

 
而新的Python语法,是不支持的代码对齐中,混用TAB和空格的。所以出现上述错误提示了。

知道原因了,解决起来就简单了: 
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。 
在Notepad++中,去: 
设置->首选项:

设置 首选项

语言->以空格取代(TAB键):

语言 以空格取代Tab

即可实现,对于以后每次的TAB输入,都自动转换为4个空格。

【总结】

Python中遇到IndentationError,以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。

估计很多人也都是此类原因导致的。记得统一一下就好。

IndentationError: unindent does not match any outer indentation levelPython中的一个常见错误,它表示缩进错误。这个错误通常是由于代码中的缩进不正确导致的。Python使用缩进来表示代码块,因此在编写代码时必须确保缩进正确。 解决这个错误的方法有以下几种: 1. 检查缩进是否一致:确保代码块中的每一行都有相同的缩进级别。Python通常使用4个空格作为缩进级别,而不是使用制表符。如果你在代码中混合使用了空格和制表符,可能会导致IndentationError错误。 2. 检查缩进是否正确对齐:确保代码块中的每一行都正确对齐。如果你的代码块中的某些行没有正确对齐,可能会导致IndentationError错误。 3. 检查缩进是否存在多余的空格:有时候,代码中可能会存在多余的空格,这可能会导致IndentationError错误。请检查代码中是否有多余的空格,并将其删除。 4. 检查代码块的开始和结束:确保代码块的开始和结束位置正确。如果代码块的开始和结束位置不正确,可能会导致IndentationError错误。 下面是一个示例代码,演示了如何修复IndentationError错误: ```python def my_function(): print("Hello, world!") print("This is a test.") my_function() ``` 请注意,上述代码中的两个print语句都缩进了4个空格,以确保它们在同一个代码块中。如果缩进不正确,将会出现IndentationError错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值