当前位置: 首页 > 后端技术 > Python

Python3十大经典错误及其解决方法

时间:2023-03-26 00:14:40 Python

作者|燕小燕儿出处|统计与数据分析实际接触过很多Python爱好者,包括初学者和转行者。不管你学习Python的目的是什么,总之,学习Python初期写的代码不报错就是极好的。下面,严晓阳将列出Python3的十大经典错误及其解决方法,供大家学习。1.SyntaxError语法错误(1)引号没有配对,出现错误信息:1SyntaxError:EOLwhilescanningstringliteral错误示例:1string='helloworld解决方法:记得把字符串放在引号里,单引号和双引号无关紧要。当字符串包含单引号或双引号时,很容易得到不匹配的引号。(2)括号没有配对出现错误信息:1SyntaxError:unexpectedEOFwhileparsing错误示例一:1result=(1024+(512*2)/128)错误示例二:1print('helloworld'解决方法:使括号出现成对出现。这个问题在写复杂的表达式或者调用函数的时候经常会遇到。(3)误用自运算符++或者--等错误信息:1SyntaxError:invalidsyntaxerror例子:1v=642v++解决方法:在Python语言中,没有像C语言中的++或--这样的自运算符,类似函数的用法是+=或-=运算符,例如使用如下代码让变量v自运算-operation加1的操作。1v+=1(4)试图用等号(=)判断两个操作数是否相等错误信息:1SyntaxError:invalidsyntaxerrorexample:1ifv=64:2print('helloworld')解决方法:用Python语言中的两个等号(==)作为关系运算符判断两个操作数是否相等的运算符,等号(=)是赋值运算符。(6)错误使用Python语言关键字作为变量名错误信息:1SyntaxError:can`tassigntokeyword错误示例:1False=1解决方法:不要使用Python语言关键字作为变量名、函数名或类名等。在在PythonShell窗口,使用help('keywords')命令可以查看Python语言的关键字列表。(7)if/elif/else/while/for/def/class等最后忘记加冒号(:)错误信息:1SyntaxError:invalidsyntax错误示例1:1a='12345'2foriina3print(i)错误示例2:1defsayhi2print('Hi')解决方法:在if/elif/else/while/for/def/class等语句的末尾添加冒号(:)。牢记语法规则,多练习,多敲代码。(8)中文标点符号使用错误错误信息:1SyntaxError:invalidcharacterinidentifier错误示例1:1print('hello','world')2#错误原因:CommaisaChinesepunctuationmark错误示例2:1foriinrange(10):2#错误原因:冒号为中文标点符号解决方法:除字符串中可以有中文外,其他情况均使用英文状态进行编辑。2.IndentationErrorIndentationerror错误信息:1IndentationError:unindentdoesnotmatchanyouterindentationlevel2IndentationError:expectedanindentedblock错误示例:1a=22whilea<0:3print('hello')4a-=15else:6print('0.0')解决方法:上述代码中while语句体中代码的缩进没有对齐。正确使用缩进排版代码。当从其他地方复制和粘贴代码时,此错误更为常见。3.NameError名称错误当变量名、函数名或类名写错,或者函数在定义之前被调用等等,都会导致名称错误。错误信息:1NameError:name'pirnt'isnotdefined2NameError:name'sayhi'isnotdefined3NameError:name'pd'isnotdefined错误示例1:1pirnt('helloworld')2#错误原因:Print拼写错误。错误示例2:1sayhi3defsayhi:4pass5#错误原因:在函数定义之前调用了函数。错误示例3:1pd.read_excel(r'file.xlsx')2#错误原因:调用pandas方法前没有导入pandas库或者别名没有命名为pd。解决方法:正确书写变量名、函数名或类名等,在使用变量前赋值??,在函数调用前放置函数定义,在使用第三方库前导入、切换包等。即保证一个名称(标识符)存在后才能使用。4.TypeError类型错误(1)Integerandstringcannotbeconnected报错信息:1TypeError:Can`tconvert'int'objecttostrimplicitly2TypeError:unsupportedoperandtype(s)for+:'float'and'str'错误示例1:1print('score:'+100)错误示例2:1print(9.8+'seconds')解决方法:使用str函数将整数、浮点数或布尔值转换为字符串后再进行拼接是字符串类型。(2)调用函数时,参数个数不正确,或者没有传递参数。错误信息:1TypeError:inputexpectedatmost1arguments,got22TypeError:saymissing1requiredpositionalargument:'words'错误示例1:1input('inputName','age')2#错误原因:试图提供输入函数的第二个参数。错误示例2:1defsay(words):2print(words)4say5#错误原因:调用函数时没有传递参数。解决方法:记住函数的用法,理解函数的参数定义,使用正确的方法调用函数。5.KeyError键错误如果使用不存在的键名访问字典中的元素,就会出现此错误。错误信息:1KeyError:'c'错误示例:1d={'a':1,'b':2}2print(d['c'])解决方法:访问字典中的元素时,先用in键检查要访问的键名是否存在,或者使用dictionary和get方法安全访问字典元素。6.IndexError索引错误当访问列表的索引超出列表的范围时,会发生索引错误。错误信息:1IndexError:listindexoutofrange错误示例:1a=[1,2,3]2print(a[3])3#错误原因:第四个索引不存在于列表a中。列表索引从0开始编号。解决方法:通过len函数获取列表的长度,然后判断要访问的索引是否超出列表的范围。7.UNboundLocalErroruninitializedlocalvariable错误在一个函数中,如果修改了一个未声明的全局变量,就会遇到这个错误。错误信息:1UnboundLocalError:localvariable's'referencedbeforeassignment错误示例:1s=13deftest:4s+=15print(s)7test8#错误原因:未声明的全局变量s在函数中自增。9#Python把变量s当做局部局部变量,但是变量没有初始化。解决方法:在函数中使用全局变量时,使用global关键字声明。8.AttributeError属性错误错误信息:1AttributeError:'tuple'objecthasnoattribute'append'2AttributeError:'DataFrame'objecthasnoattribute'col'错误示例1:1t=(1,2,3)2t.append(4)3#错误原因:元祖不可变。错误示例2:1df=pd.read_excel(r'data.xlsx')2df.col3#错误原因:DataFrame没有col属性,应该是列。解决方法:正确写类的属性名,不要写错。深刻理解元组和列表的区别,将元组转为列表添加元素。9、ModuleNotFoundErrorModuledoesnotexist错误信息:1ModuleNotFoundError:Nomodulenamed'pandas'错误示例1:1importpandasaspd2#导入不成功,报如上错误。解决方法:这种错误经常报两种情况,一是模块没有下载安装;二是被调用模块路径与被调用模块路径不一致等。第一种情况,直接下载安装即可。在cmd中,pipinstallxxx;在第二种情况下,计算机中可能存在多个版本的Python。建议保留一个普通的。10.FileNotFoundErrorThefiledoesnotexist错误信息:1FileNotFoundError:Fileb'E:testtest_data.csv'不存在错误示例:1pd.read_csv('E:testtest_data.csv')2#错误原因:路径包含't',系统误认为是制表符。解决方法:确保写入文件路径下确实存在后,在读取文件路径前加'r'表示只读,作为文件路径读取;或使用双斜线''转义,如:'E:testtest_data.csv'。偶尔确实是文件名和路径写错了,犯了一些低级的错误。结语报错并不可怕,是一次学习的机会。现在搜索引擎这么发达,只要把报错信息放进去,搜索一下就能找到各种解决办法。更多行业干货持续为您分享,您可以随时关注我们!(1)获取更多优质内容,可以前往:当前疫情有所缓和,也是提升自我、为未来蓄力的好时机——蓄势待发!(2)搜索CDA小程序,手机端随时随地浏览最新资讯和优质课程: