Python 常见报错类型
<p>一、<span style="background-color: rgba(255, 204, 0, 1)">TypeError</span>:类型错误,对象用来表示值的类型非预期类型时发生的错误</p><ul data-list-="">
<li class="bullet-item">错误例子:</li>
</ul>
<p> age=18</p>
<p> print(‘我的年龄是’+age)</p>
<ul data-list-="">
<li class="bullet-item">报错信息:TypeError: can only concatenate str (not "int") to str</li>
</ul>
<p> (这是类型错误,提示必须是一个字符串,不能是数字。)</p>
<ul data-list-="">
<li class="bullet-item">解决方法:在使用“+”做拼接的时候,必须使用字符串,或者把数字转化成字符串。</li>
</ul>
<ul data-list-="">
<li class="bullet-item">正确代码:</li>
</ul>
<p> age=18</p>
<p> print(‘我的年龄是’+str(age))</p>
<div data-header="3">二、<span style="background-color: rgba(255, 204, 0, 1)">AttributeError</span>:属性错误,特性引用和赋值失败时会引发属性错误</div>
<ul data-list-="">
<li class="bullet-item">错误例子:</li>
</ul>
<p> tp=('1','3','5')</p>
<p> tp.append('7')</p>
<p> print(tp)</p>
<ul data-list-="">
<li class="bullet-item">报错信息:AttributeError: 'tuple' object has no attribute 'append'</li>
</ul>
<p> 提示: 属性错误:元组对象没有“append”的属性,简单来说元组是不可变对象</p>
<ul data-list-="">
<li class="bullet-item">解决方法:把元组换成列表。</li>
</ul>
<p>三、<span style="background-color: rgba(255, 204, 0, 1)">NameError</span>:试图访问的变量名不存在。</p>
<ul data-list-="">
<li class="bullet-item">举个简单的例子,只运行一行print(a),会报错:NameError: name 'a' is not defined。</li>
<li class="bullet-item">简单来说,就是变量a没有定义,解决方法是在前面给a赋值,比如加上一行a=''。</li>
</ul>
<ul data-list-="">
<li class="bullet-item">还有一种需要小心处理的是:变量或者函数名拼写错误。如:</li>
</ul>
<p> name= '卡西'</p>
<p> print('My name is ' + nane)</p>
<p> 报错信息和上面一样:NameError: name 'nane' is not defined。这类错误只要根据报错信息,细心检查下拼写,就能很快解决~</p>
<div data-header="3">四、<span style="background-color: rgba(255, 204, 0, 1)">SyntaxError</span>:语法错误,代码形式错误</div>
<p> <img src="https://img2018.cnblogs.com/blog/1777141/201909/1777141-20190903103231910-171317586.png"></p>
<ul data-list-="">
<li class="bullet-item">报错信息为:SyntaxError: invalid syntax</li>
</ul>
<p> 提示是:语法错误,非法的语法。</p>
<ul data-list-="">
<li class="bullet-item">解决方法:</li>
</ul>
<p> 当报错的时候,要注意回到错误信息的那一行,然后从下往上,慢慢查找,此处这个程序就是因为if语法忘了在判断语句后面加“:”,所以导致的错误。</p>
<p> 另外,初学者写代码时要注意使用<strong class="ql-size-12">英文符号,这是大家经常犯的错误</strong></p>
<p><strong class="ql-size-12"> <img src="https://img2018.cnblogs.com/blog/1777141/201909/1777141-20190903103349578-452324725.png"></strong></p>
<div data-header="3">五、<span style="background-color: rgba(255, 204, 0, 1)">KeyError</span>:在读取字典中的key和value时,如果key不存在,就会触发KeyError错误。</div>
<ul data-list-="">
<li class="bullet-item">举个小栗子:</li>
</ul>
<p> dict={'a':1,'b':2,'c':3}</p>
<p> print(dict['d'])</p>
<p> 报错信息为:KeyError: 'd'。</p>
<ul data-list-="">
<li class="bullet-item">第一种解决方法,首先测试key是否存在,然后才进行下一步操作,如:</li>
</ul>
<p> <img src="https://img2018.cnblogs.com/blog/1777141/201909/1777141-20190903103632684-1310796492.png"></p>
<p> </p>
<p>六、<span style="background-color: rgba(255, 204, 0, 1)">IndexError</span>:索引错误,使用的索引不存在,常索引超出序列范围,序列中没有此索引(index)</p>
<p> <img src="https://img2018.cnblogs.com/blog/1777141/201909/1777141-20190903103743024-977676510.png"></p>
<p> </p>
<ul data-list-="">
<li class="bullet-item">报错信息:IndexError: list index out of range</li>
</ul>
<p> 提示:索引错误,列表索引超出了范围。</p>
<ul data-list-="">
<li class="bullet-item">解决办法:</li>
</ul>
<p> 回头看列表的长度,索引是要小于列表的长度的。上面的列表长度是5,而索引却要打印第七个,所以是超出了列表的长度</p>
<p>七、<span style="background-color: rgba(255, 204, 0, 1)">IndentationError</span>:缩进错误</p>
<p> <img src="https://img2018.cnblogs.com/blog/1777141/201909/1777141-20190903103854969-1428903465.png"></p>
<p> </p>
<ul data-list-="">
<li class="bullet-item">报错:IndentationError: expected an indented block</li>
</ul>
<p> 原因:缩进有误,<strong class="ql-size-14">Python的缩进非常严格</strong>,行首多个空格,少个空格都会报错。</p>
<p> 由于不熟悉python编码规则,不易查找,所以会成为新手常犯的一个错误。像def,class,if,for,while等代码块都需要缩进。</p>
<div data-header="3">八、<span style="background-color: rgba(255, 204, 0, 1)">TabError: Tab</span> 和空格混用</div>
<p> 相邻的两句的缩进需要统一使用tab或统一使用空格,<span style="background-color: rgba(255, 204, 0, 1)"><strong class="ql-size-14">不能混用</strong></span>。否则就会出现以下报错:TabError: inconsistent use of tabs and spaces in indentation。</p>
<ul data-list-="">
<li class="bullet-item">tab键本质上是制表符,而不是缩进符,不同的文本编辑器中制表符代表的空格宽度不一,如果代码需要跨平台或跨编辑器读写,建议不要使用制表符(tab键)。</li>
</ul>
<p> 心得:inconsistent use of tabs and spaces in indentation</p>
<p> 错误处理方法:</p>
<p> 把报错的行光标放到第一个字母前,backspace直接删除到和上一行接起来,然后按回车就行了。</p>
<p> </p>
<p> </p>
<p>https://www.runoob.com/python/python-exceptions.html</p>
<p> </p>
<p> </p>
<p> </p>
<p class="bullet-item"> </p>
<p> </p><br><br>
来源:https://www.cnblogs.com/smilelin/p/11451581.html
頁:
[1]