Python基础中所出现的异常报错总结

今天我们来探索python中大部分的异常报错

首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等。

打个比方很多公司年终送苹果笔记本,你程序话思维以为是(MAC)电脑笔记本,结果给你个苹果+笔记本。。。首先类型不对,数量也不对。

先来看几个常见的报错如下:


NameError 命名错误 原因是: name 'a' is not defined  命名a还未定义 简单来说就是程序不知道a带表谁 如果a=1 那程序就懂了 a代表1

所以以后碰到这类代码只用找到错误未定义的a给它赋相应的值即可解决了。

好了我们继续看下一个如下:


IndexError索引错误(也有叫边界错误) 原因: list index out of range 列表的索引已经超出其范围导致

列表a只有2个参数,下标是0,1(不懂去看列表基础),而我要打印下标2位置的值这时候就超过它的标准不在范围内

打个比方坐公交车1米2以下儿童免费,结果来个1米5上来就不能免费因为你超过规定高度

来我们继续continue:


KeyError键值错误 一般出现在字典中原因是:字典a中没有height这个键值,name已经打印出来因为a里面已经存在

字典是由dict = { key : value }一一对应组成,打个比方就理解了dict好比一家公司company由员工key类似标识

value等于员工的属性(岗位,工资,对应个人信息等)这报错就等于去一个公司找某某某,结果人家公司说没这个人一样。

继续继续continue:


ImportError 导入错误 原因:No module named nothing 没有模块名叫nothing的方法

一般这错误会发生在拼写错误或者大小写,没有安装模块方法,没有正确引用位置(模块更新版本可能会改方法名或新增文件夹)

这时候我推荐你去python2.x或者python3.x目录下\Lib\site-packages文件里面找找看(第三方库模块都会在这几种存放)

继续继续continue:

IOError输入输出错误 原因:No such file or directory : 'test' 没有在目录中找到叫test文件

这个容易理解,无中生有。程序说:你坑谁啊?

继续继续continue:


AttributeError成员属性错误 原因:一切皆对象 然而字典a对象内没有一个内置函数也就是内置方法叫sort排序,大家都知道字典是无序的,list列表才有这方法

当你定义一个变量不知道能用什么内置函数和方法时可以这样用dir查看以下当前可以用那些方法。

SyntaxError 语法错误 :无效语法  a没有定义所以没办法让它转换为整型 这也是常见错误之一

来接着看下一个:


TypeError类型错误:不知道的哈希类型 list列表 (后面为个人理解) 但是元组却可以放进去有点费解,字典的key一般是单元素或唯一标识,

恰好元组不可变的序列也是唯一标识,所以元组可以放入key中。打比方就如你是世界上唯一的key,没有和你完全一样的存在。

以上是经常会遇到的问题报错,大家学会了就可以自己思考解决方法了这样也利于大家提高自己的水平。

时间: 2016-11-18

1.ValueError: Invalid control character at: line 1 column 8363 (char 8362) 使用json.loads(json_data)时,出现: ValueError: Invalid control character at: line 1 column 8363 (char 8362) 出现错误的原因是字符串中包含了回车符(\r)或者换行符(\n) 解决方法: (1)对这些字符转义: json_data = json_data.r

exam = { 'math': '95', 'eng': '96', 'chn': '90', 'phy': '', 'chem': '' } 使用下列遍历的方法删除: 1. for e in exam: 2. if exam[e] == '': 3. del exam[e] 结果出现下列错误,怎么解决: Traceback (most recent call last): File "Untitled.py", line 3, in for e in

今天写Python程序上传图片需要用到PIL库,于是到http://www.pythonware.com/products/pil/#pil117下载了一个1.1.7版本的,我用的是CentOS64 并且自行升级后的Python版本安装PIL库 首先下载解压: 复制代码 代码如下: [root@lee ~]# wget http://www.pythonware.com/products/pil/#pil117 [root@lee ~]# tar -xf Imaging-1.1.7.tar.gz


错误提示如下: 其实这是一个挺常见的系统报错,缺乏VC++库. 我安装的是python3.5.2,这个版本需要的vc版本是2015的了,下载:Microsoft Visual C++ 2015 安装完后发现就正常了: 总结 通过以上的方法就能轻松解决首次安装Python后运行报错的问题,希望本文的内容对同样遇到这个问题的朋友们能有所帮助,如果有疑问大家可以留言交流,小编会尽快给大家回复.

Python2.7在Windows上有一个bug,运行报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) 解决方案如下: 编辑Python27\Lib\mimetypes.py文件,全选,替换为以下patch后的正确脚本,或者直接依据此patch修改: """Guess the MIME type of a file. Th


前言 众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错. 如以下的代码: # coding=utf8 str = '你的分数是:' num = 82 text = str+num+'分 | 琼台博客' print text 执行结果 直接报错:TypeError: cannot concatenate 'str' and 'int' objects 解决这个方法只有提前把num转换为字符串类型,可以使用bytes函数把int

如下所示: 将i前面加str(i)就可以了 补充拓展:python 连接字符串和数字 python 连接字符串和数字的问题: 首先要说的是,python是强类型的语言,如果你把一个字符串和数字直接做连接的操作的话,会报错: TypeError: must be str, not int 下面是我们的一个例子: a = 33 b = "33" c = a + b 如果你要数字和字符串连接的话,可以把数字通过str的方法转换成字符串的形式,然后再做连接的操作. 比如c = str(a) +


发现问题 最近遇到了一个奇葩的问题就是应用启动失败,但是tomcat没有报任何的日志出来,log4j.properties日志级别写的是debug级别也没用. 解决过程 遇到这种情况,可以试着在web应用的classpath目录添加一个logging.properties文件来试一下 handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ##################################

python拼接字符串一般有以下几种方法: ①直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!' print(s) 输出结果: Hello World! 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率. ②通过str.join()方法拼接 strlist=['Hello',' ','World','!'] print(''.join(str


如下所示: 在需要导入的那个文件夹里面新建一个 __init__.py文件,哪怕这个文件是空的文件也可以. 补充知识:python中import其他目录下的文件出现问题的解决方法 在使用python进行编程的时候,import其他文件路径下的.py文件时报错 Traceback (most recent call last): File "download_and_convert_data.py", line 44, in from .datasets i

一.如何拆分含有多种分隔符的字符串? 实际案例 我们要把某个字符串依据分隔符号拆分不同的字符段,该字符串包含多种不同的分隔符,例如: s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd' 其中,,,都是分隔符,如何处理? 解决方案 连续使用split()方法,每次处理一种分隔符 # 使用Python2 def mySplit(s,ds): res = [s] for d

有一道算法题题目的意思是在二维数组里找到一个峰值.要求复杂度为n. 解题思路是找田字(四边和中间横竖两行)中最大值,用分治法递归下一个象限的田字. 在用python定义一个二维数组时可以有list和numpy.array两种方式,看了几篇python中二维数组的建立的博客发现大多都是建立的初始化的二维数组,而我需要通过文件读取得到的是字符串,再把字符串转换为二维数组,找不到解决方法还是决定自己来转换. 首先,最开始的字符串输出如下,数字之间有空格 思路就是把先按换行符进行切片,再对每一行的字符再

经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子的. 所以作为慢慢要转换到用 Python 写脚本,这些基本的东西必须要掌握到骨子里! 在 Python 中比较字符串最好是使用简单逻辑操作符. 例如,确定一个字符串是否和另外一个字符串匹配.正确的,你可以使用 is equal 或 == 操作符.你也可以使用例如 >= 或 < 来确定几个字符串的排列顺序. 从官方文档上看 The operators ``is`` and

前言 python中字符串对象提供了很多方法来操作字符串,功能相当丰富. print(dir(str)) [..........'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'i

下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 2.排序,选择sorted或者 list.sort()进行排序 内置sorted返回一个新的列表,而list.sort是对列表进行操作 sorted(iterable, cmp=None, key=None, reverse=False) iterable:是可迭代类型; cmp:用于比较的函数,比