目录

  • 1 第0章 课程概述
    • 1.1 课程介绍
    • 1.2 课前调查问卷
    • 1.3 学习目标
    • 1.4 教学日历
    • 1.5 课程考核
    • 1.6 课程答疑与反馈
    • 1.7 课程资料
    • 1.8 课前C语言知识巩固
    • 1.9 IT学子成长指导
    • 1.10 感谢
  • 2 第1章 绪论
    • 2.1 本章学习目标与支撑资源
    • 2.2 数据结构研究的内容
    • 2.3 基本概念和术语
    • 2.4 算法和算法分析
    • 2.5 上机必学:类C语言描述算法
    • 2.6 章节测验
  • 3 第2章 线性表
    • 3.1 本章学习目标
    • 3.2 线性表的定义和特点
    • 3.3 线性表的顺序表示与实现
    • 3.4 单链表
    • 3.5 循环链表及双向链表
    • 3.6 线性表的应用
    • 3.7 上机综合实训一:线性表的基本操作
    • 3.8 章节测验
    • 3.9 课程回放
  • 4 第3章 栈和队列
    • 4.1 本章学习目标
    • 4.2 栈
    • 4.3 栈的应用举例
    • 4.4 栈与递归
    • 4.5 队列
    • 4.6 上机实训二:栈的应用
    • 4.7 章节测验
    • 4.8 课程回放
  • 5 第4章   串、数组和广义表
    • 5.1 本章学习目标
    • 5.2 串(字符串String)
    • 5.3 数组
    • 5.4 广义表
    • 5.5 章节测验
  • 6 第5章 树和二叉树
    • 6.1 本章导学
    • 6.2 树的基本概念
    • 6.3 二叉树的定义、性质和存储结构
    • 6.4 二叉树的遍历及应用
    • 6.5 线索化二叉树
    • 6.6 哈夫曼树
    • 6.7 树、森林和二叉树
    • 6.8 综合实训
    • 6.9 章节测验
  • 7 第6章 图
    • 7.1 图的定义和基本术语
    • 7.2 图的存储结构
    • 7.3 图的遍历
    • 7.4 最小生成树
    • 7.5 最短路径
    • 7.6 拓扑排序与关键路径
    • 7.7 章节测验
    • 7.8 课程回放
  • 8 第7章 查找
    • 8.1 章节导学
    • 8.2 静态表的查找
    • 8.3 树表的查找
    • 8.4 散列表的查找
    • 8.5 章节测验
  • 9 第8章 排序
    • 9.1 排序导学
    • 9.2 插入排序
    • 9.3 交换排序
    • 9.4 选择排序
    • 9.5 归并排序
    • 9.6 基数排序
    • 9.7 各种内部排序比较
    • 9.8 章节测验
  • 10 算法分析与设计
    • 10.1 第1章算法基础
    • 10.2 第2章分治算法
    • 10.3 第3章递归算法
    • 10.4 第4章贪心算法
    • 10.5 第5章回溯算法
    • 10.6 第6章动态规划算法*
    • 10.7 第7章图的基本操作
    • 10.8 Python常见问题及解决方案
Python常见问题及解决方案

Python中出现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 显示空格与制表符

然后就看出问题来了: 
原来错误的行数是1580行:

python error line

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

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

知道原因了,解决起来就简单了: 
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。 

在Notepad++中,去: 

设置->首选项:

设置 首选项

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

语言 以空格取代Tab

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

【总结】

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

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


引自:Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法_python_脚本之家 (jb51.net)