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

Python高手不会写的几个错误

时间:2023-03-25 20:51:58 Python

https://www.toutiao.com/i6831...对于刚入门的Python高手来说,在运行代码的过程中或多或少会遇到一些错误学习过程。乍一看似乎令人生畏。随着代码量的积累,熟能生巧。当遇到一些运行时错误时,可以快速定位到原来的问题。以下是一些常见的17个错误。当你写的代码没有这些错误时,你的Python技能就会更上一层楼。换句话说,当你成为一名合格的Python开发人员时,你可能会“连写都不会”这样的错误。1、忘记在if、for、def、elif、else、class等声明的末尾添加会导致“SyntaxError:invalidsyntax”如下:ifspam==42print('Hello!')2.使用=而不是==还会导致“SyntaxError:语法无效”=是一个赋值运算符,而==是一个相等比较。错误出现在如下代码中:ifspam=42:print('Hello!')3.错误使用缩进导致“IndentationError:unexpectedindent”、“IndentationError:unindentdoesnotmatchanyouterindetationlevel”和“IndentationError:expectedanindentedblock”请记住,缩进增加仅在以:结尾的语句之后使用,并且之后必须恢复到以前的缩进格式。错误出现在以下代码中:print('Hello!')print('Howdy!')或者:ifspam==42:print('Hello!')print('Howdy!')4.在for循环中statementForgettingtocalllen()causes"TypeError:'list'objectcannotbeinterpretedasaninteger"通常你想通过索引迭代列表或字符串的元素,这需要调用range()函数。请记住返回len值而不是返回列表。错误出现在以下代码中:spam=['cat','dog','mouse']foriinrange(spam):print(spam[i])5.尝试修改字符串的值导致"TypeError:'str'objectdoesnotsupportitemassignment"stringisanimmutabledatatype,这个错误出现在下面的代码中:spam='Ihaveapetcat.'spam[13]='r'print(spam)and正确的做法是:spam='Ihaveapetcat.'spam=spam[:13]+'r'+spam[14:]print(spam)6.尝试将非字符串值与字符串结果连接起来在“TypeError:Can'tconvert'int'objecttostrimplicitly”这个错误出现在下面的代码中:numEggs=12print('Ihave'+numEggs+'eggs.')正确的做法是:numEggs=12print('Ihave'+str(numEggs)+'eggs.')numEggs=12print('Ihave%seggs.'%(numEggs))7.忘记在字符串的开头和结尾添加引号导致“SyntaxError:EOLwhilescanningstringliteral"此错误发生在以下代码中:print(Hello!')print('Hello!)myName='Al'print('我的名字是'+myName+.Howareyou?')8.一个变量或函数名拼写错误导致“NameError:name'fooba'isnotdefined”这个错误出现在下面的代码中:foobar='Al'print('Mynameis'+fooba)spam=ruond(4.2)spam=Round(4.2)9.方法名拼写错误"AttributeError:'str'objecthasnoattribute'lowerr'"这个错误出现在下面的代码中:spam='THIS小写。'spam=spam.lowerr()10。引用超出列表的最大索引,导致“IndexError:listindexoutofrange”。出现这个错误的代码如下:spam=['cat','dog','mouse']print(spam[6])11.使用不存在的字典键导致“KeyError:'spam'”这个错误出现在以下代码中:spam={'cat':'Zophie','dog':'Basil','mouse':'Whiskers'}print('Thenameofmypetzebrais'+spam['zebra'])12.尝试使用Python关键字作为变量名导致“SyntaxError:invalidsyntax”PythonkeycannotUsedasavariablename,错误出现在以下代码中:class='algebra'Python3关键字是:and,as,assert,break,class,continue,def,del,elif,else,except,False,finally,for,from,global,if,import,in,is,lambda,None,nonlocal,not,or,pass,提高,回报,真实,尝试,同时,与,yield13。在新变量的定义中使用自增运算符导致“NameError:name'foobar'isnotdefined”声明变量时不要使用0或空字符串作为初始值,所以一句spam+=1使用了自增运算符等于spam=spam+1,表示spam需要指定一个有效的初始值错误出现在以下代码中:spam=0spam+=42eggs+=4214,在定义局部变量之前在函数中使用局部变量(此时有一个全局变量与局部变量同名)导致“UnboundLocalError:localvariable'foobar'referencedbeforeassignment'在函数中使用局部变量并且同时存在同名的全局变量时,使用规则是:如果函数中定义了任何东西,如果它只在函数中使用,它是局部的,否则就是全局变量。这意味着你不能在定义它之前将它作为函数中的全局变量。错误出现在以下代码中:someVar=42defmyFunction():print(someVar)someVar=100myFunction()15.尝试使用range()创建整数列表会导致“TypeError:'range'objectdoesnotsupportitemassignment”有时你想获得有序的整数列表,所以range()似乎是一个很好的方法生成此列表。但是,您需要记住range()返回一个“范围对象”,而不是实际的值列表。错误出现在以下代码中:spam=range(10)spam[4]=-1正确的写法:spam=list(range(10))spam[4]=-1(注意:spam=rangeinPython2(10)是可行的,因为range()在Python2中返回的是一个列表值,但是在Python3中会出现上面的错误16.没有++或--自增自减运算符。导致“SyntaxError:invalidsyntax”如果你习惯了C++、Java、PHP等其他语言,也许你会想尝试使用++或--来递增和递减一个变量。Python中没有这样的运算符。错误出现在下面的代码中:spam=1spam++正确的写法:spam=1spam+=117,方法的第一个参数忘记加上self参数导致“TypeError:myMethod()takesnoarguments(1given)”这个错误发生在以下代码中:classFoo():defmyMethod():print('Hello!')a=Foo()a.myMethod()如有错误或其他问题,欢迎留言指正.如果有帮助,请点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路